一文搞懂nmcli不能tab補全和全部使用方法

nmcli命令無法tab補全 解決方案

  • 先檢查NetworkManager服務是否正常運行:systemctl status NetworkManager ——爲active即正常,如果爲active依然不能tab補全,繼續往下看。
    在這裏插入圖片描述

  • mcli工具是用來控制 NetworkManager,利用它讓我們配置網絡更靈活;
    最小化安裝的Centos7 系統nmcli命令按tab鍵時是不會自動補全的;
    解決方法:安裝一個bash插件包(bash-completion) 即可!

[root@control ~]$yum install bash-completion –y

nmcli說明

Red Hat 7 與 CentOS 7 中默認的網絡服務由NetworkManager 提供,這是動態控制及配置網絡的守護進程,它用於保持當前網絡設備及連接處於工作狀態,同時也支持傳統的ifcfg 類型的配置文件。
NetworkManager可以用於以下類型的連接:Ethernet,VLANS,Bridges,Bonds,Teams,Wi-Fi,mobile boradband(如移動3G)以及 IP-over-InfiniBand。針對與這些網絡類型,NetworkManager可以配置他們的網絡別名,IP 地址,靜態路由,DNS,VPN連接以及很多其它的特殊參數。
可以用命令行工具 nmcli 來控制 NetworkManager
在CentOS / RHEL 7中網絡管理命令行工具,也叫nmcli。經常使用ifconfig的用戶應該在CentOS 7中避免使用ifconfig了。nmcli的功能要強大、複雜的多。

注意事項

nmcli是由NetworkManager提供,所以我們需要保證NetworkManager服務是正常開啓的(一般默認就是開啓的,如果沒設置過便不用管),雖然用NetworkManager管理網絡,但network也可以正常使用(也就是說可以正常使用重啓服務:systemctl restart network),我們知道NetworkManager類似於自動管理,它和network同時啓用可能會有衝突,導致網絡無法正常使用,所以我們用nmcli配置命令的時候,都需要設置爲手動管理(method manual)NetworkManager查看狀態命令:systemctl status NetworkManager
在這裏插入圖片描述

下面看一下nmcli命令與配置文件的對應關係:

nmcli con mod ifcfg-* 文件
ipv4.method manual BOOTPROTO=none (手動管理)
ipv4.addresses "192.168.1.1/24 192.268.1.254 " IPADDR=192.168.1.1 、PREFIXO=24 (掩碼:255.255.255.0)、GATEWAY=192.168.1.254(網關)
ipv4.dns 8.8.8.8 DNS=8.8.8.8
ipv4.dns-search example.com DOMAIN=example.com (聲明主機的域名)注:search是在配置文件/etc/resoly.conf中,DOMAIN是在網卡配置中,兩者不能共存!否則後面配置的會替代之前配置的。
ipv4.ignore-auto-dns true PEERDNS=no (點對點的DNS)
connection.autoconnect yes ONBOOT=yes (默認爲yes,所以可以不需要設置這項)
connection.id eth0 NAME=eth0 (team配置可以不需要這項)
connection.ifname eth0 DEVICE=eth0 (指定網卡設備)(ifname全稱:ifterface-name)
connection.con-name name 配置網卡中ifconfig-name (name是自定義名稱哦)
802-3-ethernet.mac-address … HWADDR=… (MACKS設置,一般別設置這個)
注:上面的connection可以縮寫爲con

nmcli命令合集

ifconfig 查看 網卡信息,ethtool查看網卡是否在使用!
如:我下面就有ens160和ens192兩張網卡!
在這裏插入圖片描述
在這裏插入圖片描述

查看合集

  • 顯示所有網絡連接:nmcli con show
    在這裏插入圖片描述

  • 顯示活動網絡連接:nmcli con show –active
    在這裏插入圖片描述

  • 顯示指定網絡連接的詳情:nmcli con show eno16777728 #eno..是網卡名

  • 顯示網絡設備連接狀態:nmcli dev status
    在這裏插入圖片描述

  • 顯示所有網絡設備的詳情:nmcli dev show

  • 顯示指定網絡設備的詳情:nmcli dev show eno16777728 #eno..是網卡名

