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

如何排查OpenVPN流量阻塞及推送路由失效问题

排查OpenVPN推送路由失效及流量阻塞问题

我来帮你一步步拆解这个问题,结合你的网络环境,咱们从基础到深入梳理排查点:

一、先夯实基础:验证连通性与路由配置

先把最基础的环节确认清楚,很多时候问题就出在这些容易忽略的地方:

  • 检查VPS的路由表:在VPS上跑ip route show,看看有没有10.8.0.0/24的路由条目,而且得是指向OpenVPN隧道接口(比如tun0)的。正常应该能看到类似10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.X的记录。如果没有,要么是OpenVPN的路由推送没生效,要么是客户端没正确接收。
  • 确认Server1的IP转发与路由:先查IP转发是否真的开了——执行sysctl net.ipv4.ip_forward,返回值必须是1。如果不是,临时生效用sysctl -w net.ipv4.ip_forward=1,永久生效要改/etc/sysctl.conf里的对应项。然后看Server1的路由表,确认有VPS的10.8.0.X路由指向tun0,以及10.0.0.0/24指向本地网卡(比如eth0)。
  • 测试隧道内的基础连通:别先急着ping 10.8.0.1,先试试ping VPS自己的隧道IP(10.8.0.X)。如果连自己都ping不通,说明隧道本身没建立好;如果能通,再ping Server1的隧道IP,同时在Server1上抓tun0的包:tcpdump -i tun0 icmp,看看有没有收到VPS的ping请求。如果收到了但没回复,大概率是Server1的防火墙拦了ICMP;如果根本没收到包,那问题出在隧道传输、VPS路由或者VPS的防火墙。

二、重点排查防火墙(最常见的阻塞元凶)

Linux的防火墙规则很容易成为“隐形杀手”,分两端检查:

  • VPS端防火墙:用iptables -L -n -v(如果是nftables就用nft list ruleset)看看规则,必须允许tun0接口的出入站流量。如果有默认拒绝的规则,赶紧加两条:
    iptables -A INPUT -i tun0 -j ACCEPT
    iptables -A OUTPUT -o tun0 -j ACCEPT
    
  • Server1端防火墙:除了允许tun0的流量,要是你需要VPS访问本地局域网,还得配置SNAT规则让流量能正确返回:
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 10.0.0.0/24 -o eth0 -j MASQUERADE
    
    另外要检查FORWARD链,确保允许tun0到eth0的转发流量——跑iptables -L FORWARD -n -v,得有对应的ACCEPT规则。
  • 局域网侧防火墙(暂时次要):现在你连ping 10.8.0.1都不行,先别管Server2或者其他局域网设备,等解决了隧道连通性再排查这个。

三、深挖tcpdump抓包数据

既然已经抓了包,就盯着这几个关键点分析:

  • VPS端抓包:同时抓tun0和公网接口(比如eth0)的包。如果ping 10.8.0.1时,tun0有发出ICMP请求,但eth0上看不到对应的OpenVPN加密包(默认是UDP 1194端口),说明VPS的路由没把流量导去隧道,或者OpenVPN客户端没处理好。如果eth0有发出加密包但没收到回复,那问题可能在公网链路或者Server1的公网防火墙。
  • Server1端抓包:在公网接口抓UDP 1194的包,看看有没有收到VPS发的加密包。如果收到了,但tun0上没对应的ICMP请求,说明OpenVPN服务器没正确解密转发到隧道;如果tun0有ICMP请求但没回复,就是Server1的防火墙或者系统设置拦了回复。

四、检查OpenVPN配置的细节

有时候路由推送失效就是配置漏了点东西:

  • Server端配置:打开server.conf,确认有push "route 10.0.0.0 255.255.255.0"(把本地局域网路由推给客户端),如果需要客户端之间通信,还要加client-to-client。另外dev tun(隧道模式)、proto udp/tcp这些要和客户端配置一致。
  • VPS客户端配置:确认有pull选项(接收服务器推送的路由),如果手动写了路由,会不会和推送的冲突?可以先注释掉手动路由,只靠服务器推送试试。

五、其他可能的小众问题

  • MTU不匹配:如果MTU值太大,数据包分片失败也会导致不通。可以在Server和Client配置里加mtu-test,或者手动设mtu 1400再测试。
  • DNS问题:现在你ping的是IP,所以DNS暂时不影响,但后续如果访问局域网域名有问题,再检查Server2的DNS是否允许10.8.0.0/24网段的查询请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:38:02