多个接口:将数据包路由到特定的接口

我的networking上有2个互联网连接。 我的路由器正在运行Debian。 eth0是我的networking(192.168.0.0/16)。 eth1和eth2连接到2个不同的互联网提供商(dynamicIP)。

这是我的configuration的一个小图

 PC1 --- |  | -eth1- DynIP提供者1
 PC2 --- | -eth0-路由器--- |
 PCn --- |  | -eth2- DynIP提供者2

我想configuration它如下:我希望所有的数据包默认通过eth1去。 所有来自地址为192.168.2.0/24的PC的数据包通过eth2传送。

在寻找一段时间后,在其他论坛上发布我已经有以下(在我的rc.local文件):

 echo“1”> / proc / sys / net / ipv4 / ip_forward

 iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
 iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
 iptables -A FORWARD -i eth1 -j ACCEPT
 iptables -A FORWARD -i eth2 -j ACCEPT

与路由表:

内核IP路由表
目标网关Genmask标志度量参考使用Iface
 10.0.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
 172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
 192.168.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
 0.0.0.0 172.16.1.50 0.0.0.0 UG 0 0 0 eth1
 0.0.0.0 10.0.4.2 0.0.0.0 UG 0 0 0 eth2
 0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

我尝试玩routeip route但我找不到它的工作…

路由决策基于目标地址。 如果要根据源地址路由stream量,则需要configuration基于策略的路由。 看一下:

http://www.linuxhorizo​​n.ro/iproute2.html

几周前我回答了这些类似的问题:

如何通过协议路由不同的接口(路由)不同的stream量?

使用iptables通过特定的接口转发指向特定ip的stream量