VPN 连接仅适用于特定服务或端口

VPN 连接仅适用于特定服务或端口

我租了一台虚拟机,我想使用里面的 VPN 服务来保护隐私,比如 Hidemyass & Co。

我通过 VNC 连接到虚拟机,但每次我在虚拟机中打开 VPN 时,VNC 连接都会失败。我使用 PPTP 作为 VPN。

有没有简单的方法可以将 VNC 从 VPN 中排除。有几台计算机将连接到 VM,因此排除单个 IP 也可以,但我更喜欢 VNC 或端口解决方案。

我是路由方面的新手,所以我需要一个完整的答案。

答案1

在以下脚本中,您可以添加路由到 VPN 的主机/路由。其余流量将流向默认网关

#!/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。

编辑1

在功能 routeadd 中你可以更改

function routeadd {
        route add -host xxx.xxx.xxx.xxx dev ppp0
        route add -net xxx.xxx.xxx.xxx/xx dev ppp0
    }

function routeadd {
        route add -host ip_address_for_vnc dev eth0
        route add default dev ppp0
    }

这会将 vnc 流量路由到特定 ip 地址 eth0 int,并将所有其他流量路由到 ppp0 int。尝试一下。

相关内容