为什么在Linux上安装VPN连接后添加了特定的路由规则?

build立VPN连接后,默认添加以下路由规则:

vpn_server_ip previous_default_gateway 

这个规则对我来说似乎没用。 为什么添加?

注意:

  1. VPN连接不是用于连接到Internet的连接。
  2. vpn_server_ip不属于虚拟networking。

例:

在例子中,我将使用'$ route -n'表示法。 在build立VPN连接之前,我有

 0.0.0.0 192.168.0.1 

之后的路由表如下所示:

 193.196.65.76 192.168.0.1 0.0.0.0 192.168.0.1 147.38.45.1 0.0.0.0 iface ppp0 

所以我可以理解为什么

 147.38.45.1 0.0.0.0 iface ppp0 

被添加。 147.38.45.1 VPN中服务器的IP。 但我不明白为什么

 193.196.65.76 192.168.0.1 

被添加,193.196.65.76是dialin服务器的IP。 也许这只是拨号服务器的IP在VPNnetworking的情况下的预防?!

在解释这个时,接口名称是重要的。 我会创build一个例子并在这里解释。

这是连接到VPN之前的路由表。 我们在10.0.2.0/24networking中有我们的主接口,IP地址为10.0.2.15,默认路由 – > 10.0.2.2。 一切都发生在eth1上。

 k@workstation:~$ ip r 10.0.2.0/24 dev eth1 proto kernel scope link src 10.0.2.15 metric 1 default via 10.0.2.2 dev eth1 proto static 

这是连接到VPN后的路由表。 join的第一个条目就是你的问题。 通过我们以前的主要网关的VPN端点,通过eth1。 它还为我刚刚获得的新IP地址添加本地networking。 然后它将默认网关更改为通过VPN。

 k@workstation:~$ ip r 123.123.123.123 via 10.0.2.2 dev eth1 proto static 10.8.0.21 dev tun0 proto kernel scope link src 10.8.0.22 10.8.0.1 via 10.8.0.21 dev tun0 proto static 10.0.2.0/24 dev eth1 proto kernel scope link src 10.0.2.15 metric 1 default via 10.8.0.21 dev tun0 proto static 

该路由可确保到VPN端点的stream量通过物理networking接口stream动,并且不会尝试通过VPN路由它,因为这是不可能的,因为stream量是通过物理networking传输的。

即使主网关没有改变 – VPN软件通常会这样做,以防万一VPN端点位于与新IP地址相同的子网中。 这也是为什么你不能在同一个IP地址上与VPN端点通话,并且在连接build立后期待“本地连接”的原因。

(这个例子是使用OpenVPN制作的)