在 split-VPN 12.04 中选择性路由流量

在 split-VPN 12.04 中选择性路由流量

我经常远程工作。我使用网络管理器设置我的 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。

相关内容