一、简介

1.NetworkManager 状态

首先确认当前系统使用 NetworkManager

[root@localhost ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since 三 2024-05-08 01:58:39 CST; 5 days ago
     Docs: man:NetworkManager(8)
 Main PID: 819 (NetworkManager)
   CGroup: /system.slice/NetworkManager.service
           └─819 /usr/sbin/NetworkManager --no-daemon
...

2.查看当前网卡

[root@localhost ~]# nmcli device
# 设备名称     类型      连接状态  连接名称
DEVICE       TYPE      STATE   CONNECTION
ens192       ethernet  已连接  ens192
lo           loopback  未托管  --

[root@localhost ~]# nmcli connection
# 连接名 唯一识别码                              类型       设备名称
NAME    UUID                                  TYPE      DEVICE
ens192  dd77bab7-d4f3-4cd2-ba8f-d345da061bf6  ethernet  ens192

3.查看连接详细配置

[root@localhost ~]# nmcli connection show ens192
# connection 部分主要是名称,开机自动连接相关配置
connection.id:                          ens192
connection.uuid:                        dd77bab7-d4f3-4cd2-ba8f-d345da061bf6
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              ens192
connection.autoconnect:                 是
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
...
# 802-3-ethernet,主要是硬件相关参数
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          否
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.generate-mac-address-mask:--
802-3-ethernet.mac-address-blacklist:   --
802-3-ethernet.mtu:                     自动
802-3-ethernet.s390-subchannels:        --
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            --
802-3-ethernet.wake-on-lan:             default
802-3-ethernet.wake-on-lan-password:    --
# ipv4部分,主要是ipv4地址、网关、DNS等
ipv4.method:                            manual
ipv4.dns:                               192.170.1.26,192.170.1.28
ipv4.dns-search:                        --
ipv4.dns-options:                       ""
ipv4.dns-priority:                      0
ipv4.addresses:                         192.170.1.66/24
ipv4.gateway:                           192.170.1.1
ipv4.routes:                            --
...
# ipv6部分,主要是ipv6相关参数
ipv6.method:                            ignore
ipv6.dns:                               --
ipv6.dns-search:                        --
ipv6.dns-options:                       ""
ipv6.dns-priority:                      0
ipv6.addresses:                         --
ipv6.gateway:                           --
ipv6.routes:                            --
ipv6.route-metric:                      -1
ipv6.route-table:                       0 (unspec)
ipv6.routing-rules:                     --
ipv6.ignore-auto-routes:                否
ipv6.ignore-auto-dns:                   否
ipv6.never-default:                     否
ipv6.may-fail:                          是
ipv6.ip6-privacy:                       -1(unknown)
ipv6.addr-gen-mode:                     stable-privacy
...
# GENERAL部分是当前运行的参数
GENERAL.NAME:                           ens192
GENERAL.UUID:                           dd77bab7-d4f3-4cd2-ba8f-d345da061bf6
GENERAL.DEVICES:                        ens192
GENERAL.STATE:                          已激活
GENERAL.DEFAULT:                        是
GENERAL.DEFAULT6:                       否
GENERAL.SPEC-OBJECT:                    --
GENERAL.VPN:                            否
GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/1
GENERAL.ZONE:                           --
GENERAL.MASTER-PATH:                    --
...
#

消息字母为配置参数,大写字母为当前实际生效的配置参数。 以下参数需要特别注意

bash connection.autoconnect [yes|no]:是否需要启动这个网络连接 ipv4.method [auto|manual]:获取地址方式[自动|手动] ipv4.addresses [IP/Netmask]:手动指定IP地址及掩码 ipv4.gateway [GWIP]:设置网关的 IP 地址 ipv4.dns [DNSIP]:设置 DNS 服务器 的 IP 地址

二、静态地址配置

NetworkManager对一个网卡设备可以配置不同的配置,根据实际需求选择启用哪一个。

1.删除配置

[root@localhost ~]# nmcli connection delete ens192
Connection 'ens192' (dd77bab7-d4f3-4cd2-ba8f-d345da061bf6) successfully deleted.

2.新建配置

[root@localhost ~]# nmcli connection add con-name ens192-static type ethernet ifname ens192 \
>  ipv4.method manual ipv4.addresses 192.170.1.67/24  \
>  ipv4.gateway 192.170.1.1 ipv4.dns 218.2.135.1,8.8.8.8
Connection 'ens192-static' (dd77bab7-d4f3-4cd2-ba8f-d345da061bf6) successfully added.

3.启用指定配置

[root@localhost ~]# nmcli connection up ens192-static 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10)

4. 查看连接

[root@localhost ~]# nmcli connection 
NAME           UUID                                  TYPE      DEVICE
ens192-static  fcd5aa18-4357-454d-bdab-2d7fd0807a55  ethernet  ens192
lo             add9f515-6d76-42e1-8404-45422b8667f0  loopback  lo

5.查看运行后的信息

[root@localhost ~]# nmcli connection show ens192-static
connection.id:                          enp1s0-manual
connection.uuid:                        dd77bab7-d4f3-4cd2-ba8f-d345da061bf6
....
connection.interface-name:              enp1s0
connection.autoconnect:                 yes
....
ipv4.method:                            manual
ipv4.dns:                               218.2.135.1,8.8.8.8
....
ipv4.addresses:                         192.170.1.67/24
ipv4.gateway:                           192.170.1.1
....
IP4.ADDRESS[1]:                         192.170.1.67/24
IP4.GATEWAY:                            192.170.1.1
IP4.ROUTE[1]:                           dst = 192.168.10.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 192.170.1.1, mt = 100
IP4.DNS[1]:                             218.2.135.1
IP4.DNS[2]:                             8.8.8.8

6.查看配置文件

[root@localhost ~]# cat /etc/NetworkManager/system-connections/ens192-static.nmconnection

三、自动获取地址

1.新建 ens192-auto 配置

[root@localhost ~]# nmcli connection add con-name ens192-auto type ethernet ifname ens192 \
>  ipv4.method auto ipv4.addresses ''

[root@localhost ~]# nmcli connection
NAME           UUID                                  TYPE      DEVICE
ens192-static  fcd5aa18-4357-454d-bdab-2d7fd0807a55  ethernet  ens192
lo             add9f515-6d76-42e1-8404-45422b8667f0  loopback  lo
ens192-auto    24f5eeb1-3b37-4c5c-9479-cb8610e62f70  ethernet  --
# 你會發現,目前有作用的是 ens192-auto 這個項目!因為該項目的 DEVICE 有介面卡存在。
# 而剛剛建立的 ens192-auto 的 DEVICE 則為空!因為並沒有啟用啊!

2.启动自动获取配置

[root@localhost ~]# nmcli connection up ens192-auto
[root@localhost ~]# nmcli connection
NAME           UUID                                  TYPE      DEVICE
ens192-auto    24f5eeb1-3b37-4c5c-9479-cb8610e62f70  ethernet  ens192
lo             add9f515-6d76-42e1-8404-45422b8667f0  loopback  lo
ens192-manual  fcd5aa18-4357-454d-bdab-2d7fd0807a55  ethernet  --

3.查看配置信息

[root@localhost ~]# ip addr show ens192; route -n

四、设置默认配置

1.设置默认启用配置

这里以手动配置静态地址为默认配置

[root@localhost ~]# nmcli connection modify ens192-static connection.autoconnect yes
[root@localhost ~]# nmcli connection modify ens192-auto   connection.autoconnect no

2.关闭所有配置

[root@localhost ~]# nmcli connection down ens192-auto

3.查看当前状态

[root@localhost ~]# nmcli connection
NAME           UUID                                  TYPE      DEVICE
lo             add9f515-6d76-42e1-8404-45422b8667f0  loopback  lo
ens192-auto    24f5eeb1-3b37-4c5c-9479-cb8610e62f70  ethernet  --
ens192-static  fcd5aa18-4357-454d-bdab-2d7fd0807a55  ethernet  --
# 网络配置都没有应用到任何网卡

4.重启NetworkManager服务

[root@localhost ~]# systemctl restart NetworkManager
[root@localhost ~]# nmcli connection
NAME           UUID                                  TYPE      DEVICE
ens192-static  fcd5aa18-4357-454d-bdab-2d7fd0807a55  ethernet  ens192
lo             add9f515-6d76-42e1-8404-45422b8667f0  loopback  lo
ens192-auto    24f5eeb1-3b37-4c5c-9479-cb8610e62f70  ethernet  --
# 服务重启后,发现默认启用的配置是 ens192-static 

参考资料

[鸟哥网络配置] : https://linux.vbird.org/linux_server/rocky9/0160setnetwork.php