现在我在我的远程ubuntu VPS上设置了PPTP VPN。我想让某些应用程序使用VPN访问互联网(rtorrent,irssi等)。目前,它设置如下:
eth0链接封装:以太网HWaddr 00:16:3e:94:38:ce inet addr:66.xxx.xxx.xxx Bcast:66.xxx.xxx.xxx掩码:255.255.255.0
eth1链接封装:以太网HWaddr 00:16:3e:d7:58:a1 inet addr:10.2.0.111 Bcast:10.255.255.255掩码:255.0.0.0
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0
ppp0链接封装:点对点协议inet addr:192.168.10.244 PtP:192.168.9.1掩码:255.255.255.255
从本质上讲,我看到这个问题的方式就是这样。
我跑的时候
curl --interface eth0 checkip.dyndns.com
我明白了
<html><head><title>Current IP Check</title></head><body>Current IP Address: 66.xxx.xxx.xxx</body></html>
当我跑
curl --interface ppp0 checkip.dyndns.com
我明白了
<html><head><title>Current IP Check</title></head><body>Current IP Address: 95.xxx.xxx.xxx</body></html>
哪个是对的。
但是,当我跑
curl --interface 192.168.10.244 checkip.dyndns.com
它超时,我一无所获。这似乎没有任何意义,因为192.168.10.244是ppp0的IP地址,在我看来它不应该与上面的命令有任何不同。我错过了什么吗?如果我可以让它在卷曲中工作,我将能够让它在rtorrent和irssi中工作,我想也是如此,卷曲更容易测试这种事情。解决这个问题有什么好的起点吗?
编辑:修复它!我就是这样做的。
首先,我创建了一个新的路由表:
# echo "200 vpn" >> /etc/iproute2/rt_tables
然后,我为源自我的ppp0 IP地址的请求创建了一条规则,以便从该新表中进行查找
# ip rule add from 192.168.10.244 table 200
然后,我在该表中创建了一个使用ppp0的规则。
# ip route add default dev ppp0 table 200
它完美无缺!现在,当我尝试以前失败的curl命令:
# curl --interface 192.168.10.244 checkip.dyndns.com
<html><head><title>Current IP Check</title></head><body>Current IP Address: 95.xxx.xxx.xxx</body></html>