nmcli详解

这篇具有很好参考价值的文章主要介绍了nmcli详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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模式:

  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网络,学习生产环境中常见的主从配置文章来源地址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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络编程(一)TCP单进程服务器编程详解

    想要学习socket网络编程的读者一定要首先学好计算机网络的理论知识,包括 1)osi网络七层模型与ip四层模型 2)套接字含义 3)局域网通信过程 4)广域网通信过程 5)tcp,udp通信协议,在这两个协议中的连接建立,数据封装,传输过程,传输中可能遇到的问题的处理(差错控

    2024年02月15日
    浏览(44)
  • Linux网络编程:线程池并发服务器 _UDP客户端和服务器_本地和网络套接字

    文章目录: 一:线程池模块分析 threadpool.c 二:UDP通信 1.TCP通信和UDP通信各自的优缺点 2.UDP实现的C/S模型 server.c client.c 三:套接字  1.本地套接字 2.本地套 和 网络套对比 server.c client.c threadpool.c   server.c client.c server.c client.c

    2024年02月11日
    浏览(60)
  • 【Linux】NTP时间服务器Chrony配置详解

    🦄 个人主页——🎐开着拖拉机回家_大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁🍁🪁🍁🪁 🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🍁🪁🍁🪁🍁 感谢点赞和关注 ,每天

    2024年02月08日
    浏览(38)
  • linux服务器监控之内存、cpu、网络、磁盘

    一、服务器实时内存监控 1、Linux帮助命令 man:Linux下的函数手册命令,可以查看所有命令的使用方法 ls:  ls -al: ll: 2、实时监控命令 top:   能够实时监控系统的运行状态,并且可以按照cpu及内存等进行排序。            语法:top -hv|-bcHiOSs -d secs -n max -u|U user -p pid(s) -o file

    2024年02月09日
    浏览(63)
  • linux 服务器执行post请求 curl命令详解

    curl是一个命令行访问URL的计算机逻辑语言的工具,发出网络请求,然后得到数据并提取出,显示在标准输出“stdout”上面,可以用它来构造http request报文,curl(CommandLine Uniform Resource Locator),即在命令行中利用URL进行数据或者文件传输。 基本语法: curl [option] [url] 实际用法 PO

    2024年02月02日
    浏览(42)
  • 【Linux网络编程】网络编程套接字(TCP服务器)

    作者:爱写代码的刚子 时间:2024.4.4 前言:本篇博客主要介绍TCP及其服务器编码 只介绍基于IPv4的socket网络编程,sockaddr_in中的成员struct in_addr sin_addr表示32位 的IP地址 但是我们通常用点分十进制的字符串表示IP地址,以下函数可以在字符串表示和in_addr表示之间转换 字符串转in

    2024年04月14日
    浏览(74)
  • 【Linux网络服务】Centos7搭建nfs文件共享服务器

    1.NFS介绍 2.环境准备 3.在A服务端机器安装nfs-utils和rpcbind包 4.启动rpcbind检查是否启动了rpcbind服务并监听111端口 5.配置NFS服务的配置文件,参数配置:vi /etc/exports 数据同步与数据异步的区别 数据同步:当系统从内存中向磁盘中持久化数据时,同步发送表示只有当内存中的数据

    2024年02月06日
    浏览(56)
  • Linux系统如何查看服务器带宽及网络使用情况?

    要查看Linux服务器的带宽和网络使用情况,可以使用以下命令和工具: ifconfig命令:ifconfig命令用于显示和配置网络接口信息,包括带宽和网络使用情况。 使用以下命令查看所有网络接口的信息: 该命令将显示每个网络接口的详细信息,包括接收和发送的数据包数量以及网络

    2024年02月16日
    浏览(50)
  • Linux系统如何查看服务器带宽及网络使用情况

       操作系统: Linux    操作环境: Centos7   Linux系统中如何查看服务器带宽?本篇文章主要和大家分享一下Linux系统中查看服务器带宽的方法,有需要的朋友可以参考一下。 众多网络相关的命令可查看:【Linux】之【网络】相关的命令及解析[ethtool、nload、nethogs、iftop、

    2024年02月02日
    浏览(70)
  • Linux学习之网络编程3(高并发服务器)

    Linux网络编程我是看视频学的,Linux网络编程,看完这个视频大概网络编程的基础差不多就掌握了。这个系列是我看这个Linux网络编程视频写的笔记总结。 问题: 根据上一个笔记,我们可以写出一个简单的服务端和客户端通信,但是我们发现一个问题——服务器只能连接一个

    2024年02月01日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包