使用 NetworkManager Keyfile 时,除非存在物理连接或我手动设置,否则不会设置设备(静态 IP 地址)nmcli connection up Onboard-NET
。对于使用它的内部程序,我需要始终保持连接。
以前使用此功能时/etc/sysconfig/network-scripts/ifcfg-net0
,设备会自动设置为:
TYPE=Ethernet
DEVICE=net0
NAME="Onboard NET"
HWADDR=xx:xx:xx:xx:xx:xx
IPADDR=192.x.x.x
NM_CONTROLLED=yes
ONBOOT=yes
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
PREFIX=24
DEFROUTE=no
IPV4_FAILURE_FATAL=no
IPV6_DISABLED=yes
IPV6INIT=no
我们可以看到,即使没有物理连接或手动命令,设备也可以使用分配的 IP 地址启动。
net0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state ***DOWN*** group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.x.x.x/24 brd 192.9.201.255 scope global noprefixroute net0
valid_lft forever preferred_lft forever
现在使用密钥文件
将设置复制到密钥文件/etc/NetworkManager/system-connections/Onboard-NET.nmconnection
::
[connection]
id=Onboard-NET
type=ethernet
interface-name=net0
autoconnect=yes # also tried =no
[ethernet]
mac-address=xx:xx:xx:xx:xx:xx
[ipv4]
address1=192.x.x.x/24
method=manual
never-default=true
[ipv6]
method=disabled
never-default=true
addr-gen-mode=stable-privacy
[proxy]
启动时,静态 IP 地址/连接不会自动启动:
net0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
altname eno1
altname enp0s31f6
如果与另一台计算机存在物理连接,该连接将自动建立,但如果没有,该连接将保持关闭状态,直到手动建立。和nmcli connection up Onboard-NET
。现在我们可以看到它已经启动了:
[amat@adt ~]$ nmcli connection up Onboard-NET
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
[amat@adt ~]$ ip a
net0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state **DOWN** group default qlen 1000
link/ether 00:01:29:ad:8f:47 brd ff:ff:ff:ff:ff:ff
altname eno1
altname enp0s31f6
inet 192.x.x.x/24 brd 192.x.x.255 scope global noprefixroute net0
valid_lft forever preferred_lft forever
其他可能有用的调试信息
- 还有另一个连接
ext0
(/etc/NetworkManager/system-connections/Onboard-EXT.nmconnection
),它是 dhcp,用于连接到外部互联网。这个可以正确启动 - 设备在 udev 中重命名
- ifcfg 方法在 CentOS 6/7/8 中有效
- net0 的 systemd 启动消息
NetworkManager[1037]: <info> [1668115652.0180] manager: (net0): new Ethernet device (/org/freedesktop/NetworkManager/Devices/7)
NetworkManager[1037]: <info> [1668115652.0182] device (net0): state change: unmanaged -> unavailable (reason 'managed', sys-iface-state: 'external')
- 使用这些内核参数:
net.ifnames=0 biosdevname=0
编辑
使用 ifcfg 文件时问题仍然存在(将 NetworkManager.conf 更改为[main] plugins=ifcfg-rh
可能是一些省电配置之类的吗?我不明白为什么它不听 ONBOOT=yes
答案1
或许ignore-carrier
?来自NetworkManager.conf
手册页:
ignore-carrier
NetworkManager
指定将(部分)忽略运营商状态的设备。通常,对于支持运营商检测的设备类型(例如以太网和 InfiniBand),NetworkManager
仅当运营商存在(即插入电缆)时才允许在设备上激活连接,如果运营商存在,它将停用设备下降超过几秒钟。忽略运营商的设备将允许在该设备上激活连接,即使该设备没有运营商,前提是该连接仅使用静态配置的 IP 地址。此外,当运营商丢失时,它将允许任何活动连接(无论是静态还是动态)在设备上保持活动状态。