如何为三个不同子网上的三块 NIC 卡配置网络接口

如何为三个不同子网上的三块 NIC 卡配置网络接口

我正在 Ubuntu 上设置云环境,遇到了一个有趣的问题。开箱即用的 Ubuntu(实际上是所有 Linux)不允许您在 /etc/network/interfaces 中指定多个网关

由于我没有为任何 NIC 使用 DHCP,并且我在交换机和路由器上使用 vLAN(参考下图),因此我需要此服务器上的每个 NIC 不仅拥有自己的 IP,还指定自己的网关。由于 vLAN 2(10.0.1.0/24)无法访问 10.0.0.1,它是默认网关,但由于网络掩码 255.255.255.0 而无法访问。

我所有的研究都让我明白我需要手动配置路由表,但是,当我尝试为第一个 eth0 NIC 以上的路由添加时,出现以下错误:

# ip route add default via 10.0.1.1 dev eth1 table eth1
RTNETLINK answers: File exists

在此处输入图片描述

此时,我不知该尝试什么...我无法将路由添加到新的路由表中,并且如果没有明确的路由,每个 NIC 卡都会尝试使用 10.0.0.1 作为网关,因为它是 10.0.0.0/24 的默​​认网关

答案1

因此,在采纳了马特的建议并经过反复试验后,我们得到了以下答案。

我使用的命令有以下模式 ip route add via dev

最后的命令实际上是

# ip route add 10.0.1.31 via 10.0.1.1 dev eth1
# ip route add 10.0.2.31 via 10.0.2.1 dev eth2

添加这些之后,我在 vLAN 上的 IP 之间 ping 时没有遇到任何问题。太棒了……

本质上这里的区别是我添加了一条静态路由,以便交互下一跳被发送到 vLAN 网关 ID,而不是发送到默认网关。

此外,为了让这些是永久的,我最终将它们添加到 /etc/network/interfaces 配置文件中作为后续配置。因此,我最终为 eth1 和 eth2 设置了此行,但我保留了 eth0,因为它可以使用默认网关

post-up route add 10.0.1.31 via 10.0.1.1 dev eth1

答案2

您只能有一个默认网关,这就是它被称为默认网关的原因。您可以为其他 NIC 创建静态路由,以便该 NIC VLAN 上可访问的特定网络。

相关内容