【发布时间】:2014-10-16 06:29:11
【问题描述】:
我的本地机器上有两个连接,一个是通过 eth0(具有静态 IP,假设为 10.10.10.10),另一个是通过 ppp0(具有动态 IP,例如 10.20.30.40)。两者都可以访问互联网。我还有一个远程服务器(假设它的 IP 为 1.2.3.4),我想从本地计算机连接到该服务器,源地址为 10.10.10.10(eth0)的数据包应通过 eth0,而源地址为 10.20 的数据包应通过 eth0 .30.40 (ppp0) 作为源地址应该经过ppp0。
为了防止数据包被这条规则处理,我初步删除了主路由表的ip规则。
之后,我创建了两个路由表,一个用于 eth0(命名为 ETH),另一个用于 ppp0(命名为 PPP)。然后我将路由添加到这些表中,如下所示:
ip route add default dev ppp0 table PPP
ip route add default dev eth0 table ETH
然后我添加ip规则如下:
ip rule add from 10.10.10.10 lookup ETH
ip rule add from 10.20.30.40 lookup PPP
而且它不起作用。但是,当我使用 ip rule add from all 而不是指向特定 IP 时,它可以工作(当然,在这种情况下,数据包只通过一个接口)。因此,当我指定 IP 时,似乎没有调用 ip 规则。
这种奇怪行为的原因是什么?
有人有想法吗?
【问题讨论】:
标签: networking iptables