一、NetworkManager介紹
1.1、Anolis8網(wǎng)絡(luò)配置的區(qū)別
在 CentOS7上同時(shí)支持network.service和NetworkManager.service。默認(rèn)情況下,這2個(gè)服務(wù)都有開啟。在Anolis8和CentOS8上,已廢棄network.service(只能手動(dòng)去安裝),默認(rèn)安裝的是NetworkManager.service,因此推薦通過(guò)NetworkManager.service進(jìn)行網(wǎng)絡(luò)配置,網(wǎng)卡配置包括設(shè)置動(dòng)態(tài)和靜態(tài)IP。
1.2、NetworkManager作用
NetworkManager是2004年Red Hat啟動(dòng)的項(xiàng)目,旨在能夠讓Linux用戶更輕松地處理現(xiàn)代網(wǎng)絡(luò)需求,尤其是無(wú)線網(wǎng)絡(luò),能自動(dòng)發(fā)現(xiàn)網(wǎng)卡并配置ip地址。類似在手機(jī)上同時(shí)開啟wifi和蜂窩網(wǎng)絡(luò),Anolis8網(wǎng)絡(luò)自動(dòng)探測(cè)可用網(wǎng)絡(luò)并連接,無(wú)需手動(dòng)切換Anolis8網(wǎng)卡。
1.3、NetworkManager支持的網(wǎng)絡(luò)
有線網(wǎng)卡、無(wú)線網(wǎng)卡
動(dòng)態(tài)ip、靜態(tài)ip
以太網(wǎng)、非以太網(wǎng)
物理網(wǎng)卡、虛擬網(wǎng)卡
1.4、NetworkManager使用方式
nmcli:命令行
nmtui:在shell終端開啟文本圖形界面
Freedesktop applet:如GNOME上自帶的網(wǎng)絡(luò)管理工具
cockpit:redhat自帶的基于web圖形界面的"駕駛艙"工具,具有dashborad和基礎(chǔ)管理功能
使用 nmcli 時(shí),NetworkManager 必須保持開啟。
NetworkManager 的相關(guān)命令:
查看運(yùn)行狀態(tài):systemctl status NetworkManager
啟動(dòng):systemctl start NetworkManager
重啟:systemctl restart NetworkManager
關(guān)閉:systemctl stop NetworkManager
查看是否開機(jī)啟動(dòng):systemctl is-enabled NetworkManager
[root@anolis8 ~]# systemctl is-enabled NetworkManager
enabled
開機(jī)啟動(dòng):systemctl enable NetworkManager
禁止開機(jī)啟動(dòng):systemctl disable NetworkManager
注意:NetworkManager 中開頭的 N 和中間的 M 必須大寫。
二、nmcli常用命令
2.1、nmcli介紹
在NetworkManager里,有2個(gè)維度:連接(connection)和設(shè)備(device),可以為一個(gè)設(shè)備配置多個(gè)連接,這里特別需要指出的是,一個(gè)設(shè)備只能有一個(gè)活躍連接,每個(gè)連接可以理解為一個(gè) ifcfg 配置文件。
2.2、顯示 NetworkManager 是否接管網(wǎng)絡(luò)設(shè)置:
[root@anolis8 ~]# nmcli networking
enabled
networking 可以簡(jiǎn)寫為 n、ne、net、netw…… 所以以上命令可以簡(jiǎn)寫為:
nmcli n
2.3、查看網(wǎng)絡(luò)連接狀態(tài):
[root@anolis ~]# nmcli n connectivity
full
網(wǎng)絡(luò)連接狀態(tài)共有五種:full、limited(連網(wǎng),但無(wú)法上網(wǎng))、portal(連網(wǎng),但需要認(rèn)證登錄后才能上網(wǎng))、none(沒連網(wǎng))和 unknown。
connectivity 可以簡(jiǎn)寫為 c,所以以上命令可簡(jiǎn)寫為:
[root@anolis ~]# nmcli n c
full
2.4、設(shè)定 NetworkManager 接管網(wǎng)絡(luò)設(shè)置:
nmcli n on
取消 NetworkManager 接管網(wǎng)絡(luò)設(shè)置:
nmcli n off
2.5、nmcli general
顯示系統(tǒng)網(wǎng)絡(luò)狀態(tài):
[root@anolis8 ~]# nmcli general status
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
已連接 完全 已啟用 已啟用 已啟用 已啟用
general 可以簡(jiǎn)寫為 g、ge、gen、gene……
status 是 general 的默認(rèn)項(xiàng),可以省略不寫。所以,以上命令可簡(jiǎn)寫為:
[root@anolis8 ~]# nmcli g
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
已連接 完全 已啟用 已啟用 已啟用 已啟用
connected full enabled enabled enabled enabled
其中:
STATE 顯示網(wǎng)絡(luò)是否連接;
CONNECTIVITY 與前面介紹的 nmcli networking connectivity 相同;
WIFI-HW 表示 WIFI 硬件開關(guān)、WIFI 表示 WIFI 軟件開關(guān);
WWAN-HW 表示 WWAN 硬件開關(guān)、WWAN 表示 WWAN 軟件開關(guān)。
HW 代表 HardWare,WWAN 代表 Wireless Wide Area Network。
2.6、顯示主機(jī)名:
[root@anolis8 ~]# nmcli g hostname
anolis8
[root@anolis8 ~]# nmcli g h
anolis8
更改主機(jī)名:
nmcli g hostname newHostName # 或
nmcli g h newHostName
newHostName是你設(shè)置的新主機(jī)名。
主機(jī)名存放在 /etc/hostname 文件中。
修改主機(jī)名后,需要重啟 NetworkManager。
2.7、顯示所有網(wǎng)絡(luò)連接的信息:
[root@anolis8 ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens192 c296eeaa-0c9a-4621-8b32-4903e26009f9 ethernet ens192
connection 可以簡(jiǎn)寫為 c、co、con、conn……
show 是 connection 的默認(rèn)項(xiàng),可以省略不寫。所以,以上命令可簡(jiǎn)寫為:
[root@anolis8 ~]# nmcli c
NAME UUID TYPE DEVICE
ens192 c296eeaa-0c9a-4621-8b32-4903e26009f9 ethernet ens192
nmcli connection show 有一個(gè) -active 參數(shù),可以只顯示當(dāng)前啟動(dòng)的連接:
nmcli c s --active # 或
nmcli c s -a # 因?yàn)?show 后面有參數(shù)項(xiàng),所以此時(shí)的 show 不能省
[root@anolis8 ~]# nmcli c s -a
NAME UUID TYPE DEVICE
ens192 c296eeaa-0c9a-4621-8b32-4903e26009f9 ethernet ens192
顯示某一特定連接的詳細(xì)信息(以 ens192 為例):
[root@anolis8 ~]# nmcli c s ens192
connection.id: ens192
connection.uuid: c296eeaa-0c9a-4621-8b32-4903e26009f9
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: ens192
connection.autoconnect: 是
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0(default)
connection.auth-retries: -1
connection.timestamp: 1664789124
connection.read-only: 否
......
DHCP4.OPTION[25]: subnet_mask = 255.255.255.0
IP6.ADDRESS[1]: fe80::18b9:6600:f377:2d7b/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
2.8、啟動(dòng)指定連接:
[root@anolis8 ~]# nmcli c up ens192
連接已成功激活(D-Bus 活動(dòng)路徑:/org/freedesktop/NetworkManager/ActiveConnection/2)
如果 ens192 本來(lái)就出于連接狀態(tài),那此命令會(huì)重啟 ens192。
關(guān)閉指定連接:
nmcli c down ens192
關(guān)閉連接后,使用 nmcli c 命令, DEVICE 項(xiàng)將顯示為 – 。
2.9、修改連接:
nmcli c modify ens192 [ + | - ]選項(xiàng) 選項(xiàng)值 # 或
nmcli c m ens192 [ + | - ]選項(xiàng) 選項(xiàng)值
下面給出常用修改示例:
nmcli c m ens192 ipv4.address 192.168.100.83/24 # 修改 IP 地址和子網(wǎng)掩碼
nmcli c m ens192 ipv4.method manual # 修改為靜態(tài)配置,默認(rèn)是 auto
nmcli c m ens192 ipv4.gateway 192.168.100.1 # 修改默認(rèn)網(wǎng)關(guān)
nmcli c m ens192 ipv4.dns 192.168.100.1 # 修改 DNS
nmcli c m ens192 +ipv4.dns 114.114.114.114 # 添加一個(gè) DNS
nmcli c m ens192 ipv6.method disabled # 將 IPv6 禁用
nmcli c m ens192 connection.autoconnect yes # 開機(jī)啟動(dòng)
注意,必須先修改 ipv4.address,然后才能修改 ipv4.method!
用空引號(hào)""代替選項(xiàng)的值,可將選項(xiàng)設(shè)回默認(rèn)值(以 ipv4.method 為例):
nmcli c m ens192 ipv4.method ""
選項(xiàng)有很多,詳細(xì)信息可以通過(guò)以下命令查看:
man 5 nm-settings-nmcli
主要可以看里面 connection setting 和 ipv4 setting 部分。
2.10、新增連接:
nmcli c add tyep 連接類型 選項(xiàng) 選項(xiàng)值 # 或
nmcli c a tyep 連接類型 選項(xiàng) 選項(xiàng)值
type 為必選項(xiàng),我們通常用到的是 802-3-ethernet(別名 ethernet)。
選項(xiàng)與前面介紹的“修改連接”中的選項(xiàng)一樣,其中重要的幾個(gè)選項(xiàng):
connection.id(別名 con-name):連接名;
connection.interface-name(別名 ifname):設(shè)備名;
connection.autoconnect(別名 autoconnect):是否開機(jī)自啟,其值只能是 yes 或 no,默認(rèn) yes。
下面給出一個(gè)示例:
nmcli c a type ethernet con-name ens36 ifname ens36
2.11、刪除指定連接:
nmcli c delete ens33 # 或
nmcli c de ens33 # delete 不可簡(jiǎn)寫為 d,否則與 down 沖突,但可以簡(jiǎn)寫為 de
2.12、重載所有連接的配置文件:
nmcli c reload # 或
nmcli c r
重載某一指定連接的配置文件:
nmcli c load ifcfg-ens192 # 或
nmcli c l ifcfg-ens192
網(wǎng)絡(luò)配置文件默認(rèn)保存在 /etc/sysconfig/network-scripts/ 路徑下,如果配置文件在其它位置,則需要填寫完整路徑。
網(wǎng)絡(luò)配置文件的命名方式就是ifcfg-連接名,例如 ens33 的配置文件名為ifcfg-ens33。
網(wǎng)絡(luò)配置文件說(shuō)明:
TYPE="Ethernet" //以太網(wǎng),還有其他的如bond,bridge
PROXY_METHOD="none"http://默認(rèn)代理方式:關(guān)閉狀態(tài)
BROWSER_ONLY="no" //默認(rèn)只是瀏覽器:否
BOOTPROTO="none" //dhcp 表示動(dòng)態(tài)獲取IP地址, static 表示表態(tài)IP,none表示不指定,就是靜態(tài)
DEFROUTE="yes" //默認(rèn)路由:是
IPV4_FAILURE_FATAL="no" //是否開啟IPV4致命錯(cuò)誤檢測(cè):否
IPV6INIT="yes" //默認(rèn)IPV6是否自動(dòng)初始化: 是
IPV6_AUTOCONF="yes" //默認(rèn)IPV6是否自動(dòng)配置:是
IPV6_DEFROUTE="yes" //默認(rèn)IPV6是否默認(rèn)路由:是
IPV6_FAILURE_FATAL="no" //如果IPv4或IPv6配置失敗,此接口將被禁用,否:如果配置失敗,此接口不會(huì)被禁用
IPV6_ADDR_GEN_MODE="stable-privacy" //IPV6地址生成模型
NAME="ens192" //名稱
UUID="51e111fd-ec09-44f5-8163-81d8f8ebc8f4" //唯一ID
DEVICE="ens192" //設(shè)備名稱
ONBOOT="yes" //開啟啟動(dòng)
IPADDR="192.168.100.83" //IP
PREFIX="24" //子網(wǎng)掩碼長(zhǎng)度
GATEWAY="192.168.100.1" //網(wǎng)關(guān)
DNS1="114.114.114.114" //DNS1
DNS2="8.8.8.8" //DNS1
IPV6_PRIVACY="no" //IPV6隱私
2.13、顯示所有網(wǎng)絡(luò)接口設(shè)備的狀態(tài):
nmcli device status
device 可以簡(jiǎn)寫為 d、de、dev……
status 是 device 的默認(rèn)項(xiàng),可以省略不寫。所以,以上命令可簡(jiǎn)寫為:
[root@anolis8 ~]# nmcli d
DEVICE TYPE STATE CONNECTION
ens192 ethernet 已連接 ens192
lo loopback 未托管 --
[root@anolis8 ~]# nmcli device
DEVICE TYPE STATE CONNECTION
ens192 ethernet 已連接 ens192
lo loopback 未托管 --
顯示所有設(shè)備的詳細(xì)信息:
nmcli d show # 或
nmcli d sh # show 不可簡(jiǎn)寫為 s,否則與 status 沖突,但可以簡(jiǎn)寫為 sh
[root@anolis8 ~]# nmcli d sh
GENERAL.DEVICE: ens192
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:5D:B2:19
GENERAL.MTU: 1500
GENERAL.STATE: 100(已連接)
GENERAL.CONNECTION: ens192
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER: 開
IP4.ADDRESS[1]: 192.168.100.83/24
IP4.GATEWAY: 192.168.100.1
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 192.168.100.1, mt = 100
IP4.ROUTE[2]: dst = 192.168.100.0/24, nh = 0.0.0.0, mt = 100
IP4.DNS[1]: 192.168.100.1
IP4.DNS[2]: 4.2.2.2
IP6.ADDRESS[1]: fe80::18b9:6600:f377:2d7b/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
GENERAL.DEVICE: lo
GENERAL.TYPE: loopback
GENERAL.HWADDR: 00:00:00:00:00:00
GENERAL.MTU: 65536
GENERAL.STATE: 10(未托管)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
IP4.ADDRESS[1]: 127.0.0.1/8
IP4.GATEWAY: --
IP6.ADDRESS[1]: ::1/128
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = ::1/128, nh = ::, mt = 256
2.14、顯示某一特定設(shè)備的詳細(xì)信息:
[root@anolis8 ~]# nmcli d sh ens192
GENERAL.DEVICE: ens192
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:5D:B2:19
GENERAL.MTU: 1500
GENERAL.STATE: 100(已連接)
GENERAL.CONNECTION: ens192
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER: 開
IP4.ADDRESS[1]: 192.168.100.83/24
IP4.GATEWAY: 192.168.100.1
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 192.168.100.1, mt = 100
IP4.ROUTE[2]: dst = 192.168.100.0/24, nh = 0.0.0.0, mt = 100
IP4.DNS[1]: 192.168.100.1
IP4.DNS[2]: 4.2.2.2
IP6.ADDRESS[1]: fe80::18b9:6600:f377:2d7b/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
2.15、連接設(shè)備:
nmcli d connect ens192 # 或
nmcli d c ens192
如果 ens192 本來(lái)就出于連接狀態(tài),那此命令會(huì)重啟 ens192。
2.16、斷開設(shè)備:
nmcli d disconnect ens33 # 或
nmcli d d ens33
更新設(shè)備信息:
nmcli d reapply ens33 # 或
nmcli d r ens33
只有在設(shè)備處于連接狀態(tài),才可以更新設(shè)備。
更新設(shè)備相當(dāng)于重啟連接。
2.17、Anolis8網(wǎng)絡(luò)切換連接
[root@anolis8 ~]# nmcli c up ens192
連接已成功激活(D-Bus 活動(dòng)路徑:/org/freedesktop/NetworkManager/ActiveConnection/3)
2.18、Anolis8網(wǎng)絡(luò)查看IP
[root@anolis8 ~]# nmcli
ens192: 已連接 到 ens192
"VMware VMXNET3"
ethernet (vmxnet3), 00:0C:29:5D:B2:19, 硬件, mtu 1500
ip4 默認(rèn)
inet4 192.168.100.83/24
route4 0.0.0.0/0
route4 192.168.100.0/24
inet6 fe80::18b9:6600:f377:2d7b/64
route6 fe80::/64
route6 ff00::/8
lo: 未托管
"lo"
loopback (unknown), 00:00:00:00:00:00, 軟件, mtu 65536
DNS configuration:
servers: 192.168.100.1 4.2.2.2
interface: ens192
使用 "nmcli device show" 獲取關(guān)于已知設(shè)備的完整信息,以及
"nmcli connection show" 獲取活動(dòng)連接配置集的概述。
完整的用法細(xì)節(jié),可參考 nmcli(1) 和 nmcli-examples(7) 手冊(cè)頁(yè)。
2.19、CentOS8網(wǎng)絡(luò)啟用網(wǎng)卡ensX,例如ens160
nmcli c up ens160
2.20、Anolis8網(wǎng)絡(luò)停止connection
nmcli c down
2.21、CentOS8網(wǎng)絡(luò)刪除connection
nmcli c delete ens160
2.23、立即生效connection
nmcli c up ens160
nmcli d reapply ens160
nmcli d connect ens160
2.24、關(guān)閉網(wǎng)絡(luò)
nmcli r all off
三、常見的AnolisOS 8網(wǎng)卡配置方式
通過(guò)NetworkManager進(jìn)行AnolisOS 8網(wǎng)卡配置時(shí)候,會(huì)自動(dòng)將connection同步到ifcfg配置文件中,這里特別指出eth和ens的區(qū)別,ethX是真實(shí)物理網(wǎng)卡,ensX是虛擬網(wǎng)絡(luò)會(huì)話。
手工配置ifcfg,通過(guò)NetworkManager來(lái)生效
通過(guò)NM自帶工具配ip,比如nmcli
手工配置ifcfg,通過(guò)傳統(tǒng)network.service來(lái)生效
3.1、通過(guò)手工配置AnolisOS 8網(wǎng)卡ifcfg的方式
這里推薦使用上述第1種AnolisOS 8網(wǎng)卡配置方法,就是手工配置ifcfg,通過(guò)NetworkManager來(lái)生效,因?yàn)檫@樣既兼容了傳統(tǒng)的ifcfg配置,又能熟悉nmcli。
打開配置文件,ifcfg-開頭的,根據(jù)實(shí)際名稱修改。例如我的機(jī)器是ifcfg-ens192
vi /etc/sysconfig/network-scripts/ifcfg-ens192
配置參數(shù)示例,大家可以根據(jù)實(shí)際接入的網(wǎng)絡(luò)進(jìn)行配置AnolisOS 8網(wǎng)卡,試試吧已經(jīng)對(duì)此配置做了詳細(xì)備注。
TYPE="Ethernet" //以太網(wǎng),還有其他的如bond,bridge
PROXY_METHOD="none"http://默認(rèn)代理方式:關(guān)閉狀態(tài)
BROWSER_ONLY="no" //默認(rèn)只是瀏覽器:否
BOOTPROTO="none" //dhcp 表示動(dòng)態(tài)獲取IP地址, static 表示表態(tài)IP,none表示不指定,就是靜態(tài)
DEFROUTE="yes" //默認(rèn)路由:是
IPV4_FAILURE_FATAL="no" //是否開啟IPV4致命錯(cuò)誤檢測(cè):否
IPV6INIT="yes" //默認(rèn)IPV6是否自動(dòng)初始化: 是
IPV6_AUTOCONF="yes" //默認(rèn)IPV6是否自動(dòng)配置:是
IPV6_DEFROUTE="yes" //默認(rèn)IPV6是否默認(rèn)路由:是
IPV6_FAILURE_FATAL="no" //如果IPv4或IPv6配置失敗,此接口將被禁用,否:如果配置失敗,此接口不會(huì)被禁用
IPV6_ADDR_GEN_MODE="stable-privacy" //IPV6地址生成模型
NAME="ens192" //名稱
UUID="51e111fd-ec09-44f5-8163-81d8f8ebc8f4" //唯一ID
DEVICE="ens192" //設(shè)備名稱
ONBOOT="yes" //開啟啟動(dòng)
IPADDR="192.168.100.83" //IP
PREFIX="24" //子網(wǎng)掩碼長(zhǎng)度
GATEWAY="192.168.100.1" //網(wǎng)關(guān)
DNS1="114.114.114.114" //DNS1
DNS2="8.8.8.8" //DNS1
IPV6_PRIVACY="no" //IPV6隱私
3.2、CentOS8網(wǎng)卡配置后重啟網(wǎng)絡(luò)
systemctl restart NetworkManager
3.3、檢測(cè)網(wǎng)絡(luò)狀態(tài)
ping www.baidu.com
curl www.baidu.com
四、網(wǎng)絡(luò)重啟
CentOS 8 、Red Hat 8、Anolis 8 、fedora 33/34/35 、Alibaba Cloud Linux 3操作系統(tǒng),請(qǐng)執(zhí)行以下操作:
a. 執(zhí)行以下命令,重新加載所有網(wǎng)卡配置。
nmcli c reload
b. 執(zhí)行以下命令,激活網(wǎng)卡。
nmcli d connect eth0