浅谈linux下nmcli命令的用法配置
Red Hat Enterprise Linux 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。
nmcli的功能要比 ifconfig 强大、复杂的多。
-
地址配置工具 nmcli
nmcli – command-line tool for controlling NetworkManager -
nmcli语法:
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT和COMMAND可以用全称也可以用简称,最少可以只用一个字母,建议用头三个字母。OBJECT里面我们平时用的最多的就是connection和device,这里需要简单区分一下connection和device。- device是网络设备的接口,它是物理设备
device -show and manage network interface
nmcli device help - connection是连接,偏重于逻辑设置
connection -start, stop, and manage network connectionsnmcli connection help
多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。这样的好处是针对一个网络接口,我们可以设置多个网络连接,比如静态IP和动态IP,再根据需要up相应connection
- device是网络设备的接口,它是物理设备
-
修改IP地址等属性:
nmcli connection modify IFACE [+ | -] setting.property value- setting.property:
ipv4.addresses ipv4.gateway
ipv4.dns1 ipv4.method manual | auto - 修改配置文件执行生效:
systemctl restart network
nmcli con reload - nmcli命令生效:
nmcli con down eth0 ;
nmcli con up eth0
- setting.property:
使用nmcli配置网络
- NeworkManager是管理和监控网络设置的守护进程
设备即网络接口,连接是对网络接口的配置,一个网络接口可有多个连接配置,但同时只有一个连接配置生效。 - 显示所有包括不活动连接
nmcli con show NAME UUID TYPE DEVICE Wired connection 1 605ed69d-6fa9-3ac7-83c3-490629a0d241 ethernet eth0 ens33 3ad2dec2-129c-4401-bc03-10cf250e2836 ethernet --
- 显示所有活动连接
nmcli con show --active NAME UUID TYPE DEVICE Wired connection 1 605ed69d-6fa9-3ac7-83c3-490629a0d241 ethernet eth0
- 显示网络连接配置
nmcli con show 'system eth0' #后面跟网卡设备的名字NAME
nmcli con show Wired\ connection\ 1
connection.id: Wired connection 1
connection.uuid: 605ed69d-6fa9-3ac7-83c3-490629a0d241
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: --
connection.autoconnect: yes
connection.autoconnect-priority: -999
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.timestamp: 1571836970
connection.read-only: no
connection.permissions: --
connection.zone: --
connection.master: --
connection.slave-type: --
connection.autoconnect-slaves: -1 (default)
其中NAME内容为网卡配置文件中定义的NAME内容,修改配置文件NAME项,可以更改名称,修改后可以选择重启网络服务:“命令:systemctl restart network” ;或者重读配置文件“命令:nmcli con reload”,使其生效
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ensh0"
UUID="3ad2dec2-129c-4401-bc03-10cf250e2836"
DEVICE="eth0" #注意设备名字一定要跟你物理网卡的名字一样,不同网卡无法启动
ONBOOT="yes"
- 显示设备状态
nmcli dev status
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected Wired connection 1
lo loopback unmanaged --
- 显示网络接口属性
nmcli dev show eth0
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:70:CF:D9
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: Wired connection 1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.39.13/24
IP4.GATEWAY: 192.168.39.1
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 192.168.39.1, mt = 100
IP4.ROUTE[2]: dst = 192.168.39.0/24, nh = 0.0.0.0, mt = 100
IP4.DNS[1]: 192.168.39.1
IP4.DOMAIN[1]: localdomain
IP6.ADDRESS[1]: fe80::43a5:efb6:a914:fb83/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
- 创建新连接ceshi,IP自动通过dhcp获取
nmcli con add con-name default type Ethernet ifname eth0
#con add – 添加新的连接 con-name -连接名 type–设备类型 ifname=接口名 autoconnect no=禁止开机自动启动
nmcli con add con-name ceshi type Ethernet ifname eth0 #建立一个新连接ceshi
Connection 'ceshi' (b43c4ef7-a4d0-4a2f-9971-6f305704cd2b) successfully added.
cat /etc/sysconfig/network-scripts/ifcfg-ceshi
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ceshi
UUID=b43c4ef7-a4d0-4a2f-9971-6f305704cd2b
DEVICE=eth0
ONBOOT=yes
nmcli con show #查看所有连接
NAME UUID TYPE DEVICE
ensh0 3ad2dec2-129c-4401-bc03-10cf250e2836 ethernet eth0
ceshi b43c4ef7-a4d0-4a2f-9971-6f305704cd2b ethernet --
nmcli con reload #让配置生效
nmcli con up ceshi #启动这个ceshi配置文件
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
nmcli con show #新的ceshi配置文件已经启动
NAME UUID TYPE DEVICE
ceshi b43c4ef7-a4d0-4a2f-9971-6f305704cd2b ethernet eth0
ensh0 3ad2dec2-129c-4401-bc03-10cf250e2836 ethernet --
- 删除连接
nmcli con del default #后面还是带NAME网卡名
nmcli con delete ceshi
Connection 'ceshi' (b43c4ef7-a4d0-4a2f-9971-6f305704cd2b) successfully deleted.
- 创建新连接static ,指定静态IP,不自动连接
nmcli con add con-name static ifname eth0 autoconnect no ipv4.addresses 192.168.39.88/24 type ethernet ipv4.gateway 192.68.39.100
# 注意参数前后没有规定顺序,写全即可
Connection 'static' (9b50bc27-5653-4ea1-ac02-d11461d9d03c) successfully added.
nmcli con modify static ipv4.method manual #忘记添加静态获取模式了,添加一下
nmcli con show #查看所有状态
NAME UUID TYPE DEVICE
ensh0 3ad2dec2-129c-4401-bc03-10cf250e2836 ethernet eth0
static 9b50bc27-5653-4ea1-ac02-d11461d9d03c ethernet --
cat ifcfg-static #查看网卡配置信息
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.39.88
PREFIX=24
GATEWAY=192.68.39.100
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=static
UUID=9b50bc27-5653-4ea1-ac02-d11461d9d03c
DEVICE=eth0
ONBOOT=no
- 启用static连接配置
nmcli con up static
- 启用默认配置
nmcli con up ensh0
nmcli con show
NAME UUID TYPE DEVICE
ensh0 3ad2dec2-129c-4401-bc03-10cf250e2836 ethernet eth0
static 9b50bc27-5653-4ea1-ac02-d11461d9d03c ethernet --
- 查看帮助
nmcli con add help
- 修改static的IP地址
nmcli con modify static ipv4.addresses 192.168.39.66/24
#其实修改的是网卡配置文件
IPADDR=192.168.39.66
PREFIX=24
- 修改static的网关
nmcli con modify static ipv4.getway 192.168.39.255
#其实修改的是网卡配置文件
GATEWAY=192.168.39.255
- 给同一个配置文件增添一个IP地址
nmcli con modify static +ipv4.addresses 192.168.39.33/24
- 给static增加一个DNS
nmcli con modify static ipv4.dns 114.114.114.114
#其实修改的是网卡配置文件
DNS1=114.114.114.114
- 给static增加第二个DNS
nmcli con modify static +ipv4.dns 8.8.8.8
#其实修改的是网卡配置文件
DNS2=8.8.8.8
- 删除static第二个DNS
nmcli con modify -ipv4.dns 8.8.8.8
#注意这里是删除配置文件的某一个功能,用的是-,而不是del
- DNS文件配置保存在/etc/resolv.conf文件里
cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain localyum
nameserver 192.168.39.1