检查VPN连接状态
- 确认连接成功:查看VPN客户端是否显示已连接(如OpenVPN的日志、WireGuard的
wg show)。 - 获取分配的IP:连接后查看本地分配的VPN IP(
ifconfig或ipconfig)。
验证目标地址
- ping VPN服务器内网IP:
ping 10.8.0.1 # 替换为VPN服务器的内网IP
- 通:说明VPN链路正常,问题可能在路由或目标主机。
- 不通:继续排查。
检查防火墙规则
- 本地防火墙:临时关闭测试(谨慎操作):
- Linux:
sudo ufw disable(Ubuntu)或sudo systemctl stop firewalld(CentOS)。 - Windows:在“Windows Defender 防火墙”中关闭。
- macOS:
sudo pfctl -d。
- Linux:
- 服务器防火墙:确保允许ICMP(ping)和VPN端口(如UDP 1194):
sudo iptables -L # 查看规则 sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
路由表检查
- 查看路由:VPN连接后应添加路由条目。
route -n # Linux netstat -rn # macOS/Windows
- 确保目标网络(如
8.0.0/24)通过VPN接口(如tun0)路由。
- 确保目标网络(如
- 手动添加路由(如需):
sudo ip route add 10.8.0.0/24 dev tun0
VPN服务器配置
- 允许客户端互通(如OpenVPN):
client-to-client # OpenVPN服务端配置
- 推送路由:确保服务器推送了正确的内网路由:
push "route 192.168.1.0 255.255.255.0"
协议与MTU问题
- 切换协议:尝试TCP模式(如OpenVPN配置
proto tcp),UDP可能被拦截。 - 调整MTU:
ping -s 1472 10.8.0.1 # 测试不同包大小(1472 + 28头 = 1500MTU)
若大包失败,在VPN配置中降低MTU:
tun-mtu 1400 # OpenVPN
服务端ICMP设置
- 禁用响应:检查服务器是否禁用了ping响应:
echo 1 | sudo tee /proc/sys/net/ipv4/icmp_echo_ignore_all # 0为启用
日志分析
- VPN日志:
journalctl -u openvpn # Linux系统日志
查找错误如
TLS handshake failed或ROUTE: route addition failed。
其他可能性
- NAT问题:若服务器在NAT后,确保端口转发正确。
- 多VPN冲突:卸载其他VPN软件(如旧版OpenVPN残留服务)。
- DNS解析:尝试直接ping IP而非域名,排除DNS问题。
总结步骤
- 基础检查:确认VPN连接和IP分配。
- 防火墙:关闭本地/服务器防火墙测试。
- 路由:验证路由表是否包含VPN网络。
- 服务器配置:检查
client-to-client和路由推送。 - 深入排查:分析日志、调整MTU/协议。
通过逐步排除,通常可定位到具体原因,如问题仍存,提供VPN类型(如WireGuard/IPSec)和错误日志可进一步分析。



