运维工程师必知:Linux网卡配置中设置NM_CONTROLLED=no的重要性

文摘   2024-11-27 22:27   广东  

NM_CONTROLLED 参数在Linux网络配置中起着重要的作用,它决定了NetworkManager是否控制特定的网络接口。

以下是该参数配置与否的意义和一些因配置不合理导致的故障案例:

参数配置的意义:

  1. NM_CONTROLLED=yes

  • 表示网卡允许NetworkManager程序管理。这样可以降低网络配置的使用难度,便于管理无线网络、虚拟专用网等网络连接,适合普通台式机和笔记本电脑使用。

  • 当设置为yes并有安装运行NetworkManager服务时,如果编辑了网卡配置文件,需要先重启NetworkManager再重启network服务。

  • NM_CONTROLLED=no

    • 表示网卡使用传统方式管理而不用NetworkManager。这样做的好处是修改网卡配置文件后直接重启network就生效,不受NetworkManager干扰,适合以太网连接的服务器使用。

    • 设置NM_CONTROLLED=no的目的是将网络设备脱离NetworkManager服务的管理,设置后该网络设备仅由network服务管理,不受NetworkManager服务控制,因而nmcli命令对该网络设备不再生效。

    因配置不合理导致的故障案例:

    1. 网络中断问题

    • 在一些案例中,系统管理员在远程连接的终端上修改ifcfg-eth0文件时,由于NM_CONTROLLED=yes,网络可能立即中断,导致远程连接死机,无法进行任何操作。管理员只能到机房去(如果幸运,离机房比较近的话),到服务器的Console终端进行修改

    • 这种配置有非常大的安全隐患,参数改错以后,会导致无法连接远程服务器修改,所以建议网卡配置中设置为NM_CONTROLLED=no

  • 重启网络服务后网络不通

    • 在RHEL7.6系统中,使用nmcli绑定双网卡后,在使用命令systemctl restart network重启network服务后主机网络异常,导致无法通过ssh远程登录系统。

    • 分析发现,当停止NetworkManager服务后,问题现象消失。如果不停止NetworkManager服务,而是修改网卡配置文件,在bonding网卡和组成bonding的slave网卡的配置文件中增加NM_CONTROLLED=no,也可以解决该问题。

  • 配置文件不生效

    • 检查ifcfg文件中是否有语法错误或参数设置不当,特别是NM_CONTROLLED参数。如果网络接口被NM控制,可以在ifcfg文件中加入NM_CONTROLLED=no来避免此问题

    通过这些案例,我们可以看到合理配置NM_CONTROLLED参数对于网络稳定性和可管理性是非常重要的。不当的配置可能导致网络服务中断,增加系统管理的复杂性和风险。



    了解Linux中的网卡配置文件的含义

    以下是Linux系统中用于配置网络接口的配置文件,通常用于Red Hat系列的发行版(如CentOS、Fedora、RHEL等)。

     # cat ifcfg-eth0 TYPE=EthernetDEVICE=eth0BOOTPROTO=staticONBOOT=yesNAME=eth0HWADDR=FE:FC:FE:05:D8:xxPEERDNS=noNM_CONTROLLED=noIPADDR=192.168.1.11NETMASK=255.255.255.0GATEWAY=192.168.1.254METRIC=103

    下面是每个参数的解释及其作用:

    1. TYPE=Ethernet

    • 参数解释:指定网络接口的类型。

    • 作用:告诉系统这是一个以太网接口。

  • DEVICE=eth0

    • 参数解释:指定配置文件对应的网络设备名称。

    • 作用:这里指定设备名为eth0,即第一块以太网卡。

  • BOOTPROTO=static

    • 参数解释:指定启动时使用的协议。

    • 作用static表示静态IP配置,即手动指定IP地址和网络配置,而不是通过DHCP等动态获取。

  • ONBOOT=yes

    • 参数解释:指定在系统启动时是否激活该网络接口。

    • 作用yes表示在系统启动时激活该网络接口。

  • NAME=eth0

    • 参数解释:指定网络接口的名称。

    • 作用:这里指定接口名称为eth0,与DEVICE参数一致。

  • HWADDR=FE:FC:FE:05:D8:xx

    • 参数解释:指定网络接口的硬件地址(MAC地址)。

    • 作用:这里指定了该以太网接口的MAC地址。

  • PEERDNS=no

    • 参数解释:指定是否从DHCP服务器获取DNS服务器地址。

    • 作用no表示不从DHCP服务器获取DNS服务器地址,即使BOOTPROTO设置为dhcp

  • NM_CONTROLLED=no

    • 参数解释:指定是否由NetworkManager控制该网络接口。

    • 作用no表示该网络接口不受NetworkManager控制,由系统直接管理。

  • IPADDR=192.168.1.11

    • 参数解释:指定分配给网络接口的IP地址。

    • 作用:这里指定了静态IP地址为192.168.1.11

  • NETMASK=255.255.255.0

    • 参数解释:指定网络接口的子网掩码。

    • 作用:这里指定了子网掩码为255.255.255.0,适用于C类地址。

  • GATEWAY=192.168.1.254

    • 参数解释:指定默认网关地址。

    • 作用:这里指定了默认网关地址为192.168.1.254,用于路由到其他网络。

  • METRIC=103

    • 参数解释:指定路由度量值。

    • 作用METRIC用于指定路由优先级,数值越小优先级越高。这里指定的度量值为103,用于决定使用哪个网关。



    如果在Linux系统的网络配置文件中没有显式配置NM_CONTROLLED参数,那么NetworkManager的行为将取决于其默认设置和系统的具体配置。

    通常,NetworkManager会尝试控制所有未被明确标记为不受其控制的网络接口。这意味着,如果NM_CONTROLLED没有被设置为no,NetworkManager默认会认为它有权管理该接口。因此,如果没有明确指定NM_CONTROLLED,那么:

    1. 默认行为:NetworkManager会尝试控制该网络接口,并应用其管理策略,包括自动连接/断开、IP地址分配等。

    2. 配置文件影响:如果系统中有其他配置文件或脚本明确指定了NM_CONTROLLED=no,那么这些设置将优先于默认行为,NetworkManager将不会控制这些接口。

    3. 系统管理员设置:在某些系统中,系统管理员可能会通过修改NetworkManager的配置文件来改变其默认行为,例如,通过设置managed=false/etc/NetworkManager/NetworkManager.conf文件中,来阻止NetworkManager控制任何网络接口。

    4. 接口状态:即使没有NM_CONTROLLED参数,NetworkManager也会根据其他配置(如/etc/network/interfaces/etc/sysconfig/network-scripts/ifcfg-*文件中的设置)来管理网络接口的状态。

    总的来说,如果没有明确指定NM_CONTROLLED,NetworkManager会根据其配置和系统管理员的设置来决定是否控制网络接口。


    总结

    如果你希望确保NetworkManager不控制某个特定的接口,最好显式地在配置文件中设置NM_CONTROLLED=no


    推荐阅读:

    linux系统重启网卡后网络不通(NetworkManager篇):

    https://zhuanlan.zhihu.com/p/394370258


    小叶来滴茶
    杰哥写字的地方:个人工作、生活的总结思考、顿悟的记录。
     最新文章