添加網絡連接參數介紹合集

  • 添加單網卡比較簡單,語法:nmcli con add 添加新的連接選項
  • 一般要用選項有:
    con-name – 連接名(配置文件中ifcfg-name)
    type – 設備類型 (單網卡一般都是 ethernet)
    ifname – 接口名 (網卡名)
	autoconnect no – 禁止開機自動啓動 (一般不設置這個。默認爲yes)
	ip4 ip —設置ip地址(不建議add指定ip)
	gw4 ip — 設置網關(不建議add指定網關)

所以綜上,add 無論是單網卡還是雙網卡,都建議只添加基本屬性(type,ifname,con-name),ip這些都用modify修改,也就是說,分兩步完成ip配置。 用到的modify下面有說明!

添加單網卡實例

我現在的網卡eth1 是沒有配置ip的,我現在把eth1的ip設置爲 192.168.1.1 網關設置爲,192.168.1.254 ,掩碼是24位(255.255.255.0),設置爲手動

 [root@server0 network-scripts]#  ip a show eth1
5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether fe:a5:bd:47:69:3e brd ff:ff:ff:ff:ff:ff
[root@server0 network-scripts]#
[root@server0 network-scripts]# nmcli con add type ethernet con-name eth1-file ifname eth1  #tab2下就會出現下面內容,但不建議在這裏配下面內容,用modify修改即可。
autoconnect  gw4          ip4          mac          save         
cloned-mac   gw6          ip6          mtu               
[root@server0 network-scripts]# nmcli con add type ethernet con-name eth1-file ifname eth1 #直接回車創建基本要素
Connection 'eth1-file' (02fb2c41-1a38-4484-9771-5908549400b6) successfully added.
[root@server0 network-scripts]# nmcli connection show #可以查看到網卡文件已經生成
NAME       UUID                                  TYPE            DEVICE 
eth0       5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0   
eth1-file  02fb2c41-1a38-4484-9771-5908549400b6  802-3-ethernet  eth1   
[root@server0 network-scripts]# nmcli con modify eth1-file ipv4.addresses "192.168.1.1/24 192.168.1.254"  ipv4.dns 192.168.254.254 ipv4.method manual  #modif指定ip掩碼網關 和dns
[root@server0 network-scripts]# nmcli con up eth1-file 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/12)
[root@server0 network-scripts]# ip a show eth1
5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether fe:a5:bd:47:69:3e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::fca5:bdff:fe47:693e/64 scope link 
       valid_lft forever preferred_lft forever
[root@server0 network-scripts]#
[root@server0 network-scripts]# nmcli con show
NAME       UUID                                  TYPE            DEVICE 
eth0       5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0   
eth1-file  fbf695ed-8884-4634-b4a6-7d41cb869e6d  802-3-ethernet  eth1   
[root@server0 network-scripts]# nmcli con delete eth1-file  #配置錯了就刪除重新配delete 後面是con-name名稱
[root@server0 network-scripts]# nmcli con show
NAME  UUID                                  TYPE            DEVICE 
eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0   
[root@server0 network-scripts]#

在這裏插入圖片描述

修改網絡連接單項參數介紹合集

  • 語法:nmcli con modify 選項
    再回顧一下關係圖:
    在這裏插入圖片描述
    常用選項有:
ipv4.address ip/netmask —設置ip地址和掩碼(強烈建議ip和掩碼一起設置,如:192.168.1.1/24)
ipv4.gateway ip —設置網關
ipv4.netmask ip —設置掩碼(單獨設置可能會出錯,所以一般都是和ip一起設置的)
ipv4.dns ip —設置dns
ipv4.method manual — 設置爲手動模式(建議加上這個)

