> 文章列表 > nmcli详解

nmcli详解

nmcli详解

nmcli详解

目录

  • nmcli详解
    • @[toc](目录)
    • 一.简介
    • 二、网卡配置文件详解
    • 三、命令使用
      • 1、命令语法:
      • 2.查看网卡信息命令
      • 3.网卡状态修改命令
      • 4、新增网卡配置文件
      • 5.修改网卡配置
      • 6.修改网络单项
      • 7.修改所对应的文件条目
    • 四、Bond网络
      • 1.bond简介
      • 2.bond操作
      • 3.测试bond连接
        • 1.测试带宽聚合和负载平衡
        • 2.测试高可用性
      • 4.临时修改dns
        • 1.修改resolv.conf文件
        • 2.使用nmcli命令
      • 5.示例临时修改dns

一.简介

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和devicedevice叫网络接口,是物理设备
nmcli device helpconnection是连接,偏重于逻辑设置
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.propertyvaluesetting.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.comipv4.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模式:

  1. mode 0 (balance-rr):在这种模式下,数据包通过不同的接口发送,并且发送顺序依次循环。这种模式提供了负载平衡和带宽聚合的优点。
  2. mode 1 (active-backup):在这种模式下,只有一个接口处于活动状态,其余接口处于备份状态。如果活动接口故障,备份接口将接管数据流量。这种模式提供了高可用性的优点。
  3. mode 2 (balance-xor):在这种模式下,数据包通过接口轮流发送,并使用基于XOR的算法计算校验和。这种模式提供了负载平衡和带宽聚合的优点。
  4. mode 3 (broadcast):在这种模式下,数据包通过所有接口广播。这种模式通常用于特定的测试和调试场景。
  5. mode 4 (802.3ad):在这种模式下,Bonding驱动程序使用IEEE 802.3ad协议进行带宽聚合和链路聚合。这种模式提供了负载平衡和带宽聚合的优点。
  6. mode 5 (balance-tlb):在这种模式下,数据包通过不同的接口发送,并且Bonding驱动程序使用基于传输层的负载平衡算法来分配流量。这种模式提供了负载平衡和带宽聚合的优点。
  7. 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配置,需要在系统配置文件中进行相应的修改。

5.示例临时修改dns

现在让我们创建一个bond网络,学习生产环境中常见的主从配置

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
#重启网络服务

唱吧歌曲