A. 您必须在 /etc/udev/rules.d 中的文件中将 NM_UNMANAGED 设置为 TRUE,以确保“不会创建默认连接并且不会尝试自动激活”。

A. 您必须在 /etc/udev/rules.d 中的文件中将 NM_UNMANAGED 设置为 TRUE,以确保“不会创建默认连接并且不会尝试自动激活”。

当我更换 RHEL 5 盒中的 NIC 卡时,适用的/etc/sysconfig/network-scripts/ifcfg-eth?文件会被重命名ifcfg-eth?.bak,并且会创建一个新的文件,其配置如下:

ONBOOT=yes
BOOTPROTO=dhcp

Q1)什么脚本或程序创建这些默认文件?

由于我没有 dhcp 服务器,因此启动和运行需要更长的时间。

问题 2)我可以更改哪些配置,以便新检测到的 NIC 配置为ONBOOT=no

笔记:

  1. chkconfig --list NetworkManager显示 NetworkManager 在所有运行级别均被禁用

  2. udev 规则保存在/etc/udev/rules.d. 中,是文件名中60-net.rules唯一的文件。net

  3. 60-net.rules包含:

    ACTION=="add", SUBSYSTEM=="net", IMPORT{program}="/lib/udev/rename_device"
    SUBSYSTEM=="net", RUN+="/etc/sysconfig/network-scripts/net.hotplug"
    
  4. rename_device似乎不是写入初始文件的程序,因为使用 xxd 查看的可执行文件中没有字符串 ONBOOT。此外源代码在线并不表明它写入了这个文件。

答案1

A. 您必须在 /etc/udev/rules.d 中的文件中将 NM_UNMANAGED 设置为 TRUE,以确保“不会创建默认连接并且不会尝试自动激活”。

这个问题问得好。我在 Fedora 上查看了它,因此目录名称可能会发生变化。

这是我在文档中发现的。

 man NetworkManager

UDEV 属性 udev(7) 设备管理器用于网络设备发现。以下属性影响 NetworkManager 如何管理设备:

   NM_UNMANAGED
       No default connection will be created and automatic activation will not be attempted when this property of a
       device is set to a true value ("1" or "true"). You will still be able to attach a connection to the device
       manually or observe externally added configuration such as addresses or routes.

在 RHEL 中,系统规则应该位于 ls /usr/lib/udev/rules.d/

处理该问题的默认文件位于:

/usr/lib/udev/rules.d/

在 /usr/lib/udev/rules.d/85-nm-unmanaged.rules 的顶部,它显示:

head /usr/lib/udev/rules.d/85-nm-unmanaged.rules

请勿修改此文件,更新时它将被覆盖。要覆盖或扩展规则,请将文件放在 /etc/udev/rules.d 中

/etc/udev/rules.d 文件夹目前可能是空的。



例子。

管理新网络接口的启动文件的关键是选择正确的组或“信封”。


示例 1. 新的 pci 网络接口卡的设置。

1. 选择测试设备。

当我在虚拟机中放入一张新卡时,它会给我一个名字,例如:ens11

2. 获取定义组的信息。

查找设备类文件:

find /sys/class -name "ens*"

这恰好与其他 NIC 一起位于 /sys/class/net 中:

ls /sys/class/net

获取有关设备的信息(或使用“-a”获取设备树):

udevadm info /sys/class/net/ens11
udevadm info -a /sys/class/net/ens11 | more

它在我的屏幕上显示的样子如下:

[root@s1 ~]# udevadm info /sys/class/net/ens11
P: /devices/pci0000:00/0000:00:0b.0/net/ens11
E: DEVPATH=/devices/pci0000:00/0000:00:0b.0/net/ens11
E: ID_BUS=pci
...
E: ID_NET_NAME_SLOT=ens11
E: ID_PATH=pci-0000:00:0b.0
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
...
E: USEC_INITIALIZED=2939943

我将使用 ID_PATH=pci-0000:00:0b.0 对要更改的设备进行分组。我将使用单独的文件来控制单独的总线。

3. 在 /etc/udev/rules.d/ 中创建一个文件

cat /etc/udev/rules.d/pci_bus_0b.rules

#state down  ( They are up by default. )
ENV{ID_PATH}=="pci-0000:00:0b.0", ENV{NM_UNMANAGED}="0", ENV{ONBOOT}="1"

#state up
#ENV{ID_PATH}=="pci-0000:00:0b.0", ENV{NM_UNMANAGED}="0", ENV{ONBOOT}="0"