使用小技巧:如果是第一次修改指定ip掩碼網關,可以直接定義在ipv4.address中——… ipv4.address “192.168.1.1/24 192.168.1.254” ipv4.method manual— 剛纔那代碼意思分別爲 “ip/掩碼 網關“ 設置爲手動模式,當然,後面一次性需要修改這些也可以這麼用。

  • 注: 下面中的mod全稱是modify,作用是修改,IF-NAME是配置文件名稱(nmcli con show查看的NAME名稱)!
  • 修改爲自動連接:nmcli con mod IF-NAME connection.autoconnect yes
  • 修改IP地址是靜態還是DHCP(實際情況[auto, link-local, manual, shared, disabled]):nmcli con mod IF-NAME ipv4.method manual | dhcp
  • 修改IP配置及網關: nmcli con mod IF-NAME ipv4.addresses “172.25.X.10/24 172.25.X.254”
  • 修改默認網關:nmcli con mod IF-NAME ipv4.gateway 10.1.0.1
  • 添加第二個IP地址:nmcli con mod IF-NAME +ipv4.addresses 10.10.10.10/16
  • 添加dns1:nmcli con mod IF-NAME ipv4.dns 114.114.114.114
  • 添加dns2:nmcli con mod IF-NAME +ipv4.dns 8.8.8.8
  • 刪除dns:nmcli con mod IF-NAME -ipv4.dns 8.8.8.8
  • 重新加載網絡配置:nmcli con reload(有操作最好重新up一下)

修改已經配置好的參數測試

修改網卡文件eth1-file的ip爲 1.1.1.1

[root@server0 network-scripts]# nmcli connection modify eth1-file ipv4.addresses 1.1.1.1 #nmcli con show 查看的配置文件
[root@server0 network-scripts]# nmcli con up eth1-file #操作後要重新up一下網卡名稱
#如果你不確定這個這個名稱是不是爲手動管理的,那你可以直接再執行一遍:
[root@server0 network-scripts]# nmcli con modify eth1-file ipv4.method manual

總結:所有選項你都可以一條一條執行,但也可以全部放在一條中執行,多練習,練習纔有手感,才能真正快速體會到規律。 看最後的練習實例,多做幾遍就知道原理了,nmcli其實很簡單!

激活禁用刪除等介紹合集

注:下面的eno16777728是配置名稱,nmcli con show查到到的NAME名稱!

  • 啓用網絡連接:nmcli con up eno16777728
  • 停用網絡連接(可被自動激活):nmcli con down eno33554960
  • 禁用網卡,防止被自動激活:nmcli dev dis eth0
  • 刪除網絡連接的配置文件:nmcli con del eno33554960
  • 重新加載配置網絡配置文件:nmcli con reload
  • 啓用/關閉所有的網絡連接:nmcli net on/off
  • 禁用網絡設備並防止自動激活:nmcli con dis eno33554960
  • 查看添加網絡連接配置的幫助:nmcli con add help

總結

nmcli其實不用想太複雜,配置單網卡分爲2步,add添加基本信息,modify指定ip等信息。
雙網卡步驟稍微多一點,但也是add指定3樣基本信息(主鏈路,2張網卡綁定到鏈路文件上),最後modify指定鏈路文件ip即可, modify修改以後,都需要up一下配置文件,否則不會生效!!!
看下面測試實例————多練習就熟悉了。

測試實例

添加單網卡實例

我現在的網卡eth1 是沒有配置ip的,我現在把eth1的ip設置爲 192.168.1.1 網關設置爲,192.168.1.254 ,掩碼是24位(255.255.255.0),dns爲192.168.254.254,設置爲手動管理

[root@server0 network-scripts]#  ip a show eth1
5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether fe:a5:bd:47:69:3e brd ff:ff:ff:ff:ff:ff
[root@server0 network-scripts]#             
[root@server0 network-scripts]# nmcli con add type ethernet con-name eth1-file ifname eth1 #創建基本要素
Connection 'eth1-file' (02fb2c41-1a38-4484-9771-5908549400b6) successfully added.
[root@server0 network-scripts]# nmcli connection show #可以查看到網卡文件已經生成
NAME       UUID                                  TYPE            DEVICE 
eth0       5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0   
eth1-file  02fb2c41-1a38-4484-9771-5908549400b6  802-3-ethernet  eth1   
[root@server0 network-scripts]# nmcli con modify eth1-file ipv4.addresses "192.168.1.1/24 192.168.1.254"  ipv4.dns 192.168.254.254 ipv4.method manual  #modif指定ip掩碼網關 和dns
[root@server0 network-scripts]# nmcli con up eth1-file 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/12)
[root@server0 network-scripts]# ip a show eth1
5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether fe:a5:bd:47:69:3e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::fca5:bdff:fe47:693e/64 scope link 
       valid_lft forever preferred_lft forever
