我在 Linux 上使用 openvpn 时遇到问题。我在 Windows 虚拟机上测试过,运行正常。使用 Linux 连接时,我仍然可以 ping 通 IP 地址(如“8.8.8.8”),但无法访问网站。显示以下服务器日志:
Fri Jul 8 10:48:41 2016 us=369113 client1/84.14.214.213:27118 TUN WRITE [51]
Fri Jul 8 10:48:41 2016 us=466396 client1/84.14.214.213:27118 UDPv4 READ [77] from [AF_INET]84.14.214.213:27118: P_DATA_V1 kid=0 DATA len=76
Fri Jul 8 10:48:41 2016 us=466751 client1/84.14.214.213:27118 MULTI: bad source address from client [192.168.19.82], packet dropped
我在 Linux 和 Windows 上使用完全相同的配置,所以我猜测它来自 Linux 上的外部配置。
IP“192.168.19.82”应该是我的 eth0 上的 Linux IP 地址。
以下是我连接到 VPN 后的客户端路由:
root /home/user # ip r
0.0.0.0/1 via 10.8.0.5 dev tun0
default via 192.168.19.254 dev eth0
10.8.0.1 via 10.8.0.5 dev tun0
10.8.0.5 dev tun0 proto kernel scope link src 10.8.0.6
128.0.0.0/1 via 10.8.0.5 dev tun0
my_vpn_server_ip via 192.168.19.254 dev eth0
答案1
如果您使用分割隧道,请添加内部子网的静态路由。如果您使用 VPN 服务器作为网关,并且 VPN 服务器将帮助将数据包转发到互联网,请删除以下路由条目并添加指向隧道 IP 的默认路由条目:
默认通过 192.168.19.254 dev eth0
另外,请使用 nslookup 检查 DNS 是否正常工作。
希望这可以帮助。