Linux网络管理服务———NetworkManager

时间:2025-03-19 10:29:36

目录

网络管理服务

网络管理工具

图形工具

伪图形工具

命令行工具

nmcli device 管理

nmcli 查看网卡和网卡配置文件的概述信息

删除网卡:nmcli device delete

disconnect:nmcli device disconnect

connect:nmcli device connect

查看网卡信息:nmcli device show

nmcli 管理网卡配置文件:nmcli connection

查看一个网卡配置文件

添加一块网卡配置文件

激活一个网卡配置文件

删除一个网卡配置文件

重新加载网卡配置文件

修改网卡配置文件

查看网卡文件详细信息


网络管理服务

在早期的Linux发行版本里几乎所有的网络服务都是network服务,从RHEL7开始红帽官方建议采用NetworkManager的“方式”配置网络,而不建议再使用network服务传统的方式配置网络。

网络是非常复杂的,需要配置的网络相关的参数非常多。早期配置网络的方法,几乎只有创建网卡配置文件,添加网络参数,修改网络参数,然后重启network服务,让network服务加载网卡配置文件到内存,然后让内核读取内存里面的网卡配置文件来获取网络配置。

NetworkManager早期的设计目的是为了统一网络配置,同一网络配置的意思就是以后所有网络相关的配置都使用NetworkManager来实现

NetworkManager服务提供了3种工具类配置网卡参数,无论哪种工具,都不需要手工的修改网卡配置文件。

确认NetworkManager服务是开启的,如果服务不开启,就无法使用NetworkManager。