[root@server0 network-scripts]#
[root@server0 network-scripts]# nmcli con show
NAME       UUID                                  TYPE            DEVICE 
eth0       5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0   
eth1-file  fbf695ed-8884-4634-b4a6-7d41cb869e6d  802-3-ethernet  eth1   
[root@server0 network-scripts]# nmcli con delete eth1-file  #配置錯了就刪除重新配(delete 後面是con-name名稱)
[root@server0 network-scripts]# nmcli con show
NAME  UUID                                  TYPE            DEVICE 
eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0   
[root@server0 network-scripts]#

在這裏插入圖片描述

nmcli做一個team雙網卡綁定(鏈路聚合)

我現在有兩張網卡,eth1和eth2,做一個team鏈路聚合,ip設置爲 192.168.1.20,掩碼255.255.255.0 網關192.168.1.1 ,dns 192.268.254.254

[root@server0 Desktop]# cat /usr/share/doc/teamd-1.9/example_ifcfgs/1/ifcfg-team_test0 
DEVICE="team_test0"
DEVICETYPE="Team"
ONBOOT="no"
BOOTPROTO=none
NETMASK=255.255.255.0
IPADDR=192.168.23.11
TEAM_CONFIG='{"runner": {"name": "roundrobin"}}'
[root@server0 Desktop]# 
下面team0如果記不得config內容,可以在這裏面看,也可以把裏面的配置文件拷過去,通過配置文件配置team0.


[root@server0 ~]# nmcli con add con-name team0 ifname team0 type team config '{"runner":{"name":"activebackup"}}' #team是類型,config是固定格式activebackup是主備模式
Connection 'team0' (bc6431be-4147-4c33-b9e5-4f651d5e2f51) successfully added.
[root@server0 ~]# nmcli con add con-name team0-port1 ifname eth1 type team-slave master team0 #type是類型,master是綁定到team0這個主鏈路
Connection 'team0-port1' (cb72a926-b3b9-4960-9aaa-fec9ba545a3e) successfully added.
[root@server0 ~]# nmcli con add con-name team0-port2 ifname eth2 type team-slave master team0 #type是類型,master是綁定到team0這個主鏈路
Connection 'team0-port2' (c2a965fd-a698-4b87-96a0-01aced1bbb8a) successfully added.
[root@server0 ~]# nmcli con show
NAME         UUID                                  TYPE            DEVICE 
team0-port1  cb72a926-b3b9-4960-9aaa-fec9ba545a3e  802-3-ethernet  --     
team0        bc6431be-4147-4c33-b9e5-4f651d5e2f51  team            team0  
eth0         5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0   
team0-port2  c2a965fd-a698-4b87-96a0-01aced1bbb8a  802-3-ethernet  --     
[root@server0 ~]# nmcli con modify team0 ipv4.addresses “192.168.1.20/24 192.168.1.1” ipv4.dns 192.168.254.254  ipv4.method manual #設置ip等信息
[root@server0 ~]# nmcli con up team0 #啓動team0即可
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@server0 ~]# ip a show team0
3: team0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether fa:7c:42:6e:79:39 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.20/24 brd 172.16.18.255 scope global team0
       valid_lft forever preferred_lft forever
[root@server0 ~]# ping 192.168.1.20  #ping 網關另能ping通即配置成功
PING 192.168.1.20 (192.168.1.20) 56(84) bytes of data.
64 bytes from 192.168.1.20: icmp_seq=1 ttl=64 time=0.051 ms
64 bytes from 192.168.1.20: icmp_seq=2 ttl=64 time=0.030 ms
64 bytes from 192.168.1.20: icmp_seq=3 ttl=64 time=0.031 ms

注:上面做了簡單解釋,如果有看不懂的地方,上去看看我之前的介紹!!!!
並且感興趣的可以去配置文件中(就是nmcli自動生成的路徑/etc/sysconfig/network-scripts下的配置文件)打開配置文件研究我之前提到的對應關係,就是這個圖:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章