You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

OpenVPN局域网设备无法访问客户端问题求助

OpenVPN局域网设备无法访问客户端问题求助

看起来你遇到的是OpenVPN里很常见的双向连通性问题——VPN客户端能访问服务器和内网设备,但反过来内网设备找不到VPN客户端对吧?我来帮你一步步排查和解决:

1. 给内网设备/路由器添加静态路由

内网设备不知道VPN客户端所在的10.8.0.0/24网段该怎么走,必须告诉它们:要去这个网段的流量,全部发给你的OpenVPN服务器(也就是服务器的内网IP,比如192.168.1.100这类)。

  • 如果是家用路由器:登录管理界面,找到「静态路由」配置项,添加一条规则:
    • 目标网段:10.8.0.0
    • 子网掩码:255.255.255.0
    • 网关:你的OpenVPN服务器内网IP
  • 如果是Linux系统的内网设备(或者服务器本身当网关),执行命令临时生效:
    ip route add 10.8.0.0/24 via 你的服务器内网IP
    
    想要永久生效的话,把这条命令加到/etc/rc.local或者对应的网络配置文件里。

2. 确认OpenVPN服务器的IP转发已开启

服务器必须允许数据包在网卡(比如内网网卡eth0和VPN虚拟网卡tun0)之间转发,这是核心前提:

  • 先检查当前状态:
    sysctl net.ipv4.ip_forward
    
    如果输出是net.ipv4.ip_forward = 0,说明没开启。
  • 临时开启(重启后失效):
    sysctl -w net.ipv4.ip_forward=1
    
  • 永久开启:编辑/etc/sysctl.conf,找到net.ipv4.ip_forward=1这一行,去掉前面的注释符号#,然后执行:
    sysctl -p
    

3. 检查Ubuntu的防火墙规则(UFW)

如果你的服务器用了UFW防火墙,需要配置允许VPN网段和内网网段的流量转发:

  • 首先修改UFW的默认转发策略:编辑/etc/default/ufw,把DEFAULT_FORWARD_POLICY改成"ACCEPT"
  • 添加必要的规则(替换192.168.1.0/24为你的真实内网网段):
    # 允许VPN客户端的流量进入服务器
    ufw allow in on tun0 from 10.8.0.0/24
    # 允许服务器把VPN客户端的流量转发到内网
    ufw allow out on eth0 to 192.168.1.0/24
    # 允许内网设备的流量发往VPN客户端网段
    ufw allow in on eth0 from 192.168.1.0/24 to 10.8.0.0/24
    
  • 重启UFW生效:
    ufw reload
    

4. 排查VPN客户端的防火墙

有时候问题出在客户端这边:比如Windows客户端的防火墙默认会阻止来自非本地网段的连接,你需要添加一条规则,允许你的内网网段(比如192.168.1.0/24)访问客户端的所有端口,或者特定需要的端口。

5. 测试与验证

做完上面的配置后,可以用以下方法验证:

  • 在一台内网设备上ping VPN客户端的IP(比如10.8.0.2),看是否能通
  • 在OpenVPN服务器上用tcpdump抓包,确认数据包是否到达:
    tcpdump -i eth0 host 内网设备IP and host VPN客户端IP
    
    如果能看到数据包,说明路由没问题,问题可能在转发或客户端防火墙;如果看不到数据包,那就是内网路由没配置对。

备注:内容来源于stack exchange,提问作者mochoandre

火山引擎 最新活动