使用 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覆盖对网络配置文件的更改,我在 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
我不确定是什么产生了这条额外的路线,我如何检查是什么产生了它并阻止它?
看起来您正在通过 DHCPv4 获取 IP 地址。在这种情况下,默认情况下,默认网关将根据 DHCP 服务器发送的任何内容进行设置。如果您在两个不同的接口上使用 DHCP,就像您在此处所做的那样,您可能会获得两个网关 - 在这种情况下会发生冲突。
您可以通过显式配置连接来告诉 NetworkManager 忽略其中一个网关,如下所示。
例如(将连接的实际名称替换为
em2
):这将导致 DHCP 服务器的默认网关被忽略。等效的 GUI 选项是:“仅将此连接用于其网络上的资源”。
此外,我怀疑当它启动网络接口(使用 dhcp)时,您的神秘额外路由来自 dracut。您应该考虑在内核命令行上手动配置
em2
接口,而不是使用 DHCP。最后,您应该与您的网络人员就为什么在您的存储网络上发布默认网关进行长时间的交谈。