在 Ubuntu 16.04 中,我使用了以下命令,以便网络管理器世界在添加 VPN 连接时提供 L2TP 作为选项:
sudo add-apt-repository ppa:nm-l2tp/network-manager-l2tp; sudo apt update ; sudo apt-get install -y network-manager-l2tp network-manager-l2tp-gnome strongswan
以上是特意将多条命令组合成一行,这样就可以在终端上实现一行设置。
添加 L2TP VPN 并成功连接后,我能够通过 Meraki 防火墙访问远程网络上所需的一切。
但是,如果我在本地计算机上观看 4K YouTube 视频(或任何其他带宽密集型互联网活动),我注意到我没有直接从本地互联网连接获取该视频;相反,它实际上是通过 VPN 隧道下载的!这是不希望的,因为远程网络几乎没有足够的上传带宽来覆盖那里使用的所有 VOIP 电话。因此,我需要 VPN 客户端仅将 VPN 连接用于实际位于该远程网络上的资源。
过去,当我使用 vpnc VPN 或 OpenVPN VPN 时,我可以选中此框以防止本地互联网活动消耗远程网络的带宽:
但是,如果我用 L2TP VPN 选中这个框,它确实只使用本地互联网资源,但我不能再访问远程 VPN 网络上的任何远程资源。例如,如果选中此框,我什至无法在 VPN 连接期间 ping 远程 LAN 的网关。
我怎么能两者:
- 访问远程 L2TP VPN 网络上的资源和
- 所有其他互联网活动是否仅消耗本地互联网资源?
Meraki 支持已将我引导至此文档。但是,期望我所有的非技术用户为他们可能连接到 VPN 的每个物理位置添加到他们的 Ubuntu 笔记本电脑的路由是不切实际的。我需要一个解决方案,我可以将客户端配置为自动执行拆分隧道,因此我可以为每次使用进行设置,而他们唯一需要做的就是连接。
连接到 VPN 会更改您的默认路由
如果您在连接到 VPN 之前查看您的路由表,然后您会注意到您不仅有额外的路由,而且您的默认路由也已更改。除非有“更好”的特定路线,否则您的流量会通过默认路线流出。
要查看您的路由表,您可以运行
ip route
. 您曾经能够运行route
,但大多数发行版不再具有该命令。对于每种 VPN 类型和每个 VPN 客户端,您只能使用不同的选项和可能性,但是当您使用 时
openconnect
,您可以控制它并防止您的默认路由发生变化。为了清楚起见,假设您的 VPN 网络是
192.2.2.0/24
. 当您连接到 VPN 时,您需要一条新路由来将该流量路由到网关。它可能看起来像192.2.2.0/24 via 192.2.2.1 on tun0
,但网关 IP 可能不同。通过拥有这条路线,任何流量都192.2.2.0 255.255.255.0
将转到您的路由器tun0
而192.2.2.1
不是eth0
/wlan0
到您的路由器。你只是不想192.2.2.1
成为你的默认路线。