一、nmcli簡介
?1.1、NetworkManager簡介
? 1.1.1、NetworkManager介紹
????????在紅帽系的Linux中,默認的網絡服務是由NetworkManager提供的(其主要是一個可以進行動態網絡配置和控制的守護進程)。
序號 | 使用NetworkManager的優點 |
1 | 可更加輕松高效的對網絡進行配置 (NetworkManager可確保網絡連接的正常工作,但發現系統中沒有網絡配置但存在網絡設備時,會創建臨時連接) |
2 | 支持配置的靈活性 (可以直接配置或修改網絡別名、IP地址、靜態路由、DNS等許多特定的連接參數) |
3 | 提供與用戶的簡單網絡連接設置 (提供不同的管理工具進行網絡配置【如:GUI、nmtui、nmcli】) |
4 | 通過D-Bus提供Api,允許應用程序查詢和控制網絡配置和狀態 (應用程序可以通過D-Bus的api檢查或配置網絡) |
5 | 重啟過程后保持設備狀態,并接管在重啟過程中將其設定為受管模式的接口 |
6 | 處理沒有被顯式設置但由用戶或其他網絡設備手動控制的設備 |
? 1.1.2、NetworkManager的安裝與啟動
????????默認情況下,NetworkManager是安裝在紅帽系的Linux中的,不用安裝,若當前系統中沒有可以按照如下步驟檢查操作安裝:
-- 1、查看NetworkManager的運行狀態(顯示 Active: inactive (dead)表示沒有啟動需要啟動)
systemctl status NetworkManager-- 2、若查看NetworkManager運行狀態報錯則可以使用root用戶權限安裝
yum install NetworkManager-- 3、啟動NetworkManager(停止用stop)
systemctl start NetworkManager-- 4、設置NetworkManager在系統開機自啟(禁用開機自啟用 disable)
systemctl enable NetworkManager
使用 systemd 管理服務https://docs.redhat.com/en/documentation/Red_Hat_Enterprise_Linux/7/html/system_administrators_guide/chap-managing_services_with_systemd
?1.2、nmcli簡介
?????????【nmcli】是(NetworkManager)的命令行工具,用于控制NetworkManager和報告網絡狀態情況,可讓用戶和腳本與?NetworkManager?交互;且nmcli?可以在沒有 GUI 的系統上使用;nmcli可以用于創建、顯示、編輯、刪除、激活和停用網絡連接,以及控制和顯示網絡設備狀態。
序號 | nmcli可以讓用戶和腳本用于控制網絡 |
1 | 對于服務器和終端,nmcli可以直接控制NetworkManager,且不需要GUI,就可以進行創建、編輯、啟動和停止網絡連接,以及查看網絡狀態 |
2 | 對于腳本,nmcli支持更適合腳本處理的terse輸出格式。它是集成網絡配置而不是手動管理網絡連接的一種方式 |
????????由于在Red Hat Enterprise Linux 8【rhel8】以后版本上,在【/etc/sysconfig/network-scripts/】里也看不到任何腳本文件;也就是說沒有傳統的network.service了【即:無法使用systemctl restart network命令啟動網絡了】,所以在rhel8之后的版本必須啟用NetworkManager,否則無法使用網絡。
--查看系統詳情的2種命令
-- 1、直接使用系統自帶的文件查看
cat /etc/os-release-- 2、使用第三方包查看
lsb_release -a
? 如下是Centos7的網絡情況(可以看到【/etc/sysconfig/network-scripts/】路徑下有很多的網絡文件內容):
? ? 如下是Centos8的網絡情況(可以看到【/etc/sysconfig/network-scripts/】路徑下只有一個網絡文件了):
? 如下是平滑替換Centos的系統AImaLinux的網絡情況(可以看到【/etc/sysconfig/network-scripts/】路徑下都沒有網絡文件了)
二、nmcli配置網絡
第?3?章?配置 IP 網絡 | 網絡指南 | Red Hat Enterprise Linux | 7 | Red Hat Documentationhttps://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/7/html/networking_guide/ch-configuring_ip_networking#sec-Selecting_Network_Configuration_Methods
?2.1、nmcli的語法
--nmcli的語法
nmcli [OPTIONS] OBJECT { COMMAND | help }--查看nmcli用法命令
nmcli --help
-- 使用nmcli美化輸出的示例(簡化輸出的就是將-p換為-t)
-- 查看NetworkManager的常規狀態和操作
nmcli -p g-- 查看整體網絡控制
nmcli -p n-- 查看NetworkManager無線網絡的開關情況
nmcli -p r-- 查看NetworkManager的連接情況
nmcli -p c-- 查看NetworManager的管理設備
nmcli -p d
?2.2、nmcli的使用
? 2.2.1、NetworkManager的啟用關閉
-- 1、查看NetworkManager是否啟用命令(顯示enabled表示啟用,否則就是禁用)
nmcli n-- 2、啟用NetworkManager命令
nmcli n on-- 3、關閉NetworkManager命令(注意該命令一般不要輕易使用,只建議在Linux本機的終端上使用,一旦使用該命令則網絡就斷開了)
nmcli n off
? 2.2.2、nmcli的常用命令
序號 | nmcli的常用命令 | 說明 |
1 | nmcli connection nmcli c | 表示查看當前的所有連接信息(包含連接別名、UUID、連接類型、網卡名稱) 【nmcli c是nmcli connection的簡寫】 |
2 | nmcli c -h | 表示查看當前連接的幫助命令,可以對網絡連接信息進行對應的【查看(show)、上線(up)、下線(down)、添加(add)、修改(modify)、克隆(clone)、編輯(edit)、刪除(delete)、監控(monitor)、重載(reload)、導入(import)、導出(export)】操作: |
3 | nmcli device nmcli d | 表示設備,可理解為實際存在的網卡(包括物理網卡和虛擬網卡)可以簡寫為【nmcli d】 |
4 | nmcli d -h | 表示查看網卡連接的幫助命令,可以對網卡進行對應的【狀態(status)、詳情(show)、設置(set)、激活(connect)、刷新(reapply)、修改(modify)、斷開(disconnect)、刪除(delete)、監控(monitor)】操作 |
在NetworkManager里,有2個維度:連接(connection)和設備(device),這是多對一的關系。想給某個網卡配ip,首先NM要能納管這個網卡。設備里存在的網卡(即nmcli d可以看到的),就是NetworkManager接納管理的。接著,可以為一個設備配置多個連接(即nmcli c可以看到的),每個連接可以理解為一個ifcfg配置文件。同一時刻,一個設備只能有一個連接活躍。可以通過nmcli c up切換連接 |
? 2.2.3、nmcli常用命令實戰
如下是實現查看常用命令的幫助、修改連接配置內容詳細的操作步驟:
-- 查看NetworkManager的連接情況(完整命令是:nmcli connection;簡寫命令是:nmcli n)
nmcli nnmcli n show--查看指定的連接詳情(比如這里查看連接名稱為ens33的詳情)
nmcli n show ens33--查看編輯指定連接的用法幫助命令【必須使用root用戶操作】
nmcli c help--切換到管理員權限的用戶操作
su ---編輯制定的連接信息(比如這里編輯ens33的連接信息)
nmcli c edit ens33
-- 查看可使用的命令
?
--進入ipv4選項
goto ipv4
--查看ipv4的操作命令幫助
?
--進入ipv4地址
goto addresses
--先查看當前的ipv4地址
print
--修改ipv4地址
change
--直接將當前顯示的內容修改為自己想要的ipv4地址(比如將原來的192.168.1.9/24修改為192.168.1.6/24)
192.168.1.6/24
--返回上一級
back--進入dns
goto dns
--查看當前的dns信息
print
--修改dns
change
--將顯示的dns內容修改即可(比如將114.114.114.114修改為223.5.5.5)
223.5.5.5
--返回
back
back--保存修改的內容
save
--激活修改的內容
activate
--直接一步到位的查看與設置網絡內容(如:設置ipv4的dns)-- 1、查看nmcli的用法幫助命令
nmcli -h-- 2、查看nmcli c的用法幫助命令
nmcli c -h-- 3、查看nmcli的連接信息命令
nmcli c show-- 4、切換管理員賬號進行如下的編輯操作(否則到最后的保存時會提示權限不足錯誤)
su --- 5、編輯nmcli指定連接的命令(如我這里直接編輯ens33連接)
nmcli c edit ens33-- 6、查看編輯ens33連接的幫助命令
?-- 7、查看goto ipv4包含的所有屬性命令(輸入goto ipv4.后按下tab鍵會自動帶出)
goto ipv4.-- 8、進行需要修改的屬性命令(比如:這里直接進入ipv4的dns屬性)
goto ipv4.dns-- 9、查看指定屬性的操作幫助命令
?-- 10、查看當前屬性的信息
print-- 11、修改當前屬性的命令(輸入change命令后就可以直接修改顯示的內容了)
change-- 12、修改后返回上一級
back
back-- 13、保存修改的連接屬性內容
save-- 14、激活修改好的連接
activate-- 15、退出nmcli的編輯模式
quit
?
????????注意:這里在使用nmcli對網絡信息進行修改的時候必須使用具有管理員權限的賬號操作,不然在保存修改配置的時候會提示“錯誤:保存 "ens33" (9709103d-8f3d-3b0a-9d44-f2e1f1d03e67) 連接失敗:Insufficient privileges” 的錯誤。
?
三、參考資料
3.3.?使用 nmcli 配置 IP 網絡 | 網絡指南 | Red Hat Enterprise Linux | 7 | Red Hat Documentationhttps://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/7/html/networking_guide/sec-configuring_ip_networking_with_nmcliLinux nmcli 命令 | 菜鳥教程
https://www.runoob.com/linux/linux-comm-nmcli.html在 Ubuntu/Debian 上安裝和使用 NetworkManager (NMCLI)
https://cn.linux-console.net/?p=223641.7.?使用 ncat 工具管理數據 | 網絡指南 | Red Hat Enterprise Linux | 7 | Red Hat Documentation
https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/7/html/networking_guide/sec-managing_data_using_the_ncat_utility