OpenVPN通过云中继服务器连接远程网络10.0.4.0/24失败求助
OpenVPN通过云中继服务器连接远程网络10.0.4.0/24失败求助
我完全理解你现在的困扰——明明配置了路由规则、CCD客户端配置文件,也能看到两端客户端都加上了对应路由,却还是没法跨网段访问对吧?咱们从最常见的问题点一步步排查:
1. 先确认云服务器的IP转发是否开启
这是最容易忽略的基础配置,Ubuntu云服务器默认可能关闭了IP转发功能,导致流量没法在TUN接口和公网接口之间转发。
- 执行命令检查当前状态:
sysctl net.ipv4.ip_forward - 如果输出是
net.ipv4.ip_forward = 0,说明没开启。编辑/etc/sysctl.conf文件,找到net.ipv4.ip_forward这一行,改成net.ipv4.ip_forward=1,然后执行sysctl -p让配置生效。
2. 云服务器的防火墙&云服务商安全组
光开1194 UDP端口不够,还要允许TUN接口和目标网段的流量转发:
- 如果你用UFW防火墙,需要添加这些规则:
# 允许TUN接口的双向流量 ufw allow in on tun0 from any to any ufw allow out on tun0 from any to any # 允许两个局域网网段通过云服务器转发 ufw allow in on eth0 from 192.168.150.0/24 to 10.0.4.0/24 ufw allow out on eth0 from 10.0.4.0/24 to 192.168.150.0/24 - 另外一定要检查云服务商的安全组规则(比如AWS、阿里云、DigitalOcean的安全组),确保没有拦截10.8.0.0/24、192.168.150.0/24、10.0.4.0/24这几个网段的双向流量。
3. 两端局域网的网关路由配置
你只在OpenVPN服务器和客户端加了路由,但两端局域网的网关设备也需要知道怎么把流量发往VPN客户端:
- 对于10.0.4.0/24远程网络:它的网关要添加一条路由规则,内容类似
192.168.150.0/24 via 10.8.0.2 dev <本地网卡>,告诉网段内的设备:去Windows客户端所在局域网的流量,要发给连接VPN的Windows2客户端(10.8.0.2)。 - 对于192.168.150.0/24局域网:它的网关要添加路由
10.0.4.0/24 via 10.8.0.4 dev <本地网卡>,让局域网内的设备知道去远程网段的流量要发给你的Windows VPN客户端(10.8.0.4)。 - 同时要检查两端客户端的本地防火墙:比如Windows客户端要允许VPN接口的入站流量,Windows2客户端也要放行来自10.8.0.0/24和192.168.150.0/24的流量。
4. OpenVPN配置的细节验证
- CCD目录权限:Ubuntu上的
ccd目录要确保nobody用户能读取,目录权限设为755,里面的客户端配置文件权限设为644,不然OpenVPN服务器可能加载不了iroute规则。 - 服务器端路由生效情况:执行
ip route show,查看是否存在这两条路由:
如果没有,说明CCD文件没生效,或者客户端连接时出现了问题,可以去服务器日志里找线索。10.0.4.0/24 via 10.8.0.2 dev tun0 192.168.150.0/24 via 10.8.0.4 dev tun0 - 客户端路由检查:Windows上打开命令提示符,执行
route print,确认是否有10.0.4.0/24指向VPN网关的路由;远程Windows2客户端也要检查192.168.150.0/24的路由是否正确添加。
5. 日志排查
把服务器端的verb级别调到5(修改server.conf里的verb 3为verb 5,重启OpenVPN服务),然后查看服务器日志,重点看:
- 客户端连接时是否成功加载了对应的CCD文件
- 路由添加过程中有没有报错信息
- 流量转发时有没有被拦截的记录
客户端也可以查看OpenVPN日志,Windows的日志通常在OpenVPN安装目录的log文件夹里,看看有没有路由添加失败、连接异常的提示。
备注:内容来源于stack exchange,提问作者Arkadiusz Rycyk
相关产品推荐
相关产品推荐

