我经常远程工作。我使用网络管理器设置我的 VPN 连接,效果很好。我设置的 VPN 目前使用带证书的密码 (TLS) 类型。我想要做的是仅通过 VPN 路由某些流量,而通过正常的本地互联网连接路由所有其他流量。
这可能吗?
为了帮助解释我的情况,我将举例说明我通常必须与 VPN 网络建立的连接类型。我们的工作网络上设置了一个“内部网”网站,因此我只有在使用 VPN 时才能访问该网站,但访问方式与访问其他网站(如 Google 或 askubuntu.com)相同。我经常通过远程桌面通过 VPN 连接连接到台式计算机,在其中输入台式计算机的名称(IP 地址)、用户名和密码。我使用 MySQL Workbench 连接到 MySQL 服务器,在其中输入 IP 地址、用户名和密码。我经常使用 SSH 连接到 Linux 服务器。
对于上述所有连接,我都需要 VPN。但是,我也会进行一些常规的网页浏览,以及连接到工作网络之外的资源(Gmail、Stack Overflow、游戏等)。对于这些连接,我不希望通过 VPN 连接访问,因为这些连接不需要我的 VPN,VPN 只会让速度变慢很多。
我已尝试过此链接中描述的技术:http://darrenwatt.com/split-tunnel-ubuntu/
这似乎对我不起作用。具体来说,在选中“仅将此连接用于其网络上的资源”复选框并连接 VPN 后,我无法连接到“内部网”站点。
有人知道我如何通过 VPN 选择性地路由流量吗?这有意义吗?
谢谢!!
答案1
我不知道这在 NM 中是如何工作的,但我写了脚本
#!/bin/bash
function routeadd {
route add -host xxx.xxx.xxx.xxx dev ppp0
route add -net xxx.xxx.xxx.xxx/xx dev ppp0
}
function makepptp {
echo pty \"pptp xxx.xxx.xxx.xxx --nolaunchpppd\" >> /etc/ppp/peers/vpn;
echo remotename PPTP >> /etc/ppp/peers/vpn;
echo require-mppe-128 >> /etc/ppp/peers/vpn;
echo file /etc/ppp/options.pptp >> /etc/ppp/peers/vpn;
echo ipparam vpn >> /etc/ppp/peers/vpn;
pppd call vpn &
}
if [ -a /etc/ppp/chap-secrets ];
then
rm /etc/ppp/chap-secrets
echo $1 PPTP $2 '*' >> /etc/ppp/chap-secrets;
else
echo $1 PPTP $2 '*' >> /etc/ppp/chap-secrets;
fi
if [ -e /etc/ppp/peers/vpn ];
then
rm /etc/ppp/peers/vpn;
echo name $1 >> /etc/ppp/peers/vpn;
makepptp;
sleep 8;
routeadd;
else
echo name $1 >> /etc/ppp/peers/vpn;
makepptp;
sleep 8;
routeadd;
fi
用法:
sudo /path_to_script/vpn username password
注意:设置脚本的执行权限
仅当您添加路由时,流量才会通过 vpn 路由,其他任何路由均采用默认 gw。