为什么在 Linux 上设置 VPN 连接后会添加特定的路由规则?

为什么在 Linux 上设置 VPN 连接后会添加特定的路由规则?

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

vpn_server_ip previous_default_gateway

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

笔记:

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

例子:

在示例中,我将使用“$ route -n”符号。在设置 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 是拨入服务器的 IP。也许这只是针对拨入服务器 IP 在 VPN 网络中的情况的一种预防措施?!

答案1

在解释这一点时,接口名称很重要。我将创建一个示例并在此处进行解释。

这是连接到 VPN 之前的路由表。我们的主接口位于 10.0.2.0/24 网络中,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 后的路由表。添加的第一个条目正如您的问题;通过我们以前的主网关(通过 eth1)的 VPN 端点。它还为我刚刚获得的新 IP 地址添加了本地网络。然后它将默认网关更改为通过 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 端点的流量流经物理网络接口,并且不会尝试通过 VPN 进行路由 - 因为这是不可能的,因为该流量是通过物理网络进行隧道传输的。

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

(本示例使用 OpenVPN 制作)

相关内容