为什么 NetworkManager 要向网关添加主机路由?

为什么 NetworkManager 要向网关添加主机路由?

我使用的是 Ubuntu 16.04.2 LTS,我发现当我使用 GUI(服务器是 openvpn)建立 VPN 连接时,除了到 VPN 子网的路由外,还会将主机路由添加到 VPN 网关。我选择了“忽略自动获取的路由”和“仅将此连接用于其网络上的资源”这两个选项。

以下是我的路由表首先看到的内容:

$ ip route show | grep -v linkdown
default via 192.168.1.1 dev wlp2s0  proto static  metric 600 
192.168.1.0/24 dev wlp2s0  proto kernel  scope link  src 192.168.1.184  metric 600 

现在我建立 VPN 连接,并得到以下信息:

$ ip route show | grep -v linkdown
default via 192.168.1.1 dev wlp2s0  proto static  metric 600 
10.8.0.0/24 dev tun0  proto kernel  scope link  src 10.8.0.4  metric 50 
52.90.159.97 via 192.168.1.1 dev wlp2s0  proto static  metric 600 
192.168.1.0/24 dev wlp2s0  proto kernel  scope link  src 192.168.1.184  metric 600 

对于我来说,新的路由是有意义的,因为那是 VPN 子网,但为什么我还会获得(VPN 网关)10.8.0.0/24的路由?52.90.159.97

到目前为止,这只是一个谜,但如果我现在启动一个通过第一个 VPN 建立隧道的第二个 VPN,我就会遇到一个真正的问题:

$ ip route show | grep -v linkdown
default via 192.168.1.1 dev wlp2s0  proto static  metric 600 
10.8.0.0/24 dev tun0  proto kernel  scope link  src 10.8.0.4  metric 50 
10.8.0.2 via 192.168.1.1 dev wlp2s0  proto static  metric 600 
10.9.0.0/24 dev tun1  proto kernel  scope link  src 10.9.0.2  metric 50 
52.90.159.97 via 192.168.1.1 dev wlp2s0  proto static  metric 600 
192.168.1.0/24 dev wlp2s0  proto kernel  scope link  src 192.168.1.184  metric 600 

第二个 VPN 网关是10.8.0.2,如您所见,新主机条目通过 进行路由wlp2s0,这是错误的(应该是tun0)。我必须手动删除此条目才能使连接可用。

也许我应该将其归档为错误,但我希望先在这里听取任何反馈。

答案1

经过几周的思考,我得出结论,这样做是为了防止通过 VPN 获取的任何路由与 VPN 网关本身匹配,从而创建一个循环,内核会尝试通过 VPN 路由到达 VPN 网关。最明显的情况是如果您通过 VPN 获取了默认路由。

因此,就我而言,我现在确信这是一个错误。逻辑是合理的,但必须更智能地应用。也许只有在检查过您将通过 VPN 路由网关流量后,才可以向 VPN 网关添加路由。

相关内容