Linux nmcli命令简单使用教程(nmcli指令)

Dontla 2024-06-21 12:07:03 阅读 63

参考文章:(CentOS、Fedora 等基于Red Hat的发行版)/etc/sysconfig/network-scripts/网络配置文件字段解释(IP设置、稳定隐私地址、ONBOOT、DEFROUTE)

文章目录

先区分两个概念:网络设备和网络连接网络设备网络连接网络连接的UUID nmcli可以为一个网络设备创建多个网络连接,但同一时刻只有一个能生效 Mastering Network Management with nmcli in Linux(掌握Linux中使用nmcli进行网络管理)Introduction to nmcli(介绍nmcli)Key Features(主要特性) Getting Started with nmcli(开始使用nmcli)Listing Network Devices(`nmcli device`)(列出网络设备)Viewing Available Wi-Fi Networks(`nmcli device wifi list`)(查看可用的Wi-Fi网络) Managing Network Connections(管理网络连接)Creating a New Connection(`nmcli con add xxx`)(创建新连接)WI-Fi连接以太网连接静态连接生成配置文件示例 动态连接生成配置文件示例 移动宽带连接VPN连接创建VLAN连接(虚拟局域网) 删除存在的网络连接(`nmcli con delete "MyConnection"`)Activating and Deactivating Connections(`nmcli con up id "MyConnect"`、`nmcli con down id "MyConnect"`)(激活和停用连接) Using `nmcli` to Get Network Information(使用`nmcli`获取网络信息)Listing All Network Devices(`nmcli device`)(列出所有网络设备)Viewing Detailed Information of a Specific Network Device(`nmcli device show [device]`)(查看特定网络设备的详细信息)GENERAL.STATE(网络连接状态)WIRED-PROPERTIES.CARRIER字段(表示物理连接是否正常(网线是否正常连接)) Listing All Network Connections(`nmcli connection show`)(列出所有网络连接)Viewing Detailed Information of a Specific Network Connection(`nmcli connection show [connection]`)(查看特定网络连接的详细信息)Viewing Active Network Connections(`nmcli connection show --active`)(查看正在使用的网络连接) Advanced Usage(高级用法)设置静态IP地址修改后再执行生效命令(先`nmcli con modify xxx`再`nmcli con up xxx`)执行修改命令同时生效(`nmcli con up xxx xxx`) 设置动态ipMonitoring Network Traffic(监控网络流量) Tips and Tricks(提示和技巧)Conclusion(结论) 其他疑问如果只是执行nmcli con modify,修改的信息会存储在哪?如果不执行nmcli con up,重启系统后会自动生效吗?nmcli修改网络配置后一定要先con down再con up吗,还是只要con up就能立即生效?什么情况用nmcli dev disconnect xxx或connect xxx,什么情况用nmcli con up xxx或down xxx?执行nmcli con up xxx为什么会把已经disconnect的设备拉起来?nmcli网口没插网线时,只有网络配置设置为固定ip,才能con up吗? 其他功能设置网口配置文件的默认路由设置网络配置文件的ONBOOT参数

先区分两个概念:网络设备和网络连接

当使用nmcli或查看/etc/sysconfig/network-scripts/目录时,网络设备和网络连接是两个关键概念,确实有些容易混淆。

网络设备

网络设备是指你的计算机上的物理网络接口,例如以太网卡(如eth0)、无线网卡(如wlan0)等。这些设备是负责与外部网络进行通信的硬件。

nmcli中,你可以使用nmcli device命令来查看、管理这些设备。例如,nmcli device status会列出所有设备及其状态。

/etc/sysconfig/network-scripts/目录中,你不直接操作网络设备,但网络配置文件(如ifcfg-eth0)通常会基于设备名称命名,并包含了用于该设备的网络设置。

网络连接

网络连接是指NetworkManager中的一个配置,它包括一系列的参数,如IP地址、子网掩码、网关、DNS服务器等。这些参数定义了如何通过特定的网络设备进行网络通信。

nmcli中,你可以使用nmcli connectionnmcli con命令来查看和管理网络连接。例如,nmcli con show会列出所有的网络连接。

/etc/sysconfig/network-scripts/目录中,每个ifcfg-文件就代表一个网络连接。文件名后面的部分通常是设备名(如ifcfg-eth0),但实际上,这个文件包含的是网络连接配置。

