Linux nmcli命令示例
nmcli示例。 CentOS/RHEL 7/8中的nmcli速查表。 nmcli命令示例。 nmcli con重新加载。 nmcli帮助。使用nmcli添加以太网连接。 Linux中的nmclic命令示例速查表。在Linux中使用nmcli添加绑定连接。使用nmcli添加和配置网络分组。 nmcli命令速查表。使用nmcli配置networkmanager。 nmcli示例。 nmclic命令示例速查表。退出与nmcli的现有连接。 nmcli命令示例。 nmcli启用dhcp。 man nmcli的例子。 nmcli重命名连接。 nmcli删除静态ipv4地址。 nmcle速查表。 nmcli删除dns。
了解nmcli
nmcli是用于控制NetworkManager和报告网络状态的命令行工具。
它可以替代nm-applet或者其他图形客户端。 nmcli用于创建,显示,编辑,删除,激活和停用网络连接,以及控制和显示网络设备状态。
连接存储在配置文件中
NetworkManager服务必须正在运行才能管理这些文件
比较nm设置和ifcfg- *指令(IPv4)
nmcli con mod | ifcfg-*文件 | 效果 |
---|---|---|
ipv4.method manual | BOOTPROTO=none | 静态配置的ipv4地址 |
ipv4.method auto | BOOTPROTO=dhcp | 将从DHCPv4服务器查找配置设置 |
ipv4.address“192.168.0.10/24” | IPADDR=192.168.0.10 PREFIX=24 | 设置静态ipv4地址、网络前缀 |
ipv4.gateway 192.168.0.1 | gateway=192.168.0.1 | 设置ipv4网关 |
ipv4.dns 8.8.8.8 | DNS1=8.8.8.8 | 修改/etc/resolv.conf 的nameserver 使用此值 |
ipv4.dns-search example.com | DOMAIN=example.com | 修改/etc/resolv.conf在搜索指令中使用此域 |
ipv4.ignore-auto-dns true | PEERDNS=no | 忽略来自DHCP服务器的dns服务器信息 |
connection.autoconnect yes | ONBOOT=yes | 启动时自动激活此连接 |
connection.id eth0 | NAME=eth0 | 此连接的名称 |
connection.interface-name eth0 | DEVICE=eth0 | 此连接绑定到此名称的网络接口 |
802-3-ethernet.mac-address 08:00:27:4b:7a:80 | HWADDR=08:00:27:4b:7a:80 | 此连接已绑定到此MAC地址的网络接口 |
ipv4.never-default no | DEFROUTE=yes | 从不将提供的接口的网关用作默认网关 |
比较nm设置和ifcfg- *指令(IPv6)
nmcli con mod | ifcfg-*文件 | 效果 |
---|---|---|
ipv6.method manual | ipv6 | u AUTOCONF =no |
ipv6.method auto | ipv6 | u AUTOCONF =yes |
ipv6.method dhcp | ipv6 | AUTOCONF=no DHCPV6C =yes |
ipv6.addresses “ ”2001:db8::a/64 2001:db8::1“ | IPV6ADDR =2001:db8::a/64 IPV6 | DEFAULTGW =2001:db8::1 |
ipv6.dns。 | DNS0=。 | 修改 /etc/resolv.conf 要使用此 nameserver |
ipv6.dnssearch example.com | DOMAIN =example.com | 修改 /etc/resolv.conf 在“search”指令中使用此域 |
ipv6.ignore auto dns true | ipv6 | PEERDNS =否 |
connection.autoconnect yes | ONBOOT =yes | 启动时自动激活连接 |
connection.id eth0 | NAME =eth0 | 此连接的名称 |
connection.interface-name eth0 | DEVICE =eth0 | 使用此名称将连接绑定到此网络接口 |
802-3-ethernet.mac-address | HWADDR=。 | 连接已绑定到具有此MAC地址的网络接口 |
nmcli命令语法的简要列表
命令 | 作用 |
---|---|
nmcli dev status | 显示所有网络接口的网络管理器状态 |
nmcli con show | 列出所有连接 |
nmcli con show name | 列出连接名称的当前设置 |
nmcli con add con name 名称。。 | 添加名为name的新连接 |
nmcli con mod 名称。。 | 修改连接名称 |
nmcli con reload | 告诉networkManager重新读取配置文件(手动编辑后很有用) |
nmcli con up name | 激活连接名称 |
nmcli dev dis dev | 停用并断开网络接口dev上的当前连接 |
nmcli con del name | 删除连接名称及其配置文件 |
nmcli命令示例(速查表)
以下是一些选定的nmcli命令示例
1.检查NetworkManager是否正在运行
我们可以使用以下命令检查NetworkManager是否正在运行
# nmcli -t -f RUNNING general running
获得一般身份
# nmcli general STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN connected full enabled enabled enabled enabled
2.列出所有可用的设备
查看和列出Linux系统上所有可用的设备
# nmcli dev status DEVICE TYPE STATE CONNECTION eth0 ethernet connected eth0 virbr0 bridge disconnected - eth1 ethernet disconnected - eth2 ethernet disconnected - lo loopback unmanaged - virbr0-nic tun unmanaged -
3.列出所有可用的连接
列出所有可用的连接
# nmcli con show NAME UUID TYPE DEVICE eth1 01fa0bf4-b6bd-484f-a9a3-2b10ff701dcd ethernet eth1 eth0 2e9f0cdd-ea2f-4b63-b146-3b9a897c9e45 ethernet eth0 eth2 186053d4-9369-4a4e-87b8-d1f9a419f985 ethernet eth2
4.列出接口的所有配置
查看接口的所有配置值(默认和自定义)
# nmcli con show eth2 connection.id: eth2 connection.uuid: 186053d4-9369-4a4e-87b8-d1f9a419f985 connection.stable-id: - connection.type: 802-3-ethernet connection.interface-name: eth2 connection.autoconnect: yes <Output trimmed>
5.检查物理网络设备状态
现在所有连接网络设备的状态
# nmcli dev status DEVICE TYPE STATE CONNECTION eth1 ethernet connected eth1 eth0 ethernet connected eth0 eth2 ethernet disconnected - lo loopback unmanaged -
6.使用nmcli更改主机名
理想情况下,我们可以使用hostnamectl命令更改主机名,但也可以使用nmcli更新主机名。
获取当前主机名
# nmcli general hostname centos-8.example.com
接下来更新主机名
# nmcli general hostname centos-8.theitroad.com
验证相同
# nmcli general hostname centos-8.theitroad.com # hostname centos-8.theitroad.com
7.创建一个新的以太网连接并分配静态IP地址
在此示例中," nmcli"使用IPv4地址和网络前缀" 10.10.10.4/24"和默认网关" 10.10.10.1"静态地配置eth2接口,但在启动时仍会自动连接并将其配置保存到/etc /中。 sysconfig/network-scripts/ifcfg-eth2`文件。
# nmcli con add con-name eth2 type ethernet ifname eth2 ipv4.method manual ipv4.address 10.10.10.4/24 ipv4.gateway 10.10.10.1 Connection 'eth2' (460b16aa-e755-403e-b0ec-5e1560dcc441) successfully added.
8.创建一个新的以太网连接并分配DHCP IP地址
以下命令将为接口eth2添加新连接,该连接将使用DHCP获取IPv4网络信息,并在启动时自动连接。配置将保存在/etc/sysconfig/network-scripts/ifcfg-eth2
中,因为`con-name'是eth2.
# nmcli con add con-name eth2 type ethernet ifname eth2 ipv4.method auto Connection 'eth2' (d75cb87f-cd15-40a2-9c33-138e69a06a1f) successfully added.
我们可以在映射的接口配置文件中验证相同
# egrep BOOTPROTO /etc/sysconfig/network-scripts/ifcfg-eth2 BOOTPROTO=dhcp
9.使用两个从属接口创建和配置绑定连接(活动备份)
我们可以使用nmcli与多个从属接口创建绑定连接。
提示:
绑定模式有802.3ad/balance-alb/balance-tlb/broadcast/active-backup/balance-rr/balance-xor 6种类型
删除从接口存在的任何配置文件
# nmcli con del "eth1" # nmcli con del "Wired connection 1"
使用nmcli添加键接口。该命令添加一个主绑定连接,命名绑定接口" mybond0"并使用活动备份模式。我给了MII
,UPDELAY
和DOWNDELAY
一些虚拟值。如果我们想使用primary = <ifname>
添加主接口
# nmcli con add type bond ifname mybond0 bond.options "mode=active-backup,downdelay=5,miimon=100,updelay=10" Connection 'bond-mybond0' (a5c76dbe-550b-4abf-8dc0-88184ade369e) successfully added.
类似地,对于"循环绑定",我们可以使用bond.options作为" downdelay = 5,miimon = 100,mode = balance-rr,updelay = 10"
接下来,使用nmcli为mybond0
添加从站。该命令将第一个从站绑定到eth1接口
# nmcli con add type ethernet ifname eth1 master mybond0 Connection 'bond-slave-eth1' (54dc4282-b90b-4469-9cbf-82bce042de85) successfully added.
该命令将slave 2绑定到eth2接口
# nmcli con add type ethernet ifname eth2 master mybond0 Connection 'bond-slave-eth2' (41a5b4a6-8e6b-4df9-bff2-b67c5328311a) successfully added.
列出活动的连接。因此,我们与我们建立了绑定和从属接口。
# nmcli con show NAME UUID TYPE DEVICE bond-mybond0 25ce17b2-fffb-4bf1-a5a3-e7593299f303 bond mybond0 bond-slave-eth1 54dc4282-b90b-4469-9cbf-82bce042de85 ethernet eth1 bond-slave-eth2 41a5b4a6-8e6b-4df9-bff2-b67c5328311a ethernet eth2 eth0 d05aee6a-a069-4e55-9fe4-771ca3336db6 ethernet eth0
其中我使用nmcli将静态IP地址,NetMask,网关,DNS和DNS搜索设置为mybond0
# nmcli con mod bond-mybond0 ipv4.method manual ipv4.address 10.10.10.8/24 ipv4.gateway 10.10.10.1 ipv4.dns 8.8.8.8 ipv4.dns-search example.com
说明:
要使用DHCP IP,请使用ipv4.method
auto,并且在上述命令中不提供任何与IP地址相关的详细信息
验证" mybond0"配置文件
# egrep 'BOOTPROTO|IPADDR|PREFIX|GATEWAY|DNS' /etc/sysconfig/network-scripts/ifcfg-bond-mybond0 BOOTPROTO=none IPADDR=10.10.10.8 PREFIX=24 GATEWAY=10.10.10.1 DNS1=8.8.8.8
刷新/重新加载mybond0的网络配置更改
# nmcli con up bond-mybond0 Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/11)
验证绑定IP地址
# ip addr show mybond0 7: mybond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 08:00:27:0d:ca:0c brd ff:ff:ff:ff:ff:ff inet 10.10.10.8/24 brd 10.10.10.255 scope global noprefixroute mybond0 valid_lft forever preferred_lft forever
验证可用连接列表
# nmcli con show --active NAME UUID TYPE DEVICE eth1 01fa0bf4-b6bd-484f-a9a3-2b10ff701dcd ethernet eth1 eth0 2e9f0cdd-ea2f-4b63-b146-3b9a897c9e45 ethernet eth0
10.创建和配置网桥
我写了另一篇文章,其中详细介绍了在RHEL/CentOS 7和8 Linux上分别使用nmcli和nmtui创建和配置网桥的步骤。
11.创建和配置网络分组
我写了另一篇文章,其中包含使用在RHEL/CentOS 7/8 Linux上经过验证的nmcli与两个从属服务器创建和配置NIC分组的详细步骤。
12.使用nmcli重新加载连接(重新启动)
从磁盘重新加载所有连接文件。默认情况下,NetworkManager不会监视对连接文件的更改。因此,当对它们进行更改时,我们需要使用此命令来告诉NetworkManager从磁盘重新读取连接配置文件。
# nmcli con reload
13.以交互方式添加/编辑连接
我们可以使用" nmcli" con编辑来使用交互式编辑器来编辑现有连接或者添加新连接。在下面的示例中,我们将编辑eth1的IP地址
# nmcli con edit eth1 ===| nmcli interactive connection editor |=== Editing existing '802-3-ethernet' connection: 'eth1' Type 'help' or '?' for available commands. Type 'print' to show all the connection properties. Type 'describe [.]' for detailed property description. You Jan edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy nmcli> help ----------------------------------------------------------------------------- ---[ Main menu ]-- goto [ | ] :: go to a setting or property remove [.] | :: remove setting or reset property value set [. ] :: set property value describe [.] :: describe property print [all | [.]] :: print the connection verify [all | fix] :: verify the connection save [persistent|temporary] :: save the connection activate [] [/|] :: activate the connection back :: go one level up (back) help/? [] :: print this help nmcli :: nmcli configuration quit :: exit nmcli ----------------------------------------------------------------------------- nmcli> print ipv4.address ipv4.addresses: 10.10.10.4/24 nmcli> remove ipv4.address "10.10.10.4/24" nmcli> print ipv4.address ipv4.addresses: nmcli> set ipv4.address 10.10.10.5/24 Do you also want to set 'ipv4.method' to 'manual'? [yes]: yes nmcli> print ipv4.address ipv4.addresses: 10.10.10.5/24 nmcli> verify Verify connection: OK nmcli> save Connection 'eth1' (7e3a1246-1743-4bb8-9eab-09664ab996b8) successfully updated. nmcli> quit
现在验证我们在eth1的配置文件中所做的更改
# egrep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth1 IPADDR=10.10.10.5
14.将以太网连接BOOTPROTO从DHCP更改为静态
现在,要使用nmcli将以太网连接BOOTPROTO从DHCP更改为静态,我们必须修改ipv4.method
指令以使用手册
# nmcli con mod eth2 ipv4.method manual ipv4.address 10.10.10.4/24 ipv4.gateway 10.10.10.1
现在验证" eth2"的网络配置文件
# egrep 'BOOTPROTO|IPADDR|PREFIX|GATEWAY' /etc/sysconfig/network-scripts/ifcfg-eth2 BOOTPROTO=none IPADDR=10.10.10.4 PREFIX=24 GATEWAY=10.10.10.1
15.将以太网连接BOOTPROTO从静态更改为DHCP
类似地,要使用nmcli将以太网连接BOOTPROTO从静态更改为DHCP,我们必须修改ipv4.method
指令以使用auto
# nmcli con mod eth2 ipv4.method auto
现在验证eth2网络配置文件
# egrep 'BOOTPROTO|IPADDR|PREFIX|GATEWAY' /etc/sysconfig/network-scripts/ifcfg-eth2 BOOTPROTO=dhcp IPADDR=10.10.10.4 PREFIX=24 GATEWAY=10.10.10.1
如我们所见,我们仍然有来自先前命令的IPADDR和其他变量,但是它们被视为空值,因为我们可以看到我的DHCP已为eth2分配了" 10.10.10.5"
# ip addr show dev eth2 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:a8:19:0a brd ff:ff:ff:ff:ff:ff inet 10.10.10.5/24 brd 10.10.10.255 scope global noprefixroute dynamic eth2 valid_lft 1068sec preferred_lft 1068sec inet6 fe80::b81f:a58b:43f1:b8d3/64 scope link noprefixroute valid_lft forever preferred_lft forever
16.使用nmcli更改ONBOOT指令
缺省情况下,接口配置文件中的ONBOOT是yes。因此,要禁用ONBOOT,我们必须使用nmcli修改" connection.autoconnect"指令。
更改此指令之前,请验证ONBOOT值
# egrep 'ONBOOT' /etc/sysconfig/network-scripts/ifcfg-eth2 ONBOOT=yes
更改ONBOOT指令,使用nmcli禁用ONBOOT
# nmcli con mod eth2 connection.autoconnect no
重新验证eth2的ONBOOT指令
# egrep 'ONBOOT' /etc/sysconfig/network-scripts/ifcfg-eth2 ONBOOT=no
17.更改DEFROUTE指令(切勿将此网络用作默认路由)
默认情况下,我们为任何以太网连接添加的任何网关也将被视为默认网关,要关闭此指令,请使用带有ipcli的ipv4.never-default和nmcli。
在进行任何更改之前,请验证eth2配置文件中的DEFROUTE
指令
# egrep '^DEFROUTE' /etc/sysconfig/network-scripts/ifcfg-eth2 DEFROUTE=yes
因此,默认情况下此指令为ON,我们将禁用eth2的默认网关选项。要关闭该指令,我们必须选择" ipv4.never-default"作为" yes"。
# nmcli con mod eth2 ipv4.never-default yes
接下来验证eth2的DEFROUTE指令
# egrep '^DEFROUTE' /etc/sysconfig/network-scripts/ifcfg-eth2 DEFROUTE=no
18.禁用用于以太网连接的IPv6地址(IPV6INIT)
默认情况下,任何以太网连接类型都同时启用了IPv4和IPv6连接类型(IPV6INIT
)。仅使用nmcli
使用IPv4并禁用IPv6
验证eth2的IPv6连接类型的现有状态
# egrep 'IPV6INIT' /etc/sysconfig/network-scripts/ifcfg-eth2 IPV6INIT=yes
因此启用了此功能,我们将使用带有nmcli的ipv6.method
指令来禁用IPv6连接类型
# nmcli con mod eth2 ipv6.method ignore
提示:
ipv6.method支持的输入参数是ignore,auto,dhcp,本地链接,手动,共享。我们可以使用相同的选项通过ipv4.method
启用/禁用IPv4.
现在从eth2配置文件中重新验证IPV6INIT指令
# egrep 'IPV6INIT' /etc/sysconfig/network-scripts/ifcfg-eth2 IPV6INIT=no
19.更改"自动连接"指令
默认情况下,任何以太网连接都将被允许自动连接,我们可以使用
# nmcli con mod eth2 connection.autoconnect no
20.向现有连接添加或者修改DNS
我们可以使用ipv4.dns
将DNS服务器添加到新连接,或者使用nmcli
修改任何现有连接。当前没有为eth1提供DNS服务器IP
# egrep DNS /etc/sysconfig/network-scripts/ifcfg-eth1
接下来修改连接以添加DNS服务器IP地址
# nmcli con mod eth1 ipv4.dns 8.8.8.8
验证eth1
配置文件
[root@rhel-8 ~]# egrep DNS /etc/sysconfig/network-scripts/ifcfg-eth1 DNS1=8.8.8.8
21.将单个/多个DNS服务器添加到连接
在ipv4.dns
中使用'+'前缀,可以将新的DNS IP地址添加到使用nmcli的现有连接。在前面的示例中,我们为eth1添加了8.8.8.8作为我的DNS服务器。现在我们将8.2.2.2添加到同一连接
# nmcli con mod eth1 +ipv4.dns 8.2.2.2
验证eth1配置文件
# egrep DNS /etc/sysconfig/network-scripts/ifcfg-eth1 DNS1=8.8.8.8 DNS2=8.2.2.2
提示:
我们还可以从其他多值(容器)属性(例如ipv4.dns,ipv4.addresses,bond.options等)添加单个或者多个值
22.从连接中删除单个/多个DNS服务器
可以理解,在+
后面添加了,因此我们在使用nmcli
的接口连接中删除了DNS服务器的单个/多个条目。
# nmcli con mod eth1 -ipv4.dns 8.2.2.2,8.8.8.8
验证eth1配置文件
# egrep DNS /etc/sysconfig/network-scripts/ifcfg-eth1
提示:
我们还可以从其他多值(容器)属性(例如ipv4.dns,ipv4.addresses,bond.options等)中删除单个或者多个值。
23.显示带有连接值的选定字段
我们可以使用nmcli con show <ifname>
列出连接的所有配置值,但这会提供一长串详细信息,实际上我们还可以获取单个连接提供的指令的选定值。
获取eth1的IPv4地址
# nmcli -g ip4.address connection show eth1 10.10.10.4/24
我们可以使用-g
通过nmcli
打印特定字段的值。
# nmcli -g ip4.address,ipv4.dns connection show eth1 8.8.8.8,8.2.2.2 10.10.10.4/24
但是,正如我们所看到的,我们没有获得字段到值的映射。我们可以使用-f来指定应使用nmcli打印哪些字段(列名称)。有效字段名称因特定命令而异。通过为--fields
选项提供一个无效值来列出可用的字段。
# nmcli -f ipv4.dns,ipv4.addresses,ipv4.gateway con show eth1 ipv4.dns: 8.8.8.8,8.2.2.2 ipv4.addresses: 10.10.10.4/24 ipv4.gateway: 10.10.10.1
提示:
我们可以选择以下字段:ipv4.method,ipv4.dns,ipv4.dns-search,ipv4.dns-options,ipv4.dns-priority,ipv4.addresses,ipv4.gateway,ipv4.routes,ipv4.route-metric, ipv4.route-table,ipv4.ignore-auto-routes,ipv4.ignore-auto-dns,ipv4.dhcp-client-id,ipv4.dhcp-timeout,ipv4.dhcp-send-hostname,ipv4.dhcp-hostname, ipv4.dhcp-fqdn,ipv4.never-default,ipv4.may-fail,ipv4.dad-timeout
24.监视连接和设备活动
使用nmcli Monitor,我们可以观察NetworkManager的活动。监视连接状态,设备或者连接配置文件中的更改。在此示例中,我们将在一个终端上为eth1执行" nmcli monitor",在另一终端上,我们将对eth1连接进行一些修改
# nmcli con mod eth1 ipv4.method manual ipv4.address 10.10.10.4/24
如我们所见,修改后,monitor命令给出以下输出
# nmcli con monitor eth1 eth1: connection profile changed
25.激活连接
与上面使用的相反,我们将使用" nmcli con up"
# nmcli con up eth2 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/23)
验证可用连接列表
# nmcli con show --active NAME UUID TYPE DEVICE eth1 01fa0bf4-b6bd-484f-a9a3-2b10ff701dcd ethernet eth1 eth0 2e9f0cdd-ea2f-4b63-b146-3b9a897c9e45 ethernet eth0 eth2 186053d4-9369-4a4e-87b8-d1f9a419f985 ethernet eth2
26.停用连接
使用nmcli con down <ifname>禁用与设备的连接,而不阻止设备进一步自动激活。可以将多个连接传递给命令。
# nmcli con down eth1 Connection 'eth1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/32)
验证活动连接列表
# nmcli con show --active NAME UUID TYPE DEVICE eth0 d05aee6a-a069-4e55-9fe4-771ca3336db6 ethernet eth0
说明:
如果使用此接口连接到服务器,则一旦连接被停用,连接就会关闭
27.删除连接
最后在nmcli命令示例中,我们可以使用nmcli con del <ifname>
删除所有类型的可用连接。
# nmcli con del bond-mybond0 bond-slave-eth1 bond-slave-eth2 Connection 'bond-mybond0' (25ce17b2-fffb-4bf1-a5a3-e7593299f303) successfully deleted. Connection 'bond-slave-eth1' (54dc4282-b90b-4469-9cbf-82bce042de85) successfully deleted. Connection 'bond-slave-eth2' (41a5b4a6-8e6b-4df9-bff2-b67c5328311a) successfully deleted.