4.重新启动设备和网络。

确保没有其他重要操作同时发生。

我有一个虚拟机在内部硬盘上运行,没有问题,但 USB 连接的硬盘有点旋转。一个更慢的替代方案可能是重新启动。

udevadm trigger
# You should see the changes already:
udevadm info /sys/class/net/wlp0s8f7u4
systemctl restart NetworkManager
ip a


示例 2. 无线局域网 USB 网络接口卡。(Wlan)

1. 选择测试设备。

当我插入我的 USB 无线适配器时,它会给我一个名字,例如:wlp0s8f7u4

2. 获取定义组的信息。

查找设备文件类

find /sys/class -name "wlp*"

这恰好与其他 NIC 一起位于 /sys/class/net 中:

ls /sys/class/net

获取有关设备的信息(或使用“-a”获取设备树):

udevadm info /sys/class/net/wlp0s8f7u4
udevadm info -a /sys/class/net/wlp0s8f7u4 | more

它在我的屏幕上显示的样子如下:

[root@s1 ~]# udevadm info /sys/class/net/wlp0s8f7u4
P: /devices/pci0000:00/0000:00:08.7/usb1/1-4/1-4:1.0/net/wlp0s8f7u4
E: DEVPATH=/devices/pci0000:00/0000:00:08.7/usb1/1-4/1-4:1.0/net/wlp0s8f7u4
E: DEVTYPE=wlan
E: ID_BUS=usb
E: ID_MODEL=802.11_n_WLAN
...
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/wlp0s8f7u4
E: TAGS=:systemd:
E: USEC_INITIALIZED=4672793558

我将使用“DEVTYPE=wlan”来对我想要更改的设备进行分组。

3. 在 /etc/udev/rules.d/ 中创建一个文件

cat /etc/udev/rules.d/Wireless_lan.rules
# State down
ENV{DEVTYPE}=="wlan", ENV{NM_UNMANAGED}="0", ENV{ONBOOT}="1"

# State up
#ENV{DEVTYPE}=="wlan", ENV{NM_UNMANAGED}="0", ENV{ONBOOT}="0"

4.重新启动设备和网络。

确保没有其他重要操作同时发生。

我有一个虚拟机在内部硬盘上运行,没有问题,但 USB 连接的硬盘有点旋转。一个更慢的替代方案可能是重新启动。

udevadm trigger
# You should see the changes already:
udevadm info /sys/class/net/wlp0s8f7u4
systemctl restart NetworkManager
ip a

参考:

规则: man 7 udev

Udev 属性: Arch Linux 维基

环境变量列表:(由 Lekensteyn 提供)Unix 论坛):

grep -hrPo'ENV{\K[^}]*(?=}=[^=])'/{etc,lib}/udev/rules.d | sort -u

答案2

在较新的 Linux 系统上,经常会出现这种情况网络管理器处理这些文件。有一个命令行工具可以处理它,但它通常是通过您选择的桌面上的 GUI 进行配置的。

由于 RHEL 5 确实很旧,我认为您可以/应该使用 Redhat 配置工具system-config-network。有一些主信息文件和一些由脚本生成的文件(如您提到的文件)。使用这个简单的配置工具最容易。

答案3

我知道您表示它已被禁用,但如果 NetworkManager 正在创建这些文件,则有一个配置选项可以告诉它停止。

/etc/NetworkManager/NetworkManager.conf 中的标题指向配置文件的手册页:

# Configuration file for NetworkManager.
#
# See "man 5 NetworkManager.conf" for details.

在手册页中它会告诉你:

   no-auto-default
       Specify devices for which NetworkManager shouldn't create default
       wired connection (Auto eth0). By default, NetworkManager creates a
       temporary wired connection for any Ethernet device that is managed
       and doesn't have a connection configured. List a device in this
       option to inhibit creating the default connection for the device.
       May have the special value * to apply to all devices.

       When the default wired connection is deleted or saved to a new
       persistent connection by a plugin, the device is added to a list in
       the file /var/run/NetworkManager/no-auto-default.state to prevent
       creating the default connection for that device again.

       See the section called “Device List Format” for the syntax how to
       specify a device.

       Example:

           no-auto-default=00:22:68:5c:5d:c4,00:1e:65:ff:aa:ee
           no-auto-default=eth0,eth1
           no-auto-default=*

因此,如果您将“no-auto-default=*”设置为 /etc/NetworkManager/NetworkManager.conf,如果它是源,它应该会停止创建这些文件。

相关内容