通过静态路由为两个网卡配置网关

通过静态路由为两个网卡配置网关

好的,我有两个 NICeth0eth1。每个都有自己的默认网关。我只能访问 上的网络,eth0因为这是第一个添加默认路由的 NIC。我如何配置静态路由以允许两者访问其各自的子网。

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默认使用吗?

答案1

你可以做策略路由即拥有多个路由表,并根据以下情况选择要使用的路由表你的源地址(一般来说其他领域也是如此,但与此无关)。请注意,下面显示的表格编号是任意选择的。

我不知道如何使用包route中的策略路由net-tools。反正它早就被弃用了。使用包ip中的策略路由iproute2

您还需要在内核中启用策略路由。如果我没记错的话,主流发行版默认都会启用该功能。

如果合适,请从干净的状态开始:

# 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

然后设立路由规则

ip rule add from 10.0.0.3 table 5000
ip rule add from 10.0.1.1 table 5001

最后一步是配置默认网关当你是发起者时, 可以这么说。

如果您只想用作eth0默认网关,那么只需执行以下操作:

ip route add default via 10.0.0.254 dev eth0

注意没有指定表,因此默认为 main。使用eth1留给读者练习。

如果您想在两者之间进行负载平衡,可以使用进行多路径路由nexthop

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 会自动创建默认路由。如果您的流量没有本地路由,您将收到错误EHOSTUNREACH

编辑:请注意,以上任何内容都不应被理解为暗示 IP 是有状态的,它与连接有任何关系,甚至不是流的固有概念。它只是意味着我们假设流始终具有相同的端点,并且我们根据源地址将流绑定到网关。这只是必要的,因为许多网关(尤其是在住宅 ISP 的环境中)会进行反向路径过滤。

答案2

正常情况下,你只能有一个默认网关。毕竟这是默认网关。所有与更具体的静态路由不匹配的流量都将从 上的默认网关发出eth0

如果您希望仅让 10.0.1.0/24 子网的所有流量出去eth1,并使用其余流量eth0,请按照@AlanCurry 所说的操作,并执行以下操作route add -net 10.0.1.0 netmask 255.255.255.0 dev eth1

答案3

最简单的方法:

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 路由所有互联网流量。

您可以设置这些以通过基于 Red Hat 的规则在重新启动/重启后继续存在:/etc/sysconfig/network-scripts/route-ethX


/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

相关内容