我已经与外部服务器建立了 OpenVPN 连接。
tun0 是用于此连接的接口:
user@mypc:~$ ifconfig tun0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.6 P-t-P:10.8.0.5 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
在服务器端,相应的 tun0 接口的 IP 地址为 10.8.0.1。如果我从一个 ping 到另一个,数据包已成功传送。
我的路由表如下所示:
user@mypc:~$ ip r s
default via 192.168.1.1 dev wlan0 proto static
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
169.254.0.0/16 dev wlan0 scope link metric 1000
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.4 metric 2
我的目的是通过 VPN 连接到互联网。所有流量必须先从 VPN 服务器通过,然后再到“外部世界”。
我的问题是:如何让整个外部流量仅从 tun0 接口通过?我必须更改默认网关吗?还是其他什么?
谢谢。
答案1
为了能够通过您的 VPN 隧道路由所有互联网绑定流量,您需要更改默认路由以通过该 VPN 接口,在您的情况下为“10.8.0.5 dev tun0”。
为此,你需要输入如下命令
ip route add default via 10.8.0.5
两个默认路由可能存在一些奇怪之处,而且我不确定除了每次想要再次设置 VPN 连接时简单地删除并重新添加之外,还有没有干净的方法来管理默认路由 - 根据您的客户端,可能有针对此的设置或您可以将这些命令放入的脚本。