OpenVPN Access Server无法通过本地IP访问客户端问题求助
OpenVPN服务端无法通过客户端本地IP反向访问的解决方案
核心根因
你判断的方向是对的,问题本质是两个层面的配置缺失:
- 客户端默认路由规则下,从VPN隧道(tun0接口)收到的、目标为本地LTE接口IP的请求,回包会默认走LTE公网接口,不会返回到VPN隧道
- Ubuntu系统默认开启严格模式的反向路径过滤(rp_filter),会直接丢弃上述路由不匹配的入站数据包
分步操作(所有操作均在Ubuntu客户端执行)
1. 调整反向路径过滤规则
先做临时配置验证效果,不影响系统原有配置:
# 先查询自己的LTE接口名,一般为wwan0,可通过ip a命令确认,以下统一替换为实际接口名 sysctl -w net.ipv4.conf.all.rp_filter=2 sysctl -w net.ipv4.conf.tun0.rp_filter=2 sysctl -w net.ipv4.conf.<LTE接口名,如wwan0>.rp_filter=2
临时验证没问题后,修改/etc/sysctl.conf文件,在末尾添加以下三行实现永久生效:
net.ipv4.conf.all.rp_filter=2 net.ipv4.conf.tun0.rp_filter=2 net.ipv4.conf.<LTE接口名>.rp_filter=2
执行sysctl -p使永久配置生效。
2. 配置策略路由保证回包走VPN隧道
首先确认两个网段信息:
- OpenVPN服务端分配的VPN网段,可通过
tun0接口地址判断,默认一般为10.8.0.0/24 - 客户端LTE接口的本地网段,即你提到的
X.X.Y.0/24
执行以下命令配置:
# 新增自定义路由表,仅需执行一次 echo "100 vpn_back" >> /etc/iproute2/rt_tables # 配置VPN网段的流量走tun0接口 ip route add <VPN网段,如10.8.0.0/24> dev tun0 table vpn_back # 配置策略:目标地址为VPN网段、源地址为客户端本地LTE网段的流量,走上述自定义路由表 ip rule add to <VPN网段> from <X.X.Y.0/24> table vpn_back
临时验证生效后,可将后两条ip命令添加到OpenVPN客户端的up脚本中,避免VPN重启或系统重启后配置丢失。
3. 防火墙规则验证
如果客户端开启了ufw等防火墙,需要允许VPN网段的入站访问:
ufw allow in on tun0 from <VPN网段>
效果验证
所有配置完成后,在OpenVPN服务端直接ping客户端的本地LTE接口IP,可正常通信即为配置成功。
内容的提问来源于stack exchange,提问作者TjM
相关产品推荐
相关产品推荐