[root@localhost ~]# systemctl status NetworkManager
●  - Network Manager
     Loaded: loaded (/usr/lib/systemd/system/; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-02-28 19:46:10 CST; 18h ago
       Docs: man:NetworkManager(8)
   Main PID: 1056 (NetworkManager)
      Tasks: 3 (limit: 23272)
     Memory: 9.6M
        CPU: 449ms
     CGroup: //
             └─1056 /usr/sbin/NetworkManager --no-daemon

Feb 29 14:40:54  NetworkManager[1056]: <info>  [1709188854.5595] dhcp4 (ens192): activation: beginning transaction (timeout in 45 seconds)
Feb 29 14:41:39  NetworkManager[1056]: <info>  [1709188899.5382] device (ens160): state change: ip-config -> failed (reason 'ip-config-unavailable', sys-ifac>
Feb 29 14:41:39  NetworkManager[1056]: <warn>  [1709188899.5389] device (ens160): Activation: failed for connection 'ens160'
Feb 29 14:41:39  NetworkManager[1056]: <info>  [1709188899.5390] device (ens192): state change: ip-config -> failed (reason 'ip-config-unavailable', sys-ifac>
Feb 29 14:41:39  NetworkManager[1056]: <info>  [1709188899.5395] manager: NetworkManager state is now DISCONNECTED
Feb 29 14:41:39  NetworkManager[1056]: <warn>  [1709188899.5397] device (ens192): Activation: failed for connection 'ens192'
Feb 29 14:41:39  NetworkManager[1056]: <info>  [1709188899.5401] device (ens160): state change: failed -> disconnected (reason 'none', sys-iface-state: 'mana>
Feb 29 14:41:39  NetworkManager[1056]: <info>  [1709188899.5446] dhcp4 (ens160): canceled DHCP transaction
Feb 29 14:41:39  NetworkManager[1056]: <info>  [1709188899.5455] device (ens192): state change: failed -> disconnected (reason 'none', sys-iface-state: 'mana>
Feb 29 14:41:39  NetworkManager[1056]: <info>  [1709188899.5496] dhcp4 (ens192): canceled DHCP transaction
lines 1-21/21 (END)

网络管理工具

图形工具

[root@localhost ~]# nm-connection-editor 

网络管理工具正常需要人为的指定配置文件和网卡名字的关系如果是在控制台操作,系统必须安装图形软件才可以调用出来图形界面。如果是远程操作,即使Linux并没有安装图形界面,远程的终端服务器必须安装了图形服务器软件才可以调用出图形。(Xming,XManager)

伪图形工具

[root@localhost ~]# nmtui

通过终端字符,模拟出图形界面,其实看到的图形不是真正的图形,而是字符组出来的。

命令行工具

nmcli (nmcli ---> network manager cli command line interface)

nmcli device 管理

nmcli 查看网卡和网卡配置文件的概述信息
[root@localhost ~]# nmcli device status
DEVICE  TYPE      STATE                                  CONNECTION            
ens192  ethernet  connecting (getting IP configuration)  Ethernet connection 1 
ens160  ethernet  disconnected                           --                    
lo      loopback  unmanaged                              --  

总共四列:

第一列表示网卡名称(内核label) 第二列是网卡的类型(内核label) 第三列是当前网卡的状态(指的是NetworkManager服务是否接管了这块网卡) 如果第三列是unmanaged,就表示该块网卡并没有被NetworkManager服务接管。如果网卡没有被NetworkManager服务接管,就意味着无法使用NetworkManager管理该网卡 如果第三列是disconnected,意味着该块网卡,并没有使用任何配置文件 如果第三列是connected,意味着该块网卡,正在使用某个配置文件 如果第三列是connecting状态,就意味着该网卡正在获取ip地址第四列表示当前网卡使用的配置文件是什么,如果有名字,就表示该网卡的配置文件就是那个名字。如果是"--"就表示该网卡当前没有配置文件。

nmcli 命令是可以不全的,但是要安装bash-completion-2.7-5.软件。

删除网卡:nmcli device delete
[root@localhost ~]# nmcli device delete ens192
Error: Device 'ens192' (/org/freedesktop/NetworkManager/Devices/3) deletion failed: This device is not a software device or is not realized
Error: not all devices deleted.

delete 只能删除软网卡,不能删除硬件网卡

disconnect:nmcli device disconnect

指定一个网卡,就能切断该网卡和当前配置文件的联系

[root@localhost ~]# nmcli device status
DEVICE  TYPE      STATE         CONNECTION 
ens160  ethernet  connected     ens160     
ens192  ethernet  disconnected  --         
lo      loopback  unmanaged     --             
[root@localhost ~]# nmcli device disconnect ens160
Device 'ens160' successfully disconnected.
[root@localhost ~]# nmcli device status
DEVICE  TYPE      STATE         CONNECTION 
ens160  ethernet  disconnected  --         
ens192  ethernet  disconnected  --         
lo      loopback  unmanaged     --   
connect:nmcli device connect

连接一个网卡与网络配置文件的联系

[root@localhost ~]# nmcli device connect ens160 
Device 'ens160' successfully activated with 'b7125524-1707-3b98-90d9-1311b8e18704'.
[root@localhost ~]# nmcli device status
DEVICE  TYPE      STATE         CONNECTION 
ens160  ethernet  connected     ens160     
ens192  ethernet  disconnected  --         
lo      loopback  unmanaged     --    
查看网卡信息:nmcli device show
[cui@bogon ~]$ nmcli device show ens160 
:                         ens160
:                           ethernet
:                         00:0C:29:71:94:D2
:                            1500
:                          100 (connected)
:                     ens160
-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/12
:               on
[1]:                         192.168.100.129/24
:                            192.168.100.2
[1]:                           dst = 192.168.100.0/24, nh = 0.0.0.0, mt = 101
[2]:                           dst = 0.0.0.0/0, nh = 192.168.100.2, mt = 101
[1]:                             114.114.114.114
[1]:                         fe80::20c:29ff:fe71:94d2/64
:                            --
[1]:                           dst = fe80::/64, nh = ::, mt = 1024
[cui@bogon ~]$ nmcli device show ens192 
:                         ens192
:                           ethernet
:                         00:0C:29:71:94:DC
:                            1500
:                          30 (disconnected)
:                     --
-PATH:                       --
:               on
:                            --
:                            --

nmcli 管理网卡配置文件:nmcli connection

  • 常用的设施网卡配置文件的参数

    • ip地址

    • ip掩码

    • ip gatway

    • ip dns

    • ip method(手动配置还是dhcp自动获取地址)

    • ip autoconnect(开机是否自动连接配置文件)

注意:操作网卡配置文件非常危险

私有云云服务器上的网卡一般是4~8块,2块用作管理网络,2块用作traffic网络,2块用作存储网卡(如果使用本地存储,就不需要存储网卡),2块额外的网卡做高速虚拟化网卡转发(SR-IOV)

服务器上最少两块onboard(板载)的网卡,至少千兆,通过PCI总线接的外部网卡,至少万兆(光模块)

一般来说,管理网卡(控制网络的网卡)配置文件是装系统的时候就配好了,我们操作网卡配置文件,一般都是操作数据网络的网卡和存储网络的网卡。如果你是远程连接,误操作将管理网络配置文件配置错误,导致无法远程连接,最坏的情况就是要去机房将其修复。

1、添加一个网卡配置文件

nmcli connection add 

2、删除一个网卡配置文件

nmcli connection delete

3、激活一个网卡配置文件

nmcli connection up 

4、关闭一个网卡配置文件

nmcli connection down

5、查看一个网卡配置文件

nmcli connection show
 

6、重新加载一个网卡配置文件

nmcli connection reload 

我们通过nmcli connection操作网卡配置文件,默认目录都在

# 在rhel9种,网卡的配置文件这个目录中
[root@bogon ~]# ls /etc/NetworkManager/system-connections/
  

# 在rhel9之前,网卡的配置文件在中
[root@bogon ~]# ls /etc/sysconfig/network-scripts/
查看一个网卡配置文件
[root@bogon ~]# nmcli connection show
NAME    UUID                                  TYPE      DEVICE 
ens160  b7125524-1707-3b98-90d9-1311b8e18704  ethernet  ens160 
ens192  0ccad405-4cd0-31ec-b845-46389f1c5a56  ethernet  --    

第一列NAME表示网卡配置文件的名称,该名称可以重复,但是不建议重复

第二列表示网卡配置文件的UUID,UUID一定不会重复,当名字重复的时候,UUID不会重复

第三列TYPE表示该网卡配置文件的类型,一般都是ethernet

第四列表示配置文件服务于哪个网卡(DEVICE)

配置网卡配置文件的守则

我是谁,我在哪,我要干什么 只有root才能操作网卡配置文件,因为网卡配置文件要最终关联到网卡。

千万不要操作管理网卡

添加一块网卡配置文件
[root@bogon ~]# nmcli connection add ifname ens192 type ethernet con-name ens192-1  192.168.200.200  114.114.114.114  manual 
Connection 'ens192-1' (bff9e051-20da-427b-a3a6-d20a97e9d213) successfully added.
[root@bogon ~]# nmcli connection show 
NAME      UUID                                  TYPE      DEVICE 
ens160    b7125524-1707-3b98-90d9-1311b8e18704  ethernet  ens160 
ens192    0ccad405-4cd0-31ec-b845-46389f1c5a56  ethernet  --     
ens192-1  bff9e051-20da-427b-a3a6-d20a97e9d213  ethernet  --    
[root@bogon ~]# nmcli connection up 
ens160    ens192    ens192-1  filename  help      id        path      uuid  
[root@bogon ~]# nmcli connection show 
NAME      UUID                                  TYPE      DEVICE 
ens160    b7125524-1707-3b98-90d9-1311b8e18704  ethernet  ens160 
ens192-1  bff9e051-20da-427b-a3a6-d20a97e9d213  ethernet  ens192 
ens192    0ccad405-4cd0-31ec-b845-46389f1c5a56  ethernet  --     

添加网卡配置有三个必须的参数con-name(配置文件的名称)、type、(配置文件的类型)ifname(配置文件的网卡)

只有这三个参数的情况下,使用的是DHCP进行自动分配IP

如果需要手动配置ip,则需要使用这个参数

如果一个网卡没有配置文件,那么添加之后就会直接将这个配置文件应用于这块网卡

激活一个网卡配置文件

如果一个网卡有多个配置文件,可以激活自己所需要的配置文件

[root@bogon ~]# nmcli connection show 
NAME      UUID                                  TYPE      DEVICE 
ens160    b7125524-1707-3b98-90d9-1311b8e18704  ethernet  ens160 
ens192-1  47fe36e3-ccc2-4c92-800d-ddcd1360f291  ethernet  ens192 
ens192    0ccad405-4cd0-31ec-b845-46389f1c5a56  ethernet  --     
ens192-2  bf4334d1-c3fb-4399-a2e0-002924240666  ethernet  --     
ens192-3  208db02d-6b8f-447d-91c3-59690de34be3  ethernet  --     
[root@bogon ~]# nmcli device status 
DEVICE  TYPE      STATE      CONNECTION 
ens160  ethernet  connected  ens160     
ens192  ethernet  connected  ens192-1   
lo      loopback  unmanaged  --          

可以看到 ens192这块网卡是用的是ens192-1这个配置文件,我们现在让他使用ens192-2这块网卡

[root@bogon ~]# nmcli connection up ens192-2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/19)
[root@bogon ~]# nmcli connection show 
NAME      UUID                                  TYPE      DEVICE 
ens160    b7125524-1707-3b98-90d9-1311b8e18704  ethernet  ens160 
ens192-2  bf4334d1-c3fb-4399-a2e0-002924240666  ethernet  ens192 
ens192    0ccad405-4cd0-31ec-b845-46389f1c5a56  ethernet  --     
ens192-1  47fe36e3-ccc2-4c92-800d-ddcd1360f291  ethernet  --     
ens192-3  208db02d-6b8f-447d-91c3-59690de34be3  ethernet  --     
[root@bogon ~]# nmcli device status 
DEVICE  TYPE      STATE      CONNECTION 
ens160  ethernet  connected  ens160     
ens192  ethernet  connected  ens192-2   
lo      loopback  unmanaged  --         

可以看到现在使用的是ens192-2这个网卡配置

删除一个网卡配置文件
## 使用NAME进行删除
[root@bogon ~]# nmcli connection delete ens192-1
Connection 'ens192-1' (47fe36e3-ccc2-4c92-800d-ddcd1360f291) successfully deleted.
## 使用uuid删除
[root@bogon ~]# nmcli connection delete 208db02d-6b8f-447d-91c3-59690de34be3
Connection 'ens192-3' (208db02d-6b8f-447d-91c3-59690de34be3) successfully deleted.
[root@bogon ~]# nmcli connection delete ens192
Connection 'ens192' (0ccad405-4cd0-31ec-b845-46389f1c5a56) successfully deleted.
[root@bogon ~]# nmcli connection show 
NAME      UUID                                  TYPE      DEVICE 
ens160    b7125524-1707-3b98-90d9-1311b8e18704  ethernet  ens160 
ens192-2  bf4334d1-c3fb-4399-a2e0-002924240666  ethernet  ens192 
重新加载网卡配置文件

如果手工修改了配置文件,需要将修改的配置文件加载到内存中,在激活,才能生效

[root@bogon ~]# nmcli connection reload 
[root@bogon ~]# nmcli connection up ens192-2 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/20)
[root@bogon ~]# ip a show ens192 
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:71:94:dc brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    inet 192.168.200.101/32 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::b9c6:781:a9ec:8006/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
修改网卡配置文件
[root@bogon ~]# nmcli connection modify ens192-2  192.168.200.250
[root@bogon ~]# ip a show ens192 
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:71:94:dc brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    inet 192.168.200.101/32 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::b9c6:781:a9ec:8006/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@bogon ~]# nmcli connection up ens192-2 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/22)
[root@bogon ~]# ip a show ens192 
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:71:94:dc brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    inet 192.168.200.250/32 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::b9c6:781:a9ec:8006/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

参数,定义autoconnect的开和关

[root@bogon ~]# nmcli connection modify ens192-2  yes

modify 的参数和 add 的有90%的相似度

查看网卡文件详细信息
[root@bogon ~]# nmcli connection show ens192-2 > 
[root@bogon ~]# cat  
:                          ens192-2
:                        bf4334d1-c3fb-4399-a2e0-002924240666
-id:                   --
:                        802-3-ethernet
-name:              ens192        # 作用于那个网卡
:                 no
-priority:        0
-retries:         -1 (default)
-connect:               0 (default)
-retries:                -1
:                   1709270614
-only:                   no
:                 --
:                        --
:                      --
-type:                  --
-slaves:          -1 (default)
:                 --
-ping-timeout:        0
:                     unknown
:                        default
:                        -1 (default)
:                       -1 (default)
-over-tls:                -1 (default)
-device-timeout:         -1
:                    --
:                   0
:                  --
-negotiate:          no
-address:             --
-mac-address:      --
-mac-address-mask:--
-address-blacklist:   --
:                     auto
802-3-ethernet.s390-subchannels:        --
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            --
-on-lan:             default
-on-lan-password:    --
-all-mac-addresses:-1 (default)
:                            manual
:                               8.8.8.8
-search:                        --
-options:                       --
-priority:                      0
:                         192.168.200.250/32
:                           --
:                            --
-metric:                      -1
-table:                       0 (unspec)
-rules:                     --
-auto-routes:                no
-auto-dns:                   no
-client-id:                    --
-iaid:                         --
-timeout:                      0 (default)
-send-hostname:                yes
-hostname:                     --
-fqdn:                         --
-hostname-flags:               0x0 (none)
-default:                     no
-fail:                          yes
-timeout:                  -1 (default)
-timeout:                       -1 (default)
-vendor-class-identifier:      --
-reject-servers:               --
:                            auto
:                               --
-search:                        --
-options:                       --
-priority:                      0
:                         --
:                           --
:                            --
-metric:                      -1
-table:                       0 (unspec)
-rules:                     --
-auto-routes:                no
-auto-dns:                   no
-default:                     no
-fail:                          yes
-timeout:                  -1 (default)
ipv6.ip6-privacy:                       -1 (unknown)
-gen-mode:                     stable-privacy
-timeout:                        0 (default)
-duid:                         --
-iaid:                         --
-timeout:                      0 (default)
-send-hostname:                yes
-hostname:                     --
-hostname-flags:               0x0 (none)
:                             --
:                           none
-only:                     no
-url:                          --
-script:                       --
:                           ens192-2
:                           bf4334d1-c3fb-4399-a2e0-002924240666
:                        ens192
-IFACE:                       ens192
:                          activated
:                        no
GENERAL.DEFAULT6:                       no
-OBJECT:                    --
:                            no
-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/24
-PATH:                       /org/freedesktop/NetworkManager/Settings/10
:                           --
-PATH:                    --
[1]:                         192.168.200.250/32
:                            --
[1]:                             8.8.8.8
[1]:                         fe80::b9c6:781:a9ec:8006/64
:                            --
[1]:                           dst = fe80::/64, nh = ::, mt = 1024

如果需要修改网卡配置文件,可以用 modify进行修改