我租了一台虚拟机,我想使用里面的 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。尝试一下。