检查VPN连接状态
-
确认连接成功:在系统托盘或VPN客户端中查看是否显示“已连接”。
- Windows:
Get-VpnConnection(PowerShell) - Linux:
ip a或ifconfig查看VPN接口(如tun0)。 - macOS:
ifconfig | grep tun。
- Windows:
-
日志检查:
- 客户端日志(如OpenVPN的
log文件)。 - 系统日志(Windows事件查看器、Linux的
journalctl -u openvpn)。
- 客户端日志(如OpenVPN的
验证IP和路由配置
-
获取VPN分配的IP:
ipconfig /all(Windows)ifconfig或ip addr(Linux/macOS)- 确认VPN接口有IP地址(如
8.0.2)。
-
检查路由表:
route print(Windows)ip route或netstat -rn(Linux/macOS)- 确保目标流量通过VPN:
- 若VPN应路由所有流量,检查默认路由(如
0.0.0/1指向VPN网关)。 - 若为分流(Split Tunnel),确认目标网络的路由存在(如公司内网
168.1.0/24指向VPN接口)。
- 若VPN应路由所有流量,检查默认路由(如
-
手动添加路由(如缺失):
# Linux/macOS示例 sudo ip route add 192.168.1.0/24 dev tun0 # Windows示例 route add 192.168.1.0 mask 255.255.255.0 <VPN网关IP>
防火墙/安全软件拦截
-
临时禁用防火墙测试:
- Windows:
netsh advfirewall set allprofiles state off - Linux:
sudo ufw disable(UFW)或sudo systemctl stop firewalld(Firewalld)。 - macOS:
sudo pfctl -d。
- Windows:
-
添加允许规则(若需保持防火墙开启):
# 允许VPN接口流量(Linux示例) sudo ufw allow out on tun0
DNS问题
-
检查DNS配置:
- VPN连接后,DNS可能被覆盖,尝试手动设置DNS:
- Windows:
netsh interface ip set dns name="VPN连接" static 8.8.8.8 - Linux:修改
/etc/resolv.conf(注意VPN可能覆盖它)。
- Windows:
- VPN连接后,DNS可能被覆盖,尝试手动设置DNS:
-
测试域名解析:
nslookup example.com # 或 dig example.com
若失败,尝试直接访问IP地址(如
ping 8.8.8.8)。
服务器端问题
- 联系VPN管理员确认:
- 服务器是否允许你的IP连接。
- 服务器路由和防火墙规则是否正确(如
iptables规则是否放行流量)。 - 服务器是否配置了正确的子网和网关。
协议/端口限制
- 检查协议和端口:
- 确保客户端与服务器协议一致(如OpenVPN UDP 1194 vs. TCP 443)。
- 测试更换端口(如从UDP切换到TCP,避免ISP拦截)。
MTU问题(分片丢弃)
- 调整MTU值:
# Linux示例 sudo ifconfig tun0 mtu 1400 # OpenVPN客户端配置添加: tun-mtu 1400
高级排查工具
-
抓包分析:
# Linux(tun0为VPN接口) sudo tcpdump -i tun0 -n # Windows:Wireshark过滤VPN接口流量。
观察是否有数据包进出。
-
跟踪路由:
traceroute 8.8.8.8 # 或 tracert(Windows)
确认路径是否经过VPN。
常见场景示例
- 企业VPN分流(Split Tunnel):只有内网流量走VPN,需检查目标路由。
- 公共VPN无流量:服务器可能过载或配置错误,尝试切换服务器。
- 移动网络限制:某些运营商屏蔽VPN,尝试切换网络(如Wi-Fi)。
通过以上步骤,应能定位到具体原因,若仍无法解决,提供以下信息可进一步帮助诊断:
- 客户端/服务器使用的VPN软件(如OpenVPN、IPSec)。
- 操作系统版本。
- 从日志中提取的错误片段(如
TLS handshake failed)。
