You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenVPN客户端访问同VPS托管Web服务显示原IP 如何配置VPN专属路由

答案

可以实现,你遇到的问题核心原因是VPN客户端访问VPS公网IP的Web服务时,流量默认走公网路由回路,没有经过OpenVPN的虚拟网卡链路回包,导致Web服务识别到的是客户端原始公网IP。

配置步骤
  • 首先确认你的OpenVPN配置参数:虚拟网卡名(默认通常为tun0)、VPN内网网段(默认通常为10.8.0.0/24)、虚拟网卡网关IP(默认通常为10.8.0.1),后续步骤中替换为你自己的实际值即可。
  • 配置流量标记与策略路由,让VPN客户端访问VPS本地的流量走虚拟网卡链路:
    1. 给从虚拟网卡入站、目标为VPS公网IP的流量打标记
      iptables -t mangle -A PREROUTING -i tun0 -d <你的VPS公网IP> -j MARK --set-mark 0x1
    2. 新增专用路由表
      echo "200 vpnlocal" >> /etc/iproute2/rt_tables
    3. 配置专用路由表的默认路由走OpenVPN虚拟网卡
      ip route add default via 10.8.0.1 dev tun0 table vpnlocal
    4. 添加规则让打了标记的流量走专用路由表
      ip rule add fwmark 0x1 table vpnlocal priority 100
  • 配置Web服务的访问控制规则,仅允许VPN内网网段访问专属路由。以Nginx为例,配置参考:
    location /vpn-only-path/ {
        allow 10.8.0.0/24;
        deny all;
    }
    
  • 测试验证:连接VPN后访问Web服务的专属路由,查看Web服务访问日志,此时记录的访问IP应为客户端的VPN内网IP,而非原始公网IP。
注意事项
  • 上述iptables和路由规则需要配置开机自启,避免VPS重启后配置失效
  • 不要在iptables的nat表中配置针对tun0入站访问本地流量的MASQUERADE(地址伪装)规则,否则会导致Web服务识别到的是虚拟网卡网关IP而非客户端的VPN内网IP
  • 如果你的OpenVPN使用tap模式,将配置中的tun0替换为对应的tap网卡名即可

内容的提问来源于stack exchange,提问作者user16713982

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:45:03