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连接以及很多其它的特殊参数。
在CentOS / RHEL 7中网络管理命令行工具,也叫nmcli – command-line tool for controlling NetworkManager
经常使用ifconfig的用户应该在CentOS 7中避免使用ifconfig了。nmcli的功能要强大、复杂的多。
二、网卡配置文件详解
/etc/sysconfig/network-scripts/ifcfg-ens33
配置参数说明
# 注:这些参数值不区分大小写,不区分单引号和双引号,甚至可以不用引号。
TYPE:指定网络接口类型,Ethernet表示以太网。
PROXY_METHOD:设置代理方法,none表示不使用代理。
BROWSER_ONLY:指定是否只使用浏览器访问,no表示不限制。
BOOTPROTO:指定引导时获取IP地址的方式,dhcp表示使用DHCP自动获取IP地址。
DEFROUTE:指定默认路由是否启用,yes表示启用。
IPV4_FAILURE_FATAL:指定是否在IPv4地址分配失败时终止启动过程,no表示不终止。
IPV6INIT:指定是否启用IPv6,no表示不启用。
IPV6_AUTOCONF:指定是否启用IPv6自动配置,yes表示启用。
IPV6_DEFROUTE:指定是否启用IPv6默认路由,yes表示启用。
IPV6_FAILURE_FATAL:指定是否在IPv6地址分配失败时终止启动过程,no表示不终止。
IPV6_ADDR_GEN_MODE:指定IPv6地址生成模式,stable-privacy表示使用稳定的私有地址。
NAME:指定接口的名称,ens33是一种命名方式,可以根据需要自定义。
UUID:指定接口的唯一标识符,可以根据需要自动生成。
DEVICE:指定接口的设备名称,与NAME字段相同。
ONBOOT:指定系统启动时是否启用该接口,yes表示启用。
HWADDR:指定接口的物理地址,可以手动配置也可以自动生成。
三、命令使用
1、命令语法:
nmcli[ OPTIONS ] OBJECT { COMMAND | help }
OBJECT 和 COMMAND 可以用全称也可以用简称,最少可以只用一个字母,建议用头三个字母。
OBJECT里面我们平时用的最多的就是connection和device,这里需要简单区分一下connection和device
device叫网络接口,是物理设备
nmcli device help
connection是连接,偏重于逻辑设置
nmcli connection help
# 多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。
# 这样的好处是针对一个网络接口,我们可以设置多个网络连接,比如静态IP和动态IP,再根据需要up相应connection
2.查看网卡信息命令
# 查看所有网络连接
# 长格式
nmcli connection show
# 短格式,缩写
nmcli con show
nmcli c show
# 查看活动的网络连接
nmcli con show -active
# 查看指定网卡的详细信息
nmcli con show eth0
# 显示设备的连接状态
nmcli status
# 显示所有设备网络设备详情信息
nmcli device show
# 显示指定网络设备的详细信息
nmcli device show eth0
3.网卡状态修改命令
# 启用网络连接
nmcli con up eth0
# 停用网络连接(可以被自动激活)
nmcli con down eth0
# 禁用网卡,防止自动被激活
nmcli device disconnect eth0
# 删除网络连接的配置文件
nmcli con delete eth0
# 重新加载网络配置文件
nmcli con reload
4、新增网卡配置文件
# 使用 add 命令会在 /etc/sysconfig/network-scripts中生成以为 ifcfg开头加add指定的 con-name 名称命名,此文件皆由 nmcli命令进行动态配置
# 如果手动修改 ifcfg文件,重启NetworkManager是无法生效,还需要在执行 nmcli con up才行
# 因此不建议手动修改配置文件,一切修改都使用nmcli命令,修改后执行 nmcli con up 立即生效
# 动态获取IP方式的网络连接配置:
nmcli con add con-name dynamic ifname ens36 type ethernet
#启用动态配置文件
nmcli con up dynamic
# 指定静态IP方式的网络连接配置:
nmcli con add con-name ens36 ifname ens36 type ethernet ip4 192.168.3.153/24 gw4 192.168.3.1 (ipv4.dns xx.xx.xx.xx)
#启动静态配置文件
nmcli con up static
5.修改网卡配置
nmcli connection modify Con-Name [+|-]setting.propertyvalue
setting.property:
ipv4.method (manual | auto)
ipv4.addresse
ipv4.gateway
ipv4.dns1
具体含义如下:
Con-Name:要修改的连接名称。
setting.propertyvalue:要修改的设置和新值。+表示添加设置,-表示删除设置,没有符号表示修改设置的值。
ipv4.method:IPv4地址获取方式,可以是manual(手动)或auto(自动)。
ipv4.addresses:IPv4地址和子网掩码,例如192.168.1.100/24。
ipv4.gateway:IPv4网关地址。
ipv4.dns1:IPv4 DNS服务器地址。
例如,如果要修改名为my-connection的连接的IPv4地址为192.168.1.100,子网掩码为255.255.255.0,网关为192.168.1.1,DNS服务器为8.8.8.8和8.8.4.4,可以使用以下命令:
nmcli connection modify my-connection ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 8.8.4.4"
如果要将IPv4地址改为自动获取,可以使用以下命令:
nmcli connection modify my-connection ipv4.method auto
注意,修改网络连接配置后需要重新启动网络服务才能生效。可以使用以下命令重新启动网络服务:
systemctl restart NetworkManager
6.修改网络单项
# 设置网卡自启动,实际修改的是网卡配置文件 ONBOOT=yes
nmcli con mod CON-NAME connection.autoconnect yes
# 修改IP地址是静态(manual)还是dhcp动态(auto)
# 实际修改的是网卡配置文件BOOTPROTO,BOOTPROTO=none 表示静态;BOOTPROTO=dhcp 表示动态
nmcli con mod CON-NAME ipv4.method manual(static) | auto
# 修改IP配置及网关
nmcli con mod CON-NAME ipv4.addresses “10.10.10.10/24 10.10.10.1”
# 修改默认网关
nmcli con mod CON-NAME ipv4.gateway 10.10.10.1
# 添加第二个IP地址
nmcli con mod CON-NAME +ipv4.addresses 10.10.10.10/16
# 删除第二个IP地址
nmcli con mod CON-NAME -ipv4.addresses 10.10.10.10/16
# 添加dns1
nmcli con mod CON-NAME ipv4.dns 114.114.114.114
# 添加dns2
nmcli con mod CON-NAME +ipv4.dns 8.8.8.8
7.修改所对应的文件条目
#修改配置文件
nmcli con mod # ifcfg-* 文件
# IP获取方式
ipv4.method manual|static # BOOTPROTO=none
ipv4.method auto # BOOTPROTO=dhcp
# 连接名称
connection.id eth0 # NAME=eth0
#IP地址信息
ipv4.addresses
“192.0.2.1/24 # IPADDR0=192.0.2.1 PREFIX0=24
192.0.2.254” # GATEWAY0=192.0.2.254
# dns
ipv4.dns 8.8.8.8 # DNS0=8.8.8.8
# dns搜索域
ipv4.dns-search example.com # DOMAIN=example.com
ipv4.ignore-auto-dns true # PEERDNS=no
connection.autoconnect yes # ONBOOT=yes
connection.interface-name eth0 # DEVICE=eth0
802-3-ethernet.mac-address... # HWADDR=...
四、Bond网络
1.bond简介
在Bond网络中,mode是一个关键参数,它定义了Bonding驱动程序如何将多个物理接口组合成一个逻辑接口。以下是Bonding驱动程序支持的几种不同的mode模式:
- mode 0 (balance-rr):在这种模式下,数据包通过不同的接口发送,并且发送顺序依次循环。这种模式提供了负载平衡和带宽聚合的优点。
- mode 1 (active-backup):在这种模式下,只有一个接口处于活动状态,其余接口处于备份状态。如果活动接口故障,备份接口将接管数据流量。这种模式提供了高可用性的优点。
- mode 2 (balance-xor):在这种模式下,数据包通过接口轮流发送,并使用基于XOR的算法计算校验和。这种模式提供了负载平衡和带宽聚合的优点。
- mode 3 (broadcast):在这种模式下,数据包通过所有接口广播。这种模式通常用于特定的测试和调试场景。
- mode 4 (802.3ad):在这种模式下,Bonding驱动程序使用IEEE 802.3ad协议进行带宽聚合和链路聚合。这种模式提供了负载平衡和带宽聚合的优点。
- mode 5 (balance-tlb):在这种模式下,数据包通过不同的接口发送,并且Bonding驱动程序使用基于传输层的负载平衡算法来分配流量。这种模式提供了负载平衡和带宽聚合的优点。
- mode 6 (balance-alb):在这种模式下,Bonding驱动程序使用基于MAC地址的负载平衡算法来分配流量。这种模式提供了负载平衡和带宽聚合的优点。
以上是Bonding驱动程序支持的几种不同的mode模式,每种模式都有自己的优缺点和适用场景。在选择适当的mode模式时,需要根据实际情况和需求进行选择。
2.bond操作
在Bond网络中,bond-slaves是指被绑定到Bond接口上的物理网络接口。通过将多个物理网络接口绑定到单个Bond接口上,可以实现带宽聚合和负载平衡,同时提高网络可靠性和可用性。
在Linux系统中,可以使用nmcli命令来配置Bond网络和bond-slaves。以下是一些常用的nmcli命令,用于管理Bond网络和bond-slaves:
1.创建Bond接口:
sudo nmcli connection add type bond ifname bond0
2.配置Bond接口的参数,例如模式、速度和MAC地址等:
sudo nmcli connection modify bond0 bond.options mode=active-backup miimon=100
3.将物理接口添加到Bond接口中:
sudo nmcli connection add type ethernet ifname eth0 master bond0
sudo nmcli connection add type ethernet ifname eth1 master bond0
4.显示Bond接口和bond-slaves的状态:
sudo nmcli connection show
5.删除Bond接口和bond-slaves:
sudo nmcli connection delete eth0
sudo nmcli connection delete eth1
通过以上命令,就可以创建Bond网络和bond-slaves,并进行相关的管理操作。需要注意的是,在添加或删除bond-slaves时,需要先将相应的网络接口从Bond接口中删除,然后再进行操作。
3.测试bond连接
在测试Bond链接之前,需要先创建Bond接口和添加bond-slaves。可以使用以下命令创建Bond接口和添加bond-slaves:
sudo nmcli connection add type bond ifname bond0
sudo nmcli connection modify bond0 bond.options mode=active-backup miimon=100
sudo nmcli connection add type ethernet ifname eth0 master bond0
sudo nmcli connection add type ethernet ifname eth1 master bond0
其中,bond0是Bond接口的名称,eth0和eth1是要添加到Bond接口中的物理网络接口。
完成上述操作后,可以使用以下命令测试Bond链接的工作情况:
1.测试带宽聚合和负载平衡
可以使用iperf工具测试Bond接口的带宽聚合和负载平衡情况。首先在一台计算机上启动iperf服务器:
iperf -s
然后在另一台计算机上使用iperf客户端连接到服务器:
iperf -c server_ip_address -P 2
其中,-P 2参数指定使用2个并发流进行测试。如果Bond接口正常工作,iperf将在两个物理网络接口上均匀分配流量,并将两个流的带宽合并为一个。
2.测试高可用性
可以通过手动关闭其中一个bond-slave的方式测试Bond接口的高可用性。首先找到其中一个bond-slave的名称:
sudo nmcli connection show
然后使用以下命令关闭其中一个bond-slave:
sudo nmcli connection down eth0
如果Bond接口正常工作,网络连接应该会自动切换到另一个bond-slave,而不会出现网络中断的情况。如果Bond接口无法正常工作,可能需要重新配置Bond接口或检查物理网络接口的状态。
通过以上方法,可以测试Bond链接的带宽聚合、负载平衡和高可用性等方面的工作情况。
4.临时修改dns
在Linux系统中,可以使用以下命令临时修改DNS服务器:
1.修改resolv.conf文件
可以直接修改/etc/resolv.conf文件,添加或删除DNS服务器的IP地址。例如,要添加一个DNS服务器的IP地址,可以使用以下命令:
sudo echo "nameserver 8.8.8.8" >> /etc/resolv.conf
其中,8.8.8.8是要添加的DNS服务器的IP地址。需要注意的是,该方法修改的是系统全局的DNS配置,会影响所有网络连接。
2.使用nmcli命令
可以使用nmcli命令添加或删除DNS服务器。例如,要添加一个DNS服务器的IP地址,可以使用以下命令:
sudo nmcli con mod eth0 ipv4.dns "8.8.8.8"
其中,eth0是网络接口的名称,8.8.8.8是要添加的DNS服务器的IP地址。需要注意的是,该方法只会修改指定网络接口的DNS配置,不会影响其他网络接口或系统全局的DNS配置。
无论是修改resolv.conf文件还是使用nmcli命令,修改后的DNS配置都是临时生效的,系统重启后会恢复到默认配置。如果需要永久修改DNS配置,需要在系统配置文件中进行相应的修改。文章来源:https://www.toymoban.com/news/detail-763163.html
5.示例临时修改dns
现在让我们创建一个bond网络,学习生产环境中常见的主从配置文章来源地址https://www.toymoban.com/news/detail-763163.html
nmcli connection add type ethernet ifname ens33 con-name ens33 ip4 192.168.3.100/24 gw4 192.168.3.1
#添加一个名为ens33的以太网连接,指定IP地址为192.168.3.100,子网掩码为255.255.255.0,网关为192.168.3.1:
nmcli c add con-name bond0 type bond ifname bond0 mode 1 miimon 100 ip4 192.168.3.101/24 gw4 192.168.3.254
#添加一个名为bond0的Bond连接,使用mode 1(即active-backup模式),miimon 100(即每100毫秒检查一次链路状态),指定IP地址为192.168.3.101,子网掩码为255.255.255.0,网关为192.168.3.254:
nmcli c add type bond-slave ifname ens36 con-name ens36 master bond0
#添加一个名为ens36的Bond从属连接,指定其所属的Bond接口为bond0:
nmcli c add type bond-slave ifname ens37 con-name ens37 master bond0
#添加一个名为ens37的Bond从属连接,指定其所属的Bond接口为bond0:
nmcli c reload
#重启网络服务
到了这里,关于nmcli详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!