当我更换 RHEL 5 盒中的 NIC 卡时,适用的/etc/sysconfig/network-scripts/ifcfg-eth?
文件会被重命名ifcfg-eth?.bak
,并且会创建一个新的文件,其配置如下:
ONBOOT=yes
BOOTPROTO=dhcp
Q1)什么脚本或程序创建这些默认文件?
由于我没有 dhcp 服务器,因此启动和运行需要更长的时间。
问题 2)我可以更改哪些配置,以便新检测到的 NIC 配置为ONBOOT=no
笔记:
chkconfig --list NetworkManager
显示 NetworkManager 在所有运行级别均被禁用udev 规则保存在
/etc/udev/rules.d
. 中,是文件名中60-net.rules
唯一的文件。net
60-net.rules
包含:ACTION=="add", SUBSYSTEM=="net", IMPORT{program}="/lib/udev/rename_device" SUBSYSTEM=="net", RUN+="/etc/sysconfig/network-scripts/net.hotplug"
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,如果它是源,它应该会停止创建这些文件。