通过特定网络接口的 ip

通过特定网络接口的 ip

我有两个网络接口,分别有 ip

 eth0 : 192.168.70.153
 eth2 : 192.168.70.155

当我做的时候

 route -C
 Kernel IP routing cache
 Source          Destination     Gateway         Flags Metric Ref    Use Iface
 192.168.70.155 192.168.70.152  192.168.70.152        0      0        0 eth0

我如何强制通过 eth2 建立到 192.168.70.152 的 telnet 连接?

答案1

您必须为主机 192.168.70.152 添加特定路由。

route add -host 192.168.70.152 dev eth2

这会将所有发往 192.168.70.152 的流量推送到 eth2。这样就足够了吗,还是您只需要路由 telnet?

答案2

你想要的是Linux 高级路由和流量控制 HOWTO. 具体来说,关于Netfilter 和 iproute - 标记数据包是开始做这类事情的好地方。

您需要设置默认路由以通过 eth0,然后/etc/iproute2/rt_tables添加一个条目,例如 200,表示“viaeth2”。然后您需要在该表中设置路由:

ip route add 192.168.70.0/24 dev eth2 src 192.168.70.155 table viaeth2
ip rule add fwmark 1 table viaeth2

然后您可以通过 iptables 标记应该通过该表路由的数据包:

iptables -A PREROUTING -d 192.168.70.152 -t mangle -p tcp --dport 23 \
    -j MARK --set-mark 1

这将完成您在原始问题中明确要求的事情。如果您想在两个接口之间进行更一般的负载平衡,您需要通过“bond”驱动程序进行“bonding”。

相关内容