Linux中的VPN路由问题 - 如何使只能绑定到IP地址的应用程序工作?


3

现在我在我的远程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>

您为该配置使用了哪些命令?我正在寻找一个解决方案,但找不到任何有效的方法。
mirza 2013年

Answers:


1

你的推理是不正确的。绑定到IP地址只选择源IP地址。它对到达目的地的路线没有影响,这是您想要控制的路线。

要执行您想要执行的操作,您需要设置一种称为基于源的路由的策略路由形式。这通常通过创建两个路由表来完成,每个连接一个路由表,并根据本地源IP地址决定要使用的路由表。看到任何许多的HOWTO S于策略路由


我试过这个,我遇到以下问题#echo 200 vpns >> / etc / iproute2 / rt_tables #ip rule add from 192.168.10.244 table vpns #ip route add default via 192.168.9.1 dev ppp0 table vpns RTNETLINK answers:没有这样的过程
thatfunkymunki

嗯,试图让它看起来正确,但基本上当我执行命令“ip route add default via 192.168.9.1 dev ppp0 table vpns”时,我得到“RNETLINK答案:没有这样的过程”。这是不正确的命令吗?
thatfunkymunki

你的意思是“表200”,对吧?路由表已编号。
David Schwartz

结果仍然相同。RNETLINK回答:没有这样的过程。
thatfunkymunki

也许您的VPS不支持策略路由。
David Schwartz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.