总计编辑:
我有 3 个网卡,链接为 eth0 eth1 eth2。我创建了 3 个表 T1 T2 T3。在 /etc/network/interfaces 中我写道:
auto eth0
iface eth0 inet static
address 1.0.0.1
netmask 255.255.255.0
post-up ip route add 1.0.0.2/32 dev eth0 src 1.0.0.1 table T1
post-up ip route add default via 1.0.0.2 table T1
post-up ip rule add from 1.0.0.1 table T1
post-down ip rule del from 1.0.0.1 table T1
auto eth1
iface eth1 inet static
address 2.0.0.1
netmask 255.255.255.0
post-up ip route add 2.0.0.2/32 dev eth1 src 2.0.0.1 table T2
post-up ip route add default via 2.0.0.2 table T2
post-up ip rule add from 2.0.0.1 table T2
post-down ip rule del from 2.0.0.1 table T2
auto eth2
iface eth2 inet static
address 3.0.0.1
netmask 255.255.255.0
post-up ip route add 3.0.0.2/32 dev eth2 src 3.0.0.1 table T3
post-up ip route add default via 3.0.0.2 table T3
post-up ip rule add from 3.0.0.1 table T3
post-down ip rule del from 3.0.0.1 table T3
因此,我重新启动了系统,所有接口都启动了,然后我需要添加这样的规则,因为没有网关:
ip route add default scope global nexthop via 1.0.0.2 dev eth0 weight 1 nexthop via 2.0.0.2 eth1 weight 1 nexthop via 3.0.0.2 eth2 weight 1
但执行该命令后我收到错误:
RTNETLINK answers: Invalid argument
那么,出了什么问题?我用了这个手册https://www.debian-administration.org/articles/377
答案1
首先,eth2 将无法工作,因为配置文件中有一个拼写错误:gateway XXX.XXX.XXX.255
应该是gateway XXX.XXX.XXX.254
其次,如果 XXX.XXX.XXX.213 从同一台机器响应 ping,则 XXX.XXX.XXX.71 应该响应。如果没有,则 eth1 可能已关闭(输出可能ifconfig -a
有帮助)或防火墙丢弃了 eth1 上的所有数据包,但不丢弃 eth0 上的所有数据包,或者您遇到了网络问题(电缆有缺陷、交换机配置错误),在这种情况下,您应该尝试在 eth0 和 eth1 之间交换电缆。
另外,根据你的路由表,只有一个接口用于传出连接。这取决于每个路由的度量集。你可以使用以下命令查看路由表:ip route show
答案2
我不知道您拥有什么虚拟化设置,但拥有多个 NIC 并使用它们的关键是正确设置您的网络。
您的配置中所有接口上都有一个默认网关,这不会起作用。理解的关键是查看您的路由表(通常命令“route”会显示该表)。
您将看到有 3 种方式让流量流出。那么会发生什么呢?其中一条路由将被使用。但答案(例如 ping)会在同一接口上返回吗?很可能不会。
因此,您需要决定如何路由这些流量,并相应地设置路由。自动地,与接口相同的网络的流量将通过该接口。您应该只有 1 个默认网关(这就是为什么它被称为默认网关 - 这是在没有更好的路由时使用的)。然后按照您想要的方式调整您的流量。
您没有提供 IP 地址,因此我们无法提供太多帮助。因为我无法判断它们是否都是同一个子网。它们都是 192.168.5.xxx 还是不同?
您要实现的目标是,您的每台电子邮件服务器都通过其适用的 ISP 线路发送出去。您没有指定使用哪种电子邮件软件,因此我假设使用 Postfix。您可以设置 postfix 以绑定到特定接口。这样您的电子邮件就会通过该接口发送出去。为此,您可以设置一个路由条目,该条目将通过该 NIC 的网关发送该 NIC 上的流量。
答案3
ping 答案将取决于您的路由表,特别是您的默认网关,我猜这里配置为 eth0,这就是 eth1 和 eth2 没有响应的原因。您将需要使用ip route
和ip rule
命令。我猜像这样:https://unix.stackexchange.com/questions/4420/reply-on-same-interface-as-incoming
答案4
发送数据时,一次只使用一个接口,99% 的时间是默认的 eth0。当然,您可以同时从所有 3 个接口接收数据...