我有两个网络接口,分别有 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”。