NetworkManager 添加额外的默认网关

NetworkManager 添加额外的默认网关

使用 NetworkManager,我尝试在不同的 VLAN 上设置多个接口;主接口 em1 用于开发 VLAN;辅助接口位于专用 iSCSI VLAN 上。

我正在使用内核参数从 iSCSI 磁盘启动主机:

GRUB_CMDLINE_LINUX="netroot=iscsi:@172.16.250.250::3260:em2:::iqn.2000-01.com.example.san:disk rd.iscsi.initiator=iqn.2000-01.com.example.node:root rd.lvm.lv=centos/root

阻止德拉库特通过覆盖对网络配置文件的更改,我向 dracut 配置文件添加了覆盖,然后重建:

echo 'omit_dracutmodules+="ifcfg"' >> /etc/dracut.conf

dracut -f
grub2-mkconfig -o /boot/grub2/grub.cfg

重新启动后,我用来nmtui配置适配器,它使用以下参数构建了配置文件:

DEVICE=        em1        em2
ONBOOT=        yes        yes
BOOTPROTO=     dhcp       dhcp
DEFROUTE=      yes        no
PEERDNS=                  no
PEERROUTES=               no

我需要em1作为主要/默认接口,em2是专门用于 iSCSI;然而问题是em2仍在添加默认路由。重启后:

$ ip route show
default via 172.16.250.1 dev em2       <-- WRONG
default via 172.16.100.1 dev em1 proto dhcp metric 100
172.16.100.0/24 dev em1 proto kernel scope link src 172.16.100.100
172.16.100.0/24 dev em1 proto kernel scope link src 172.16.100.100 metric 100
172.16.250.0/24 dev em2 proto kernel scope link src 172.16.250.100
172.16.250.0/24 dev em2 proto kernel scope link src 172.16.250.100 metric 101

没有路线-配置文件。

以下是一些相关的 nmcli 选项:

$ nmcli c show $if | grep ipv4

                           em1          em2
ipv4.routes                --           --
ipv4.route-metric          -1           -1
ipv4.route-table           0 (unspec)   0 (unspec)
ipv4.routing-rules         --           --
ipv4.ignore-auto-routes    no           yes
ipv4.ignore-auto-dns       no           yes
ipv4.never-default         no           yes

我不确定是什么产生了这个额外的路由,我该如何检查是什么产生了它并阻止它呢?

答案1

看起来您是通过 DHCPv4 获取 IP 地址的。在这种情况下,默认情况下,默认网关将根据 DHCP 服务器发送的内容进行设置。如果您在两个不同的接口上使用 DHCP(如您在此处所做的那样),您可能会获得两个网关 - 在这种情况下,这两个网关会发生冲突。

您可以通过明确配置连接来告诉 NetworkManager 忽略其中一个网关,如下所示。

例如(用 替换您的连接的实际名称em2):

nmcli c mod em2 ipv4.never-default yes

这将导致 DHCP 服务器的默认网关被忽略。等效的 GUI 选项是:“仅将此连接用于其网络上的资源”。


此外,我怀疑您的神秘额外路由来自 dracut 启动网络接口(使用 dhcp)。您应该考虑em2在内核命令行上手动配置接口,而不是使用 DHCP。


最后,您应该与网络人员进行一次长时间的讨论,了解为什么在您的存储网络上会公布默认网关。

相关内容