有3张网卡的服务器

有3张网卡的服务器

总计编辑:

我有 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 routeip rule命令。我猜像这样:https://unix.stackexchange.com/questions/4420/reply-on-same-interface-as-incoming

答案4

发送数据时,一次只使用一个接口,99% 的时间是默认的 eth0。当然,您可以同时从所有 3 个接口接收数据...

相关内容