您好,登錄后才能下訂單哦!
這篇文章主要介紹在命令行中如何使用nmcli來管理網絡連接,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
nmcli 命令賦予你直接在 Linux 命令行操作 NetworkManager 工具的能力。
nmcli 命令賦予你直接在 Linux 命令行操作 NetworkManager 工具的能力。它是 NetworkManager 軟件包集成的一部分,通過使用一些 應用程序接口(API)來獲取 NetworkManager 的功能。
nmcli
發布于 2010 年,用以替代其他配置網絡接口和連接的方法,例如 ifconfig。因為它是一個 命令行界面(CLI)工具,被設計用在終端窗口和腳本中,所以對于那些工作在沒有 圖形用戶界面(GUI)的系統的管理員來說,它是一個非常理想的工具。
nmcli
命令可以使用選項來更改它的行為,使用子命令來告訴 nmcli
想使用它的那部分功能,使用操作來告訴 nmcli
你想執行什么操作。
$ nmcli <選項> <子命令> <操作>
nmcli
一共有 8 個子命令,每個子命令有一些相關的網絡操作:
help
提供有關 nmcli
命令和使用方法的幫助信息
general
返回 NetworkManager 的狀態和總體配置信息
networking
提供命令來查詢某個網絡連接的狀態和啟動、禁用連接的功能
radio
提供命令來查詢某個 WiFi 網絡連接的狀態和啟動、禁用連接的功能
monitor
提供命令來監控 NetworkManager 的活動并觀察網絡連接的狀態改變
connection
提供命令來啟用或禁用網絡接口、添加新的連接、刪除已有連接等功能
device
主要被用于更改與某個設備(例如接口名稱)相關聯的連接參數或者使用一個已有的連接來連接設備
secret
注冊 nmcli
來作為一個 NetworkManager 的秘密代理,用以監聽秘密信息。這個子命令很少會被用到,因為當連接到網絡時,nmcli
會自動做這些事
首先,我們驗證一下 NetworkManager 正在運行并且 nmcli
可以與之通信:
$ nmcli generalSTATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN connected full enabled enabled enabled enabled
探測總是管理一個系統的首要部分。為了列出內存或磁盤上的網絡連接配置,可以使用下面的命令:
$ nmcli connection showNAME UUID TYPE DEVICEWired connection 1 ac3241e4-b424-35d6-aaa7-07498561688d ethernet enp0s3Wired connection 2 2279d917-fa02-390c-8603-3083ec5a1d3e ethernet enp0s8Wired connection 3 52d89737-de92-35ec-b082-8cf2e5ac36e6 ethernet enp0s9
上面的命令使用了 connection
子命令中的 show
操作。
用來運行上面這個例子的測試機器上運行著 Ubuntu 20.04,它安裝了 3 個網絡適配器:enp0s3
、enp0s8
和 enp0s9
。
理解 nmcli
的術語是非常重要的。一個網絡連接包含了一個連接的所有信息。你可以將它看作一個網絡配置。“連接”包含了與其相關的所有信息,包括 數據鏈路層 和 IP 地址信息 。它們是 OSI 網絡模型 中的第 2 和第 3 層。
當你在 Linux 上配置網絡時,通常來說你是在為某個網絡設備(它們是安裝在一個電腦中的網絡接口)配置連接。當一個連接被某個設備所使用,那么就可以說這個連接被激活或者上線了,反之是停用或下線。
nmcli
允許你快速地創建網絡連接并同時為該連接指定參數。為了通過使用“有線連接 2” enp0s8
來創建一個新的連接,你可以利用 sudo
來運行下面的命令:
$ sudo nmcli connection add type ethernet ifname enp0s8Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully added.
其中 type
選項指定需要一個 Ethernet 類型的連接,而 ifname
(接口名)選項指定你想要為這個連接使用的網絡接口設備。
讓我們看看發生了什么變化:
$ nmcli connection showNAME UUID TYPE DEVICEWired connection 1 ac3241e4-b424-35d6-aaa7-07498561688d ethernet enp0s3Wired connection 2 2279d917-fa02-390c-8603-3083ec5a1d3e ethernet enp0s8Wired connection 3 52d89737-de92-35ec-b082-8cf2e5ac36e6 ethernet enp0s9ethernet-enp0s8 09d26960-25a0-440f-8b20-c684d7adc2f5 ethernet --
通過上圖可以看到新的連接 ethernet-enp0s8
已經創建好了。它的 通用唯一標識符(UUID)也一同被賦予,并且其連接類型為 “Ethernet”。我們可以使用 up
子命令再加上連接名稱(或 UUID)來使得這個連接被激活:
$ nmcli connection up ethernet-enp0s8Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
再次查看激活的連接:
$ nmcli connection show --activeNAME UUID TYPE DEVICEWired connection 1 ac3241e4-b424-35d6-aaa7-07498561688d ethernet enp0s3ethernet-enp0s8 09d26960-25a0-440f-8b20-c684d7adc2f5 ethernet enp0s8Wired connection 3 52d89737-de92-35ec-b082-8cf2e5ac36e6 ethernet enp0s9
可以看到新的連接 ethernet-enp0s8
現在已經被激活了,并且與 enp0s8
網絡接口設備綁定。
nmcli
命令使得調整現有連接的參數變得更加容易。也許你想將某個網絡接口從 動態主機配置協議(DHCP)改為靜態 IP 地址。
假設你需要為你的新連接分配一個固定的 IP 地址 192.168.4.26
,那么你需要使用兩個命令,一個用于設定 IP 地址,另一個用來將獲取 IP 地址的方法改為 manual
(手動):
$ nmcli connection modify ethernet-enp0s8 ipv4.address 192.168.4.26/24$ nmcli connection modify ethernet-enp0s8 ipv4.method manual
記得指定 子網掩碼,在我們這個測試的連接中,它是 無類域間路由(CIDR)中的 255.255.255.0
或 /24
為了使得你的更改生效,你需要通過停止再重新啟用該連接。下面的第一個命令是停用該連接,第二個命令則是啟用它:
$ nmcli connection down ethernet-enp0s8Connection 'ethernet-enp0s8' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)$ nmcli connection up ethernet-enp0s8Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
假如你想將連接設置為使用 DHCP,則需要將上面的 manual
改為 auto
(自動):
$ nmcli connection modify ethernet-enp0s8 ipv4.method auto
nmcli
命令中的 device
子命令允許你管理安裝在你電腦中的網絡接口。
可以使用下面的命令來快速檢查所有網絡接口的狀態:
$ nmcli device statusDEVICE TYPE STATE CONNECTION enp0s3 ethernet connected Wired connection 1enp0s8 ethernet connected ethernet-enp0s8 enp0s9 ethernet connected Wired connection 3lo loopback unmanaged --
為了檢查某個網絡接口的詳情,可以使用 device
子命令中的 show
操作。假如你不提供某個設備的名稱,那么會獲取并展示所有設備的詳情。你可以上下翻動來查看這些信息。
要查看你最近添加的連接所對應的設備 enp0s8
,你可以使用下面的命令,請注意驗證它使用的 IP 地址是否為先前你要求設置的那個:
$ nmcli device show enp0s8GENERAL.DEVICE: enp0s8GENERAL.TYPE: ethernetGENERAL.HWADDR: 08:00:27:81:16:20GENERAL.MTU: 1500GENERAL.STATE: 100 (connected)GENERAL.CONNECTION: ethernet-enp0s8GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/6WIRED-PROPERTIES.CARRIER: onIP4.ADDRESS[1]: 192.168.4.26/24IP4.GATEWAY: --IP4.ROUTE[1]: dst = 192.168.4.0/24, nh = 0.0.0.0, mt = 103IP6.ADDRESS[1]: fe80::6d70:90de:cb83:4491/64IP6.GATEWAY: --IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 103IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
上面的輸出非常細致,它主要顯示了下面這些內容:
網絡接口名稱,在這個示例中是 enp0s8
,它是 udev 分配的
網絡連接類型,在這個示例中是物理的 Ethernet 連接
設備的
媒介訪問控制(MAC)地址,它被用來在網絡中識別該設備
最大傳輸單元,在單個傳輸中最大協議數據單位的大小,任何大于這個大小的數據將被分為多個包來進行傳輸
該設備當前已經處于連接狀態
這個設備使用的連接名稱是 ethernet-enp0s8
這個設備使用的 IP 地址如上面所要求的那樣,被設置為 192.168.4.26/24
其他的信息則是與這個設備連接的網絡相關的默認路由和網關設置信息。
盡管 nmcli
是一個命令行工具,但它還包含一個基本的交互式編輯器,edit
子命令將為你指定的連接打開一個交互式編輯器,例如:
$ nmcli connection edit ethernet-enp0s8
它將顯示少量的幫助文字,接著是 nmcli
的命令提示符:
===| nmcli interactive connection editor |=== Editing existing '802-3-ethernet' connection: 'ethernet-enp0s8' Type 'help' or '?' for available commands.Type 'print' to show all the connection properties.Type 'describe [<setting>.<prop>]' for detailed property description. You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxynmcli>
假如你輸入 print
然后敲擊 Enter
鍵, nmcli
將列舉出與這個接口相關的所有屬性。這些屬性有很多,你可以上下翻動來查看這個列表:
=============================================================================== Connection profile details (ethernet-enp0s8)===============================================================================connection.id: ethernet-enp0s8connection.uuid: 09d26960-25a0-440f-8b20-c684d7adc2f5connection.stable-id: --connection.type: 802-3-ethernetconnection.interface-name: enp0s8connection.autoconnect: yesconnection.autoconnect-priority: 0connection.autoconnect-retries: -1 (default)connection.multi-connect: 0 (default)connection.auth-retries: -1connection.timestamp: 1593967212connection.read-only: noconnection.permissions: --connection.zone: --connection.master: --connection.slave-type: --connection.autoconnect-slaves: -1 (default)connection.secondaries: --
如果你想將你的連接改為 DHCP,則請輸入 goto ipv4
然后敲 Enter
鍵:
nmcli> goto ipv4You may edit the following properties: method, dns, dns-search, dns-options, dns-priority, addresses, gateway, routes, route-metric, route-table, routing-rules, ignore-auto-routes, ignore-auto-dns, dhcp-client-id, dhcp-iaid, dhcp-timeout, dhcp-send-hostname, dhcp-hostname, dhcp-fqdn, dhcp-hostname-flags, never-default, may-fail, dad-timeoutnmcli ipv4>
你想改變的屬性是 method
,再繼續敲 set method auto
然后敲 Enter
鍵:
nmcli ipv4> set method autoDo you also want to clear 'ipv4.addresses'? [yes]:
假如你想讓這個連接清除掉這個靜態 IP 地址,則請敲 Enter
鍵,如果要保留,則輸入 no
然后敲 Enter
鍵。假如你想在將來再次使用它,你可以保留這個 IP 地址。即便存儲了一個靜態的 IP 地址,如果 method
被設置為 auto
,它仍然會使用 DHCP。
最后輸入 save
來保存你的更改:
nmcli ipv4> saveConnection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully updated.nmcli ipv4>
輸入 quit
來離開 nmcli
的交互式編輯器窗口。假如你不想離開,可以輸入 back
來回到最開始的命令行提示符界面,然后繼續使用這個編輯器。
瀏覽交互式編輯器,你就可以看到 nmcli
有多少設定和每個設定有多少屬性。交互式編輯器是一個簡潔的工具,但如果需要在命令行或者在腳本中使用 nmcli
,你還是需要使用常規的命令行版本。
以上是“在命令行中如何使用nmcli來管理網絡連接”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。