Bla*_*543 1 linux linux-networking
好的,我有两个 NICeth0和eth1. 每个都通过自己的默认网关。我只能访问网络,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
Run Code Online (Sandbox Code Playgroud)
编辑:
问题2
如果 Linux 上的路由表中不存在路由,它是否eth0默认使用?
您可以进行策略路由,即拥有多个路由表,并根据您的源地址选择要使用的路由表(一般为其他字段,但此处不相关)。请注意,下面显示的表编号是任意选择的。
我不知道如何route从net-tools包中使用策略路由。反正早就弃用了。ip从iproute2包装中使用。
您还需要在内核中启用策略路由。如果我没记错的话,主要发行版默认会这样做。
如果合适,从干净的状态开始:
# Assumes that previous configuration properly set address and route scopes
ip route flush all proto static scope global
Run Code Online (Sandbox Code Playgroud)
然后为每个接口添加表。
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
Run Code Online (Sandbox Code Playgroud)
然后设置路由规则:
ip rule add from 10.0.0.3 table 5000
ip rule add from 10.0.1.1 table 5001
Run Code Online (Sandbox Code Playgroud)
最后一步是配置默认网关,当你是发起者时,可以这么说。
如果您只想eth0用作默认网关,则只需执行以下操作:
ip route add default via 10.0.0.254 dev eth0
Run Code Online (Sandbox Code Playgroud)
请注意,没有指定表,因此默认为 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
Run Code Online (Sandbox Code Playgroud)
对于问题二,没有 Linux 会自动创建默认路由。如果您的流量没有本地路由,您将收到EHOSTUNREACH错误消息。
编辑:请注意,以上所有内容都不应暗示 IP 是有状态的,它与连接有关,甚至与流的固有概念有关。这仅仅意味着我们假设流总是具有相同的端点,并且我们根据源地址将流绑定到网关。这是非常必要的,因为许多网关(特别是在住宅 ISP 的环境中)进行反向路径过滤。
| 归档时间: |
|
| 查看次数: |
17435 次 |
| 最近记录: |