好的,我有两个网卡eth0和eth1 。 每个通过他们自己的默认网关。 我只能在eth0上访问networking,因为这是第一个添加了默认路由的网卡。 我如何configuration我的静态路由,以允许他们访问他们单独的子网。
eth0: 10.0.0.3 netmask 255.255.255.0 gw 10.0.0.254 eth1: 10.0.1.1 netmask 255.255.255.0 gw 10.0.1.26
编辑:
问题2
如果Linux上的路由表中没有路由,默认使用eth0 。
你可以做策略路由 ,也就是说,有多个路由表,并根据你的源地址 (一般在其他字段,但在这里不相关)select路由表来使用。 请注意,下面显示的表格号是任意select的。
我不知道如何使用net-tools包中的路由进行策略路由。 无论如何,这是长期弃用。 使用iproute2软件包中的ip 。
您还需要在内核中启用策略路由。 如果我没有弄错的话,主要的分布是默认的。
从合适的状态开始:
# Assumes that previous configuration properly set address and route scopes ip route flush all proto static scope global
然后为每个接口添加表格。
ip route add 10.0.0.3/24 dev eth0 table 5000 ip route add default via 10.0.0.254 dev eth0 table 5000 ip route add 10.0.1.1/24 dev eth1 table 5001 ip route add default via 10.0.1.26 dev eth1 table 5001
然后build立路由规则 :
ip rule add from 10.0.0.3 table 5000 ip rule add from 10.0.1.1 table 5001
最后一步是configuration默认网关, 当你是发起者 ,可以这么说。
如果你只想使用eth0作为默认网关,那么只需要这样做:
ip route add default via 10.0.0.254 dev eth0
请注意, 没有指定表 ,所以它默认为主。 使用eth1作为练习留给读者。
如果要在两者之间进行负载平衡,可以使用nexthop来执行多path路由。
ip route add default nexthop via 10.0.0.254 dev eth0 weight 1 nexthop via 10.0.1.26 dev eth1 weight 1
至于问题二,Linux没有自动创build一个默认路由。 如果您的stream量没有本地路由,则会收到EHOSTUNREACH错误。
编辑:请注意,以上都不应该被认为是知识产权是有状态的,它与连接,甚至是一个固有的stream程概念有关。 它仅仅意味着我们假设一个stream程始终具有相同的端点,并且我们根据源地址将一个stream程绑定到网关。 这是非常必要的,因为许多网关(特别是在住宅ISP中)反向path过滤。
一般情况下,你只能有一个默认网关。 毕竟这是默认的。 所有不匹配更具体的静态路由的stream量都将在eth0上消失。
如果您希望10.0.1.0/24子网中的所有stream量都从eth1stream出,其他stream量将使用eth0 ,请执行@AlanCurry所说的操作,并执行类似route add -net 10.0.1.0 netmask 255.255.255.0 dev eth1
最简单的方法是:
ip route flush all ip route add 10.0.0.0/24 dev eth0 ip route add 10.0.3.0/24 dev eth1 ip route add default via 10.0.0.254
这将使您可以访问适当设备上的两个子网,并通过网关10.0.0.254上的eth0路由所有Internetstream量。
您可以在/etc/sysconfig/network-scripts/route-ethX中将这些设置保留为基于Red Hat的风格中的规则重新启动/重新启动。
/etc/sysconfig/network-scripts/route-eth0 :
10.0.0.0/24 dev eth0 default via 10.0.0.254
/etc/sysconfig/network-scripts/route-eth1 :
10.0.3.0/24 dev eth1