总的来说,网络设备是硬件接口,负责与外部网络通信;网络连接则是一组配置,定义了如何通过特定的设备进行通信。在使用nmcli或查看/etc/sysconfig/network-scripts/时,应注意区分这两个概念。

网络连接的UUID

UUID(Universally Unique Identifier)是一个全局唯一的标识符,用于在Linux系统中唯一地标识对象或实体。在这种情况下,每个网络连接都有一个唯一的UUID。

当你使用nmcli con show命令时,你将看到一个列表,其中包含了你的系统上所有的网络连接,每个连接都有一个唯一的UUID。

在这里插入图片描述

UUID是一个很方便的工具,因为它允许你精确地引用特定的网络连接,即使它们的名称发生变化或者在不同的设备上有相同的名称。

nmcli可以为一个网络设备创建多个网络连接,但同一时刻只有一个能生效

一个网络设备可以对应多个网络连接配置文件。例如,一个以太网接口(如 eth0)可能有多个不同的网络配置,比如一个用于家庭网络,一个用于办公室网络。这两个网络配置都可以被保存为独立的连接配置文件。

/etc/sysconfig/network-scripts/ 目录中,你可以为同一个设备创建多个 ifcfg-<name> 文件,每个文件代表一种不同的网络配置。文件名 <name> 不必和设备名称完全相同,但通常会包含设备名称作为参考。比如,你可以创建 ifcfg-eth0-homeifcfg-eth0-office 两个文件,分别代表针对 eth0 设备的家庭和办公室网络配置。

在使用 nmcli 命令时,你也可以创建和管理多个连接配置。使用 nmcli con add 命令可以创建新的连接配置,并通过 con-name 参数为其指定一个唯一的名称。例如:

nmcli con add type ethernet con-name "Home" ifname eth0 ip4 192.168.1.100/24 gw4 192.168.1.1nmcli con add type ethernet con-name "Office" ifname eth0 ip4 10.0.0.100/24 gw4 10.0.0.1

上述命令创建了两个针对 eth0 设备的连接配置,分别命名为 “Home” 和 “Office”。然后你可以根据需要激活这些连接:

nmcli con up id Homenmcli con up id Office

注意,每次只能有一个网络连接处于活动状态。如果你尝试激活一个新的连接,当前活动的连接将会被断开。

Mastering Network Management with nmcli in Linux(掌握Linux中使用nmcli进行网络管理)

Network management on Linux systems can be intricate, requiring a deep understanding of various commands and utilities(实用程序). Among these tools, nmcli stands out for its versatility and ease of use.

Linux系统上的网络管理可能非常复杂,需要深入理解各种命令和工具。在这些工具中,nmcli以其多功能性和易用性脱颖而出。

This article aims to provide an in-depth(彻底的、深入详尽的) guide to mastering network management through the nmcli command, covering its fundamental concepts, practical usage, and advanced features.

本文旨在提供一个深入指南,通过nmcli命令掌握网络管理,涵盖其基本概念、实际用法和高级特性。

Introduction to nmcli(介绍nmcli)

nmcli is a command-line tool for controlling NetworkManager and reporting network status. It provides a simple yet powerful interface to manage networking settings, making it ideal for both new and experienced Linux users.

nmcli是一个用于控制NetworkManager和报告网络状态的命令行工具。它提供了一个简单但强大的接口来管理网络设置,使其成为新手和有经验的Linux用户的理想选择。

Key Features(主要特性)

Device management: Query and control network interfaces and devices.

设备管理:查询和控制网络接口和设备。Connection management: Add, modify, delete, and activate/deactivate network connections.

连接管理:添加、修改、删除和激活/停用网络连接。Networking information: Display detailed information about network devices, connections, and overall networking status.

网络信息:显示关于网络设备、连接和整体网络状态的详细信息。

Getting Started with nmcli(开始使用nmcli)

Before diving into the complex aspects of nmcli, it’s essential to understand the basics. Here’s how to get started.

在深入研究nmcli的复杂方面之前,了解基础知识是必要的。以下是如何开始。

Listing Network Devices(nmcli device)(列出网络设备)

To list all network devices and their status, use:

要列出所有网络设备及其状态,请使用:

nmcli device

This command provides a quick overview of all network interfaces and their current state (e.g., connected, disconnected).

此命令提供了所有网络接口及其当前状态(例如,已连接、未连接)的快速概览。

在这里插入图片描述

Viewing Available Wi-Fi Networks(nmcli device wifi list)(查看可用的Wi-Fi网络

For Wi-Fi interfaces, scanning and listing available networks is straightforward(简单的、不复杂的):

对于Wi-Fi接口,扫描和列出可用网络很简单:

nmcli device wifi list

This command displays all nearby Wi-Fi networks, their signal strength, security type, and more.

此命令显示所有附近的Wi-Fi网络,它们的信号强度、安全类型等信息。

Managing Network Connections(管理网络连接)

Beyond merely(不仅仅) displaying network information, nmcli excels(擅长) in managing network connections.

除了显示网络信息外,nmcli在管理网络连接方面表现出色。

Creating a New Connection(nmcli con add xxx)(创建新连接)

WI-Fi连接

Creating a new Wi-Fi connection can be done with:

可以通过以下方式创建新的Wi-Fi连接:

nmcli con add con-name "MyWiFi" ifname wlan0 type wifi ssid "MySSID"nmcli con modify "MyWiFi" wifi-sec.key-mgmt wpa-psknmcli con modify "MyWiFi" wifi-sec.psk "MyPassword"

These commands create a new Wi-Fi connection named “MyWiFi”, set the SSID to “MySSID”, and configure WPA-PSK authentication with the password “MyPassword”.

这些命令创建了一个名为"MyWiFi"的新Wi-Fi连接,将SSID设置为"MySSID",并使用密码"MyPassword"配置WPA-PSK认证。

SSID全称为Service Set Identifier,中文常译为服务集标识符,是一个网络的名称。在无线网络(Wi-Fi)中,你可以通过SSID来识别你想要连接的特定网络。

当你尝试连接到一个Wi-Fi网络时,你通常会看到一个可用网络列表,这些就是各个网络的SSID。比如在一个咖啡馆,你可能会看到一个名为"CoffeeShopWiFi"的网络,那么"CoffeeShopWiFi"就是这个网络的SSID。

在你给出的命令中,ssid "MySSID"这一部分就是设置新建Wi-Fi连接的网络名称为"MySSID"。

nmcli支持创建多种类型的网络连接,包括以太网、Wi-Fi、移动宽带、VPN等。以下是一些常见类型的网络连接的创建方法:

以太网连接
静态连接

nmcli con add type ethernet con-name "MyEthernet" ifname eth0 ip4 192.168.1.2/24 gw4 192.168.1.1

其中MyEthernet是要创建的连接名,eth0是要在之上创建的网络设备名。请将它们替换为你自己的实际参数。

生成配置文件示例

创建后会自动在/etc/sysconfig/network-scripts/下生成配置文件:

在这里插入图片描述

TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=noneIPADDR=192.168.1.2PREFIX=24GATEWAY=192.168.1.1DEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=MyEthernetUUID=a3382d5f-7e4b-4182-b8d5-bd599ec581eaDEVICE=eth0ONBOOT=yes

动态连接

如果你想要创建一个动态IP(DHCP)的以太网连接,你可以使用以下的nmcli命令:

nmcli con add type ethernet con-name "MyEthernet" ifname eth0

在这个命令中,“MyEthernet”是你想要创建的连接的名称,“eth0”是你想要在其上创建连接的网络设备的名称。请将它们替换为你自己的实际参数。

请注意,这个命令没有指定IP地址或者网关,因为在DHCP模式下,这些信息会由DHCP服务器自动分配。

生成配置文件示例

创建后会自动在/etc/sysconfig/network-scripts/下生成配置文件:

在这里插入图片描述

TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=dhcpDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=MyEthernetUUID=aab40c13-db9c-44ff-8f65-91d47d0ad76dDEVICE=eth0ONBOOT=yes

移动宽带连接

nmcli con add type gsm con-name "MyMobileBroadband" ifname ttyUSB0 apn "my.apn.com"

在上述命令中,“ttyUSB0”是你的移动宽带设备的名称,而"my.apn.com"是你的访问点名称(APN)。请将它们替换为你自己的实际参数。

VPN连接

创建一个VPN连接稍微复杂一些,因为你需要知道VPN的具体类型(例如OpenVPN、PPTP等)以及相关的配置选项。下面是一个创建OpenVPN连接的基本示例:

nmcli con add type vpn con-name "MyVPN" ifname tun0 vpn-type openvpnnmcli con modify "MyVPN" vpn.data 'remote=vpn.example.com, username=myusername, password=mypassword'

在上述命令中,“tun0”是VPN设备的名称,而“vpn.example.com”,“myusername”和“mypassword”是VPN服务器的地址、用户名和密码。请将它们替换为你自己的实际参数。

创建VLAN连接(虚拟局域网)

nmcli con add type vlan con-name "MyVlan" dev eth0 id 100

在上述命令中,“eth0”是你想要在其上创建VLAN的设备的名称,而“100”是VLAN的ID。请将它们替换为你自己的实际参数。

删除存在的网络连接(nmcli con delete "MyConnection"

nmcli con delete "MyConnection"

在上述命令中,“MyConnection”是你想要删除的网络连接的名称。

在这里插入图片描述

在这里插入图片描述

(因为我用同一个名字MyEthernet创建了两个网络连接,第二次创建它自动生成了一个ifcfg-MyEthernet-1文件,我用这个MyEthernet删除网络连接的时候,它们俩会被一起删除)

Activating and Deactivating Connections(nmcli con up id "MyConnect"nmcli con down id "MyConnect")(激活和停用连接)

Activating a connection is as simple as:

激活连接就是这么简单:

nmcli con up id "MyWiFi"

To deactivate it:

要停用它:

nmcli con down id "MyWiFi"

Using nmcli to Get Network Information(使用nmcli获取网络信息)

You can use the nmcli command to get various network information. Below are some basic nmcli commands and the information they provide:

你可以使用nmcli命令获取各种网络信息。以下是一些基本的nmcli命令,以及它们所提供的信息:

Listing All Network Devices(nmcli device)(列出所有网络设备

nmcli device

This will display all network devices (interfaces) and their status.

这将显示所有网络设备(接口)及其状态。

在这里插入图片描述

Viewing Detailed Information of a Specific Network Device(nmcli device show [device])(查看特定网络设备的详细信息)

nmcli device show [device]

Where [device] is the name of the device you want to view. For example, nmcli device show eth0 will display detailed information about the device named eth0.

其中[device]是你想要查看的设备名称。例如,nmcli device show eth0将显示名为eth0的设备的详细信息。

在这里插入图片描述

在这里插入图片描述

GENERAL.STATE(网络连接状态)

GENERAL.STATE是NetworkManager工具中用于表示网络设备(如网卡)状态的属性。

GENERAL.STATE的值可以告诉你网络设备的连接状态,包括是否已经建立了网络连接,是否正在尝试建立网络连接,以及是否存在故障等。这个属性的值是一个由数字和相应的描述性文本组成的信息。

例如,当GENERAL.STATE的值为100 (connected)时,表示该设备已成功连接到网络。而如果其值为20 (unavailable),则表示该设备目前无法用于建立网络连接。

你可以通过nmcli device show [device]命令查看包括GENERAL.STATE在内的设备状态信息,其中[device]是你想要查询的设备名称。例如,nmcli device show eth0将显示名为eth0的设备的状态信息。

请注意,这些状态信息并不能提供关于网络连接质量或速度的详细信息,它们主要是用来判断设备是否能够正常工作,以及是否已经建立了网络连接。

WIRED-PROPERTIES.CARRIER字段(表示物理连接是否正常(网线是否正常连接))

WIRED-PROPERTIES.CARRIER是一种用于描述有线网络连接状态的属性,特别是在NetworkManager中。当我们谈论“载波”或者“Carrier”时,通常是指物理层面的连接状态。

例如,对于一个以太网连接,如果网线插头插入了网卡,并且另一端正确地连接到了交换机或者路由器,那么就会说"carrier is present"(存在载波),也就是有线连接是活动的。在这种情况下,WIRED-PROPERTIES.CARRIER的值就会是1

反之,如果网线没有插入网卡,或者虽然插入了但是另一端并没有连接到交换机或者路由器,那么就会说"carrier is not present"(不存在载波),有线连接是非活动的。在这种情况下,WIRED-PROPERTIES.CARRIER的值就会是0

请注意,WIRED-PROPERTIES.CARRIER只能告诉你物理连接是否正常,但不能告诉你网络连接是否可用。因为即使物理连接正常,如果没有正确配置IP地址、子网掩码、默认网关等网络参数,或者网络服务提供商的服务出现问题,那么网络连接仍然可能无法使用。

Listing All Network Connections(nmcli connection show)(列出所有网络连接)

nmcli connection show

This will display all configured network connections and their status.

这将显示所有已配置的网络连接及其状态。

在这里插入图片描述

Viewing Detailed Information of a Specific Network Connection(nmcli connection show [connection])(查看特定网络连接的详细信息)

nmcli connection show [connection]

Where [connection] is the name of the connection you want to view. For example, nmcli connection show MyWiFi will display detailed information about the connection named “MyWiFi”.

其中[connection]是你想要查看的连接名称。例如,nmcli connection show MyWiFi将显示名为"MyWiFi"的连接的详细信息。

内容有点多:

在这里插入图片描述

[root@localhost ~]# nmcli connection show enp125s0f0connection.id: enp125s0f0connection.uuid: e5687f51-bf18-4893-b8ea-b6fcc275a3abconnection.stable-id: --connection.type: 802-3-ethernetconnection.interface-name: enp125s0f0connection.autoconnect: yesconnection.autoconnect-priority: 0connection.autoconnect-retries: -1 (default)connection.multi-connect: 0 (default)connection.auth-retries: -1connection.timestamp: 1709702760connection.read-only: noconnection.permissions: --connection.zone: --connection.master: --connection.slave-type: --connection.autoconnect-slaves: -1 (default)connection.secondaries: --connection.gateway-ping-timeout: 0connection.metered: unknownconnection.lldp: defaultconnection.mdns: -1 (default)connection.llmnr: -1 (default)connection.wait-device-timeout: -1802-3-ethernet.port: --802-3-ethernet.speed: 0802-3-ethernet.duplex: --802-3-ethernet.auto-negotiate: no802-3-ethernet.mac-address: --802-3-ethernet.cloned-mac-address: --802-3-ethernet.generate-mac-address-mask:--802-3-ethernet.mac-address-blacklist: --802-3-ethernet.mtu: auto802-3-ethernet.s390-subchannels: --802-3-ethernet.s390-nettype: --802-3-ethernet.s390-options: --802-3-ethernet.wake-on-lan: default802-3-ethernet.wake-on-lan-password: --ipv4.method: manualipv4.dns: 8.8.8.8ipv4.dns-search: --ipv4.dns-options: --ipv4.dns-priority: 0ipv4.addresses: 192.168.1.225/24ipv4.gateway: 192.168.1.1ipv4.routes: --ipv4.route-metric: -1ipv4.route-table: 0 (unspec)ipv4.routing-rules: --ipv4.ignore-auto-routes: noipv4.ignore-auto-dns: noipv4.dhcp-client-id: --ipv4.dhcp-iaid: --ipv4.dhcp-timeout: 0 (default)ipv4.dhcp-send-hostname: yesipv4.dhcp-hostname: --ipv4.dhcp-fqdn: --ipv4.dhcp-hostname-flags: 0x0 (none)ipv4.never-default: noipv4.may-fail: yesipv4.dad-timeout: -1 (default)ipv6.method: autoipv6.dns: --ipv6.dns-search: --ipv6.dns-options: --ipv6.dns-priority: 0ipv6.addresses: --ipv6.gateway: --ipv6.routes: --ipv6.route-metric: -1ipv6.route-table: 0 (unspec)ipv6.routing-rules: --ipv6.ignore-auto-routes: noipv6.ignore-auto-dns: noipv6.never-default: noipv6.may-fail: yesipv6.ip6-privacy: -1 (unknown)ipv6.addr-gen-mode: stable-privacyipv6.ra-timeout: 0 (default)ipv6.dhcp-duid: --ipv6.dhcp-iaid: --ipv6.dhcp-timeout: 0 (default)ipv6.dhcp-send-hostname: yesipv6.dhcp-hostname: --ipv6.dhcp-hostname-flags: 0x0 (none)ipv6.token: --proxy.method: noneproxy.browser-only: noproxy.pac-url: --proxy.pac-script: --GENERAL.NAME: enp125s0f0GENERAL.UUID: e5687f51-bf18-4893-b8ea-b6fcc275a3abGENERAL.DEVICES: enp125s0f0GENERAL.IP-IFACE: enp125s0f0GENERAL.STATE: activatedGENERAL.DEFAULT: yesGENERAL.DEFAULT6: noGENERAL.SPEC-OBJECT: --GENERAL.VPN: noGENERAL.DBUS-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1GENERAL.CON-PATH: /org/freedesktop/NetworkManager/Settings/2GENERAL.ZONE: --GENERAL.MASTER-PATH: --IP4.ADDRESS[1]: 192.168.1.225/24IP4.GATEWAY: 192.168.1.1IP4.ROUTE[1]: dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 100IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 100IP4.DNS[1]: 8.8.8.8IP6.ADDRESS[1]: fe80::a1dc:584b:d1df:bf05/64IP6.GATEWAY: --IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 100

Viewing Active Network Connections(nmcli connection show --active)(查看正在使用的网络连接)

nmcli connection show --active

This will list all currently active (in use) network connections.

这将列出所有当前活动(正在使用)的网络连接。

These are some basic usage, the nmcli tool provides many more options and commands to get and manipulate network information. For more detailed help, you can refer to the nmcli man page by typing man nmcli in the terminal.

以上都是一些基本的用法,nmcli工具提供了更多的选项和命令来获取和操作网络信息。如果需要更详细的帮助,你可以查看nmcli的man手册,通过在终端输入man nmcli命令来访问。

在这里插入图片描述

Advanced Usage(高级用法)

For power users(高级用户、特权用户), nmcli offers advanced functionalities that provide greater control over network configurations.

对于高级用户,nmcli提供了提供更多控制网络配置的高级功能。

设置静态IP地址

设置静态IP地址可以通过两种方式进行:修改后再执行生效命令,或者执行修改命令同时立即生效。

修改后再执行生效命令(先nmcli con modify xxxnmcli con up xxx

要为连接配置静态IP地址,你可以按照以下步骤操作:

nmcli con modify "MyConnection" ipv4.addresses 192.168.1.100/24nmcli con modify "MyConnection" ipv4.gateway 192.168.1.1nmcli con modify "MyConnection" ipv4.dns "8.8.8.8,8.8.4.4"nmcli con modify "MyConnection" ipv4.method manual

以上命令将会为"MyConnection"设置静态IP地址、网关、DNS服务器,并将网络配置模式切换为手动。然后,你需要执行下面的命令使更改生效:

nmcli con up "MyConnection"

执行修改命令同时生效(nmcli con up xxx xxx

如果你希望在设置静态IP地址的同时立即生效,你可以使用以下命令:

nmcli con up id "MyConnection" ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8,8.8.4.4" ipv4.method manual

这个命令将会为"MyConnection"设置静态IP地址、网关、DNS服务器,并将网络配置模式切换为手动。并且,新的配置将会立即生效,无需再执行nmcli con up "MyConnection"命令。

设置动态ip

NetworkManager命令行工具nmcli可以用于在Linux系统中设置网络接口为动态IP(使用DHCP)。以下是如何使用nmcli将以太网接口(例如 eth0)设置为动态IP的步骤:

首先,打开终端。

确定你想要更改的设备的名称。输入以下命令可以列出所有网络设备:

nmcli device status

找到你想要修改的设备,然后运行以下命令将其设置为动态IP。请将<interface-name>替换为你的设备名称:

nmcli con modify <interface-name> ipv4.method auto

重新启动你的网络连接来应用这些更改:

nmcli con down <interface-name> && nmcli con up <interface-name>

如果你不知道设备的确切名称,或者如果设备名包含特殊字符(例如空格),你可以使用设备的UUID(唯一标识符)而不是设备名。你可以通过运行 nmcli con show 来找到设备的UUID。

注意:这些命令可能需要root权限才能运行,因此你可能需要使用 sudo 或成为 root 用户。

Monitoring Network Traffic(监控网络流量)

While nmcli does not directly offer traffic(流量) monitoring, it can be combined with other tools like nethogs or iftop for real-time traffic analysis. However, nmcli is invaluable(极有用的) for quickly identifying which connections or interfaces are active before setting up monitoring.

虽然nmcli不直接提供流量监控,但它可以与nethogsiftop等其他工具结合使用,进行实时流量分析。然而,在设置监控之前,nmcli对于快速识别哪些连接或接口处于活动状态是非常宝贵的。

这段话的意思是,nmcli工具在设置监控之前,对于快速识别哪些网络连接或网络接口处于活动状态非常有价值。

在一些网络管理和监控的场景中,可能需要先知道当前有哪些网络连接或接口正在使用中,以便决定针对哪些进行监控。例如,你可能只想要监控当前正在使用的Wi-Fi连接,或者某个特定的有线以太网接口。

通过nmcli,你可以方便地查看到这些信息。例如,命令nmcli connection show --active可以列出所有当前活动的网络连接,而nmcli device status则可以显示所有网络接口及其状态。

因此,nmcli在这样的场景下就显得非常有用,能够提供重要的信息来帮助你设置网络监控。

Tips and Tricks(提示和技巧)

Aliases: For frequent nmcli commands, consider adding aliases in your shell configuration file (.bashrc, .zshrc) to save time.

别名:对于频繁使用的nmcli命令,考虑在shell配置文件(.bashrc, .zshrc)中添加别名以节省时间。Batch Commands: You can execute multiple nmcli commands in sequence(依次) by separating them with semicolons (;).

批处理命令:您可以通过用分号(;)分隔来顺序执行多个nmcli命令。Scripting: nmcli can be used in scripts to automate network configuration tasks, making it a powerful tool for system administrators.

脚本:nmcli可用于脚本中自动化网络配置任务,使其成为系统管理员的强大工具。

Conclusion(结论)

The nmcli command is a comprehensive tool for network management on Linux systems. By understanding and utilizing its capabilities, users can efficiently manage network connections, troubleshoot issues, and optimize their networking setup. Whether you’re a casual user(普通用户) looking to connect to Wi-Fi or a seasoned administrator configuring complex networks, nmcli provides the functionality needed to achieve your goals.

nmcli命令是Linux系统上网络管理的综合工具。通过理解和利用其功能,用户可以有效管理网络连接,排除问题,并优化他们的网络设置。无论您是希望连接到Wi-Fi的普通用户还是配置复杂网络的资深管理员,nmcli都提供了实现目标所需的功能。

"Capability"和"Functionality"这两个词都描述了一个系统、产品或服务的特性或能力,但是它们的含义和用法有一些区别:

Capability:这个词通常指的是一个系统、设备或服务所具有的潜在能力或技能。例如,一款手机可能具有拍摄4K视频的“capability”,即使用户并没有使用这项功能。Capability更侧重于理论上的可能性和潜力。

Functionality:这个词通常指的是一个系统、设备或服务实际提供的功能或操作。例如,电子邮件系统提供发送和接收邮件的“functionality”。Functionality更侧重于实际的操作和执行。

在一些情况下,这两个词可以互换使用,但是总体来说,"capability"更关注潜在的能力,而"functionality"更关注实际的功能。

其他疑问

如果只是执行nmcli con modify,修改的信息会存储在哪?如果不执行nmcli con up,重启系统后会自动生效吗?

当使用 nmcli con modify 修改网络连接的配置时,修改后的设置将被保存在 NetworkManager

的配置文件中。具体的文件位置可能因系统而异,但通常在 /etc/NetworkManager/system-connections/

目录下。

这些修改在你重新激活网络连接或者重启系统后才会生效。也就是说,如果你没有立即执行 nmcli con up

命令,但是稍后重启了系统,新的设置应该会在系统重启后生效。

然而,我建议在修改设置后立即重新激活网络连接。这样可以确保新的设置正确地应用,并且你可以立即检查新设置是否工作正常。如果出现任何问题,你可以更快地识别和解决它们。

在这里插入图片描述

nmcli修改网络配置后一定要先con down再con up吗,还是只要con up就能立即生效?

使用nmcli命令修改网络配置后,通常需要先执行con down再执行con up才能使修改的设置生效。这是因为con down会关闭连接,然后con up会重新启动它,同时应用你所做的任何更改。

简单来说:

nmcli con down:这个命令将断开网络连接。nmcli con up:这个命令将重新建立网络连接。

所以如果你直接使用nmcli con up命令,那么可能新的配置并不会立即生效,因为网络连接实际上并未中断过,也就没有重新加载新的配置。

但是,也有一些情况下,比如修改某些非连接相关的设置(例如修改网络连接的描述等),可能只需执行con up也能生效,这取决于你具体修改了哪些配置。

什么情况用nmcli dev disconnect xxx或connect xxx,什么情况用nmcli con up xxx或down xxx?

nmcli中的dev disconnectdev connect以及con upcon down命令都是用于管理网络连接,但它们在不同的情况下使用:

设备操作(dev disconnect/connect):这些操作主要与硬件设备交互。当你想要断开或重新连接物理网络设备(如eth0, wlan0等)时,你会使用这些命令。例如,如果你的无线适配器遇到问题并需要重启,你可能会使用dev disconnectdev connect命令。

连接操作(con up/down):这些操作主要涉及网络连接的配置。当你想要激活或停用特定的网络连接配置时,你会使用这些命令。例如,如果你有多个WiFi网络,并希望从一个网络切换到另一个网络,你可能会先使用con down命令关闭当前的WiFi连接,然后使用con up命令启动新的WiFi连接。

总的来说,对于大多数用户来说,使用con upcon down可能更常见,因为这些命令允许你控制特定的网络连接配置,而无需关心底层的物理设备。然而,在某些情况下,例如在进行故障排除或处理特定的网络问题时,直接管理设备可能会更有用。

执行nmcli con up xxx为什么会把已经disconnect的设备拉起来?

[root@localhost network-scripts]# nmcli dev disconnect enp125s0f1Device 'enp125s0f1' successfully disconnected.[root@localhost network-scripts]#[root@localhost network-scripts]# nmcli dev show enp125s0f1GENERAL.DEVICE: enp125s0f1GENERAL.TYPE: ethernetGENERAL.HWADDR: B0:76:1B:09:DA:AFGENERAL.MTU: 1500GENERAL.STATE: 30 (disconnected)GENERAL.CONNECTION: --GENERAL.CON-PATH: --WIRED-PROPERTIES.CARRIER: on[root@localhost network-scripts]#[root@localhost network-scripts]# nmcli con up enp125s0f1Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)[root@localhost network-scripts]#[root@localhost network-scripts]#[root@localhost network-scripts]# nmcli dev show enp125s0f1GENERAL.DEVICE: enp125s0f1GENERAL.TYPE: ethernetGENERAL.HWADDR: B0:76:1B:09:DA:AFGENERAL.MTU: 1500GENERAL.STATE: 100 (connected)GENERAL.CONNECTION: enp125s0f1GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/9WIRED-PROPERTIES.CARRIER: onIP4.ADDRESS[1]: 192.168.1.226/24IP4.GATEWAY: 192.168.1.1IP4.ROUTE[1]: dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 103IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 103IP6.ADDRESS[1]: fe80::dca1:85a3:8fb:de7b/64IP6.GATEWAY: --IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 103IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255[root@localhost network-scripts]#[root@localhost network-scripts]#

这是因为nmcli con up xxx命令的工作方式。当你运行nmcli con up xxx时,NetworkManager会尝试激活指定的网络连接。这包括寻找一个适用于该连接的设备,并将其设置为连接状态。

在你提供的示例中,你首先使用nmcli dev disconnect enp125s0f1命令断开了设备enp125s0f1的连接。然后,当你执行nmcli con up enp125s0f1时,NetworkManager找到了设备enp125s0f1(因为它是适用于这个连接的设备),并将其设置为连接状态,从而使设备重新连接。

也就是说,即使设备先前被断开连接,只要存在一个适用于该设备的网络连接配置,nmcli con up命令都可以将设备重新连接。这是NetworkManager的自动设备和连接管理的一部分。

nmcli网口没插网线时,只有网络配置设置为固定ip,才能con up吗?

在网络接口未连接到网络(例如没有插入网线)时,NetworkManager 默认不会激活配置为自动获取 IP 地址(DHCP)的网络连接。这是因为如果没有实际的网络连接,DHCP 客户端将无法从 DHCP 服务器获取 IP 地址。

其他功能

设置网口配置文件的默认路由

参考文章:(CentOS、Fedora 等基于Red Hat的发行版)/etc/sysconfig/network-scripts/网络配置文件字段解释(IP设置、稳定隐私地址、ONBOOT、DEFROUTE)

设置网络配置文件的ONBOOT参数

参考文章:(CentOS、Fedora 等基于Red Hat的发行版)/etc/sysconfig/network-scripts/网络配置文件字段解释(IP设置、稳定隐私地址、ONBOOT、DEFROUTE)



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。