RedHat – 添加静态路由规则

我有两个子网和一个带有2个NIC的RedHat 5.3,每个IP在一个子网上:

eth1 172.16.0.4, 255.255.255.0 eth0 194.20.23.183, 255.255.255.0 

在每个子网上我都有一个网关/防火墙,我想转发每个网卡在它自己的GW上。 这是当前的路由表:

 Destination Gateway Genmask Flags Metric Ref Use Iface 172.16.0.0 * 255.255.255.0 U 0 0 0 eth1 194.20.23.0 * 255.255.255.0 U 0 0 0 eth0 default 172.16.0.1 0.0.0.0 UG 0 0 0 eth1 

如果我首先尝试删除194.20.23.0 net上已有的规则,然后使用下面的命令

 route add -net 194.20.23.0 netmask 255.255.255.0 gw 194.20.23.181 dev eth0 

它返回

 SIOCADDRT: Network is unreachable 

任何人都可以用简单的话来解释我的这个信息的原因,也可能是我如何才能完成这个目标。

在此先感谢问候

亚历山德罗·伊拉多

首先,您要添加的路由与接口本身位于同一网段。 这意味着发送这些数据包时不需要使用路由器/网关。 该接口能够直接寻址主机。 本地交换机将在没有使用路由器作为中介的情况下获得它。

添加规则时出现错误,因为这是定义如何将数据包发送到整个networking的规则,方法是发送到该networking上的特定主机。 这是一个赶上22。 为了将数据包发送到该网关,您需要知道如何获得其IP地址。 为了发送到它的IP地址,你必须通过该网关。 这就像告诉某人In order to get to Main Street, go to 1512 Main Street, and ask the guy who lives there.

现在,就一个正确的网关而言,这就是你的路由表中的最后一行。 它把所有的stream量路由到172.16.0.1,但是它没有被上面的规则匹配。 这是您的默认网关。 您的第二个NIC不需要GW,因为所有非本地stream量都通过此网关。

如果你想通过另一个NIC / GW分割一半的stream量,你需要定义哪些networking这样做。 例如: route add -net 10.0.0.0 netmask 255.0.0.0 gw 194.20.23.181 dev eth1将只是通过你的第二个网卡路由的10.xxxnetworking。

我认为你必须交换设备。 尝试这个:

 route add -net 194.20.23.0 netmask 255.255.255.0 gw 194.20.23.181 dev eth1 

这应该是您的设置的相应规则:

 eth0 172.16.0.4, 255.255.255.0 eth1 194.20.23.183, 255.255.255.0 

你也可以做一些基于策略的路由