OpenConnect Server无法访问本地局域网问题求助
OpenConnect Server无法访问本地局域网问题求助
老哥,看你描述的情况,应该是OpenConnect客户端连上后没法访问VPS所在局域网的其他设备对吧?结合你的双网卡VPS场景,大概率是路由转发、NAT规则或者OpenConnect的路由推送没配置到位,我给你一步步捋排查和解决方法:
第一步:先确认VPS的IP转发功能已开启
跨网卡转发流量的前提是VPS允许IP转发,这步很容易被忽略:
- 临时开启(重启后失效):执行
echo 1 > /proc/sys/net/ipv4/ip_forward - 永久生效:编辑
/etc/sysctl.conf,把net.ipv4.ip_forward = 0改成net.ipv4.ip_forward = 1,然后执行sysctl -p让配置立即生效
第二步:检查OpenConnect的路由推送配置
你得确保OpenConnect服务器给客户端推送了局域网10.10.10.0/24的路由,不然客户端根本不知道要把这个网段的流量发往VPS:
- 找到你的OpenConnect配置文件(不同发行版位置可能不同,常见的是
/etc/ocserv/ocserv.conf或者/etc/vpnc/vpnc.conf) - 添加或确认存在这条配置:
push route 10.10.10.0 255.255.255.0 - 重启OpenConnect服务生效,比如执行
systemctl restart ocserv
第三步:配置NAT规则让局域网流量能正常回程
当客户端的流量到达VPS的eth1网卡后,需要做SNAT(源地址转换),把客户端的VPN地址转换成eth1的10.10.10.2,这样局域网设备才能把响应正确发回VPS:
- 执行这条iptables命令(记得替换
<VPN客户端网段>为你OpenConnect分配给客户端的网段,比如192.168.10.0/24):iptables -t nat -A POSTROUTING -s <VPN客户端网段> -o eth1 -j SNAT --to-source 10.10.10.2 - 如果想永久保存iptables规则,Debian/Ubuntu可以用
iptables-save > /etc/iptables/rules.v4,CentOS/RHEL可以执行service iptables save
第四步:检查局域网设备的回程路由
如果前面几步都做了还是不通,可能是局域网里的其他设备不知道把VPN网段的流量发回VPS的eth1网卡:
- 如果你有局域网网关,登录网关设备添加一条静态路由:
192.168.10.0/24 via 10.10.10.2(同样替换成你的VPN客户端网段) - 如果没有网关,那需要在每个局域网设备上手动添加这条路由,或者把VPS设为局域网的网关(前者更灵活)
额外排查小Tips
- 先测试VPS本身能不能ping通局域网设备,如果VPS自己都ping不通,那先解决VPS和局域网的基础连通问题
- 检查VPS的防火墙(比如ufw、firewalld)有没有阻挡VPN客户端和10.10.10.0/24网段之间的通信,确保相关流量被允许
备注:内容来源于stack exchange,提问作者Mohammad Mohsen Ahmadi
相关产品推荐
相关产品推荐

