目录
nmcli 命令
前提
重启网络服务 / 重启网卡
实例
nmcli输出说明
3种网络配置方法
nmcli的命令参数
Tips
ethtool 命令
IP命令
添加网卡到配置文件
Linux系统怎么查看网卡的UUID
原文:nmcli 网络管理工具 - web男 - 博客园
使用 nmcli 时,NetworkManager 必须保持开启。
NetworkManager 的相关命令:
查看运行状态:systemctl status NetworkManager
启动:systemctl start NetworkManager
重启:systemctl restart NetworkManager
关闭:systemctl stop NetworkManager
查看是否开机启动:systemctl is-enabled NetworkManager
开机启动:systemctl enable NetworkManager
禁止开机启动:systemctl disable NetworkManager
(NetworkManager和network.service的区别:
network是linux直接配置网卡的程序
NetworkManager是提供一个丰富的API来检查和控制网络设置和操作的应用程序
network和NetworkManager一起工作时就会出现冲突
网卡解决network和NetworkManager的冲突问题_BiGpeng丶的博客-CSDN博客
centos8之后默认就是用NetworkManager管理网络,centos9之后就彻底抛弃network。
NetworkManage于network功能类似,都是用于管理网络。NetworkManage提供了nmctl、nmtui两个工具,两个都是用来管理网络,但是有一个前提:nmctl networking 状态必须是enable否则设备状态为unmanaged,这会导致network启动不了!!)
#重启⽹卡之前⼀定要重新载⼊⼀下配置⽂件,不然不能⽴即⽣效
nmcli c reload
#重启⽹卡(下⾯的三条命令都可以)
nmcli c up ens160 #nmcli c reload会读取配置文件,但是不会立即生效,接着如果执行nmcli c up ethX,就会立即生效
nmcli d reapply ens160 #更新设备信息,只有在设备处于连接状态,才可以更新设备。更新设备相当于重启连接。
nmcli d connect ens160 #连接设备,如果 ens33 本来就出于连接状态,那此命令会重启 ens160。
01 nmcli networking
nmcli networking或nmcli n 显示 NetworkManager 是否接管网络设置
nmcli n on 设定 NetworkManager 接管网络设置
nmcli n off 取消 NetworkManager 接管网络设置
nmcli n connectivity/nmcli n c 查看网络连接状态
网络连接状态共有五种:full、limited(连网,但无法上网)、portal(连网,但需要认证登录后才能上网)、none(没连网)和 unknown。
02 nmcli general
nmcli general status/nmcli g 显示系统网络状态
其中:
STATE 显示网络是否连接;
CONNECTIVITY 与前面介绍的 nmcli networking connectivity 相同;
WIFI-HW 表示 WIFI 硬件开关、WIFI 表示 WIFI 软件开关;
WWAN-HW 表示 WWAN 硬件开关、WWAN 表示 WWAN 软件开关。
HW 代表 HardWare,WWAN 代表 Wireless Wide Area Network。
03 nmcli connection
nmcli connection show/nmcli c 显示所有网络连接的信息
nmcli c s -a /nmcli c s --active 显示所有网络连接的信息,只显示当前启动的连接
nmcli c s ens33 显示某一特定连接的详细信息(以 ens33 为例)
nmcli c up ens33 启动指定连接
nmcli c down ens33 关闭指定连接
nmcli c reload / nmcli c r 重载所有连接的配置文件
nmcli c load ifcfg-ens33/nmcli c l ifcfg-ens33 重载某一指定连接的配置文件:
网络配置文件默认保存在 /etc/sysconfig/network-scripts/ 路径下,如果配置文件在其它位置,则需要填写完整路径。
(多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。这样的好处是针对一个网络接口,我们可以设置多个网络链接文件,比如静态IP和动态IP,再根据需要up相应connection,这样可以方便的切换网络配置,比如笔记本电脑移动办公,到不同的环境同一个网卡可以切换到不同的网络配置,配置好以后不需要每次都从新配置。)
04 nmcli device
nmcli device status / nmcli d 显示所有网络接口设备的状态,列出所有可用的设备
nmcli d show / nmcli d sh 显示所有设备的详细信息# show不可简写为s,与 status 冲突,但可写为 sh
nmcli d sh ens33 显示某一特定设备的详细信息
nmcli d connect ens33或nmcli d c ens33 连接设备,如果 ens33 本来就出于连接状态,那此命令会重启 ens33。
nmcli d disconnect ens33 或 nmcli d d ens33 断开设备
nmcli d reapply ens33 / nmcli d r ens33 更新设备信息,只有在设备处于连接状态,才可以更新设备。更新设备相当于重启连接。
更多命令:Linux中nmcli命令详解_https://blog.csdn.net/yulin003/article/details/125561203
命令 |
目的 |
---|---|
nmcli dev status/nmcli d status |
显示所有网络接口的网络管理器状态 |
nmcli con show/nmcli c show |
列出所有连接 |
nmcli con show [connect_name]/nmcli c show [connect_name] |
列出连接名称的当前设置nmcli con show ens21f0 |
nmcli con reload/nmcli c reload |
告诉networkManager重新读取配置文件(在手工编辑之后有用) |
nmcli con up [connect_name]/nmcli c up [connect_name]/ |
激活连接名称 |
nmcli dev dis [dev_name] |
停用并断开网络接口开发人员上的当前连接 |
nmcli con del [connect_name] |
删除连接名称及其配置文件 |
设备,是网络设备的接口,可理解为实际存在的网卡(包括物理网卡和虚拟网卡)。可以简写为nmcli d
在NM里,有2个维度:连接(connection)和设备(device),这是多对一的关系。想给某个网卡配ip,首先NM要能纳管这个网卡。设备里存在的网卡(即 nmcli d可以看到的),就是NM纳管的。接着,可以为一个设备配置多个连接(即 nmcli c可以看到的),每个连接可以理解为一个ifcfg配置文件。同一时刻,一个设备只能有一个连接活跃。可以通过 nmcli c up切换连接。
原文链接:https://blog.csdn.net/qq_50573146/article/details/126797116
4、device有4种常见状态:
▷ connected:已被NM纳管,并且当前有活跃的connection
▷ disconnected:已被NM纳管,但是当前没有活跃的connection
▷ unmanaged:未被NM纳管
▷ unavailable:不可用,NM无法纳管,通常出现于网卡link为down的时候(比如ip link set ethX down)
原文链接:https://blog.csdn.net/qq_50573146/article/details/126797116
[root@node71 ~]# nmcli dev status
DEVICE TYPE STATE CONNECTION
ens35f0 ethernet connected ens35f0
cni-podman0 bridge connected (externally) cni-podman0
virbr0 bridge connected (externally) virbr0
ens35f1 ethernet disconnected --
ens49f0 ethernet disconnected --
ens49f1 ethernet disconnected --
veth69fa1863 ethernet unmanaged --
veth7021e951 ethernet unmanaged --
veth81e4dd60 ethernet unmanaged --
vetha529eed5 ethernet unmanaged --
lo loopback unmanaged --
virbr0-nic tun unmanaged --
查看网卡信息
nmcli
查看网络设备状态
nmcli device status
查看网络连接状态
nmcli connection
查看UUID等网卡信息
nmcli connection show
查看网络详细信息
nmcli device show ens32
设置静态ip
nmcli connection modify ens32 ipv4.addresses '192.168.1.10'
设置网关
nmcli connection modify ens32 ipv4.gateway '192.168.1.1'
设置DNS
nmcli connection modifly ens32 ipv4.dns '144.144.144.144'
ip地址设为手动
nmcli connection modify ens32 ipv4.method manual
ip地址设为自动获取
nmcli connection modify ens32 ipv4.method auto
设置开机自动连接
nmcli connection modify ens32 connection.autoconnect yes
nmcli connection modify ens32 connection.autoconnect no
重新加载配置文件
nmcli connection reload
不重启系统网卡生效
nmcli connection up ens32
nmcli device connect ens32
nmcli device reapply ens32
查看DNS
cat /etc/resolv.conf
nmcli connection说明
[root@master ~]# nmcli c show 显示所有活动链接
名称 UUID 类型 设备
ens33 51a4ba6c-0635-400b-a1c6-f9e87d55c303 802-3-ethernet ens33 # 这是当前激活的连接带颜色字体,只是文章里体现不出来
virbr0 0d2e6f20-0044-49f9-80ec-cbe19c31df42 bridge virbr0
10.97.17.90 93e8cf06-bd0b-4b69-b802-f3c8c602e000 ethernet # “--”表示当前没有激活的连接
每一行是一个连接,只是只有一个是激活状态
第一列是connection名字(连接名称)简称con-name,简称con-name(注意con-name不是网卡名)
第二列是connection的UUID
第三列是connection的网络类型
最后一列才是网卡名(标准说法叫device名),可通过nmcil d查看device
对connection做操作时需要指定标识,标识可以是con-name、UUID、如果存在ifcfg文件则也可以用ifcfg的完整路径,即/etc/sysconfig/network-scripts/ifcfg-ethX,如下示例:nmcli c show ethX
nmcli c show cae3f1ef-e79a-46c3-8e0c-946b91a65e11
nmcli c show /etc/sysconfig/network-scripts/ifcfg-ethX
1、nmcli connection名字(连接名称)
同时对应ifcfg的文件名以及内容中的NAME=,该参数表示连接(connection)的名字,无需和网卡名相同,可以为一个设备(device)创建多个连接,但同一时刻只能有一个连接生效。当有多个连接时候,可以通过nmcli c delete删除当前连接,就会自动选择同一个设备的其他连接来顶替生效。可以通过nmcli c up来将指定连接切换生效。
注意:通过nmcli c modify修改连接名称,只会对应修改ifcfg文件中的NAME,而不会更改ifcfg文件名。
2、nmcli c的ipv4.method
对应ifcfg文件内容的BOOTPROTO,ipv4.method默认为auto,对应为BOOTPROTO=dhcp,这种时候如果指定ip,就可能导致网卡同时有dhcp分配的ip和静态ip。设置为manual表示BOOTPROTO=none,即只有静态ip。
nmcli device说明
[root@master ~]# nmcli d status #查看设备接口简略信息
设备 类型 状态 CONNECTION
virbr0 bridge 连接的 virbr0
ens33 ethernet 连接的 ens33
lo loopback 未管理 --
virbr0-nic tun 未管理 --
每一行表示一个网络设备的接口。
第一列表示设备接口的名称,第二列表示设备接口的类型,第三列表示设备接口状态,最后一列表示connection的名字,“–”表示设备为使用!
1、nmcli d connect ethX
由NM对指定网卡进行管理,同时刷新该网卡对应的活跃connection(如果之前有修改过connection配置);如果有connection但是都处于非活跃状态,则自动选择一个connection并将其活跃;如果没有connection,则自动生成一个并将其活跃。
2、nmcli d disconnect ethX
让NM暂时不管理指定网卡,此操作不会变更实际网卡的link状态,只会使对应的connection变成非活跃。若重启系统则又会自动connect。另外,如果手工将该网卡的connection全部删掉,该网卡状态也会自动变为disconnected。
3、nmcli d reapply ethX
专门用于刷新connection,前提是网卡的device处于connected状态,否则会报错。
4、nmcli d set ethX autoconnect yes|no managed yes|no
可以设置是否自动连接和是否自动管理,但经测试只能用于当前开机状态, 如果这2个参数都设置为no,然后重启系统,又会自动恢复成connected和managed yes的状态。所以该命令用途不大。注意事项:如果managed设置为no,那么nmcli c reload会读取配置文件,但是不会立即生效,接着如果执行nmcli c up ethX,就会立即生效,同时managed自动变为yes。
重启系统自动恢复成connected和managed yes的状态,这种逻辑并不实用也不够合理,牛人已将此问题提交给redhat,据回复,这么设计是因为目前没有一个有效的手段来证明“我是我”,比如当网卡重新拔插到其他插槽时候,网卡名有很大可能性会发生变化,因此无法确定关机前设置的是对应开机后的哪个网卡,目前暂无办法解决,笔者将持续跟进。
在讲3种配置方法前,需要先明白ifcfg和NM connection的关联:虽然network.service被废弃了,但是redhat为了兼容传统的ifcfg,通过NM进行网络配置时候,会自动将connection同步到ifcfg配置文件中。也可以通过nmcli c reload或者nmcli c load /etc/sysconfig/network-scripts/ifcfg-ethX的方式来让NM读取ifcfg配置文件到connection中。因此ifcfg和connection是一对一的关系,另外上面有提到,connection和device是多对一的关系。
手工配置ifcfg,通过NM来生效
通过NM自带工具配ip,比如nmcli
手工配置ifcfg,通过传统network.service来生效
建议:
推荐使用上述第1种网络配置方法(手工配置ifcfg,通过NM生效),因为这样既兼容了传统的ifcfg配置,又能熟悉nmcli。
原文链接:https://blog.csdn.net/qq_50573146/article/details/126797116
插曲
prefix 子网掩码
255.255.255.0用二进制表示为11111111.11111111.11111111.00000000, 24个1。所以说网络位是24位。PREFIX=24
255.255.255.192用二进制表示为11111111.11111111.11111111.11000000, 26个1。所以说网络位是26位。PREFIX=26
255.255.255.128用二进制表示为11111111.11111111.11111111.10000000, 26个1。所以说网络位是25位。PREFIX=25
255.255.255.224用二进制表示为11111111.11111111.11111111.11100000, 27个1。所以说网络位是27位。PREFIX=27
255.255.255.240用二进制表示为11111111.11111111.11111111.11110000, 28个1。所以说网络位是28位。PREFIX=28
255.255.255.248用二进制表示为11111111.11111111.11111111.11111000, 29个1。所以说网络位是29位。PREFIX=29
笔者配置文件中最后有一行 prefix = 32 ,无论如何设置子网掩码netlmask 都是255.255.255.255,删除后才恢复
用ip addr 查看更快:
16: eth1: <> mtu 1400 group default qlen 1
link/ether 00:ff:8e:e9:b9:b6
inet 10.32.208.248/24 brd 10.32.208.255 scope global dynamic<---prefix=24
valid_lft forever preferred_lft forever
21: eth2:
link/ether 00:50:56:c0:00:01
inet 192.168.199.1/24 brd 192.168.199.255 scope global dynamic<---prefix=24
valid_lft 1771sec preferred_lft 1771sec
[root@localhost ~]# nmcli --help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }
OPTIONS
-t[erse] terse output
-p[retty] pretty output
-m[ode] tabular|multiline output mode
-f[ields]
-e[scape] yes|no escape columns separators in values
-n[ocheck] don't check nmcli and NetworkManager versions
-a[sk] ask for missing parameters
-w[ait]
-v[ersion] show program version
-h[elp] print this help
OBJECT
g[eneral] NetworkManager's general status and operations
n[etworking] overall networking control
r[adio] NetworkManager radio switches
c[onnection] NetworkManager's connections
d[evice] devices managed by NetworkManager
摘自:Linux nmcli控制NetworkManager的命令行工具_https://blog.csdn.net/qq_50573146/article/details/126797116
见:《【ethtool】ethtool 网卡诊断、调整工具、网卡性能优化| 解决丢包严重》http://t.csdn.cn/mJ4xc
ip 命令的功能很丰富,基本上它整合了 ifconfig 与 route 这两个命令,ip命令格式如下:
ip [option] [动作] [命令]
参数:
[option] :设定的参数,主要有:
-s :显示出该设备的统计数据(statistics),例如总接受封包数等;
[动作]:就是是可以针对哪些网络参数进行动作,包括有:
link :关于设备 (device) 的相关设定,包括 MTU, MAC 地址等等
addr/address :关于额外的 IP 设定,例如多 IP 的实现等等;
route :与路由有关的相关设定
关于设备 (device) 的相关设定,包括 MTU, MAC 地址等等
ip link show
linux-oycygI:~ # ip link show
1: lo:mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0:mtu 1500 qdisc mq master ovs-system state UP mode DEFAULT qlen 1000
link/ether 68:8f:84:ee:c7:a4 brd ff:ff:ff:ff:ff:ff
启动、关闭网卡以及设定网卡设备的相关信息
ip link set eth0 up
ip link set eth0 down
ip link set eth0 address
ip link set eth0 broadcast
ip link set eth0 alias
ip link set eth0 name
ip link set eth0 mtu 1000
添加、删除、设定网卡地址,以及设定网卡设备的相关信息
ip addr add 192.168.1.1/24 dev eth0
ip addr del 192.168.1.1/24 dev eth0
ip route add default via 192.168.1.1 dev eth0
ip route add 192.168.1.0/24 via 192.168.1.1
ip route delete 192.168.1.0/24 via 192.168.1.1
ip route replace 192.168.1.0/24 dev eth0
添加网卡到配置文件,并且命名为eth1
[root@localhost ~]# nmcli connection add ifname eno33554992 con-name eth1 type ethernet
Connection 'eth1' (5f1fde10-d2a2-4ea5-8213-7cdb53bb59bf) successfully added.
[root@localhost ~]# ip a
1: lo:mtu 65536 qdisc noqueue state
UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777736:mtu 1500 qdisc
pfifo_fast state UP qlen 1000
link/ether 00:0c:29:4d:bb:53 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.10/24 brd 192.168.10.255 scope global
eno16777736
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe4d:bb53/64 scope link
valid_lft forever preferred_lft forever
3: eno33554992:mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:4d:bb:5d brd ff:ff:ff:ff:ff:ff
inet6 fe80::20c:29ff:fe4d:bb5d/64 scope link
valid_lft forever preferred_lft forever
修改网络配置文件添加MAC地址 (eno33554992) 、修改BOOTPROTO=static 修改设备名DEVICE=eth1
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth1
UUID=5f1fde10-d2a2-4ea5-8213-7cdb53bb59bf
DEVICE=eth1
ONBOOT=yes
HWADDR=00:0c:29:4d:bb:5d
重启network服务之后 查看ip
[root@localhost ~]# ip a
1: lo:
mtu 65536 qdisc noqueue state
UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777736:mtu 1500 qdisc
pfifo_fast state UP qlen 1000
link/ether 00:0c:29:4d:bb:53 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.10/24 brd 192.168.10.255 scope global
eno16777736
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe4d:bb53/64 scope link
valid_lft forever preferred_lft forever
3: eth1:mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:4d:bb:5d brd ff:ff:ff:ff:ff:ff
添加ip地址
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth1
UUID=5f1fde10-d2a2-4ea5-8213-7cdb53bb59bf
DEVICE=eth1
ONBOOT=yes
HWADDR=00:0c:29:4d:bb:5d
IPADDR0=192.168.1.101
PREFIX0=24
GATEWAY=192.168.1.254
重启网络服务并且查看ip
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ip a
1: lo:mtu 65536 qdisc noqueue state
UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777736:mtu 1500 qdisc
pfifo_fast state UP qlen 1000
link/ether 00:0c:29:4d:bb:53 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.10/24 brd 192.168.10.255 scope global
eno16777736
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe4d:bb53/64 scope link
valid_lft forever preferred_lft forever
3: eth1:mtu 1500 qdisc
pfifo_fast state UP qlen 1000
link/ether 00:0c:29:4d:bb:5d brd ff:ff:ff:ff:ff:ff
inet 192.168.1.101/24 brd 192.168.1.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe4d:bb5d/64 scope link
valid_lft forever preferred_lft forever
[root@localhost ~]# nmcli connection show
NAME UUID TYPE DEVICE
eth1 5f1fde10-d2a2-4ea5-8213-7cdb53bb59bf 802-3-ethernet eth1
eno16777736 ce1a55de-9427-4f08-9ff8-256ac08ebd78 802-3-ethernet eno16777736
原文链接:https://blog.csdn.net/qq_36783142/article/details/75353944
在linux系统下查看网卡的UUID需要nmcli命令,但是该命令系统没有提供。
1、首先要查看哪个软件包提供了该命令
[root@tpp ~]# yum provides "*/nmcli"
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.pubyun.com
* extras: ftp.sjtu.edu.cn
* updates: mirrors.pubyun.com
base/filelists_db | 5.2 MB 00:04
extras/filelists_db | 30 kB 00:00
updates/filelists_db | 829 kB 00:00
1:NetworkManager-0.8.1-99.el6.i686 : Network connection manager and user
: applications
Repo : base
Matched from:
Filename : /usr/bin/nmcli
2、由上面的查看结果,我们知道是NetworkManager,下面我们先安装这个软件包
[root@tpp ~]# yum install -y NetworkManager
3、然后启动服务
[root@tpp ~]# service NetworkManager start
4、查看网卡的UUID
[root@tpp ~]# nmcli con
名称 UUID 类型 范围 真实时间戳
System eth0 d9a980b8-b4bd-4573-b966-77e0fcdd6205 802-3-ethernet 系统 2015年08月29日 星期六 22时07分43秒