![Openvpn客户端可以ping通服务器,但不能ping通www.google.com](https://linux22.com/image/594012/Openvpn%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%8F%AF%E4%BB%A5ping%E9%80%9A%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E4%BD%86%E4%B8%8D%E8%83%BDping%E9%80%9Awww.google.com.png)
我在 Ubuntu VPS 上设置了 Openvpn,如下所示这。
这是我的客户route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 122.84.124.1 0.0.0.0 UG 0 0 0 ppp0
10.8.0.1 10.8.0.5 255.255.255.255 UGH 0 0 0 tun0
10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
122.84.124.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
128.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 ppp0
183.181.60.117 122.84.124.1 255.255.255.255 UGH 0 0 0 ppp0
在客户端上,我可以ping 10.8.0.1
,但除此之外,我似乎无法访问互联网。我试过了mtr 8.8.8.8
,我得到了
Host Lost% ...
1. 10.8.0.1 0.0% ...
2. ???
在服务器上时,mtr 8.8.8.8
显示路径。
有什么建议可以解决吗?谢谢!
答案1
您应该在服务器上正确设置 NAT 和路由。
如果mtr
服务器工作正常,但客户端工作不正常,则应在服务器上添加如下规则:
# iptables -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source <public IP of server>
另外,请确保服务器上启用了路由:
# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0 <<< disabled
# sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1 <<< enabled
或者如果您想在启动时启用它,请更改net.ipv4.ip_forward
为 1/etc/sysctl.conf
并运行sysctl -p
。
答案2
万一它有用,尽管我看到其他答案已经被接受了......
@petrus 的回答假设你想要所有互联网流量都通过 OpenVPN 网络。如果这是你想要的,那就这样做吧。
但是,通常只需要 OpenVPN 来访问该网络中的资源(例如文件服务器/内部网),并使用普通互联网连接进行一般互联网访问。在这种情况下,您可以通过告诉客户端机器不要通过 OpenVPN 路由所有流量来加快速度。如何执行此操作取决于您的客户端软件和操作系统,但我想提供它,因为我注意到这种情况发生在我的 OpenVPN 客户端上并导致不必要的减速。