本文主要是介绍Linux nmcli命令简单使用教程(nmcli指令),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考文章:(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`)
- 设置动态ip
- Monitoring 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 connection
或nmcli 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-home
和 ifcfg-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.1
nmcli 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 Home
nmcli 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-psk
nmcli 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=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.1.2
PREFIX=24
GATEWAY=192.168.1.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=MyEthernet
UUID=a3382d5f-7e4b-4182-b8d5-bd599ec581ea
DEVICE=eth0
ONBOOT=yes
动态连接
如果你想要创建一个动态IP(DHCP)的以太网连接,你可以使用以下的nmcli
命令:
nmcli con add type ethernet con-name "MyEthernet" ifname eth0
在这个命令中,“MyEthernet”是你想要创建的连接的名称,“eth0”是你想要在其上创建连接的网络设备的名称。请将它们替换为你自己的实际参数。
请注意,这个命令没有指定IP地址或者网关,因为在DHCP模式下,这些信息会由DHCP服务器自动分配。
生成配置文件示例
创建后会自动在/etc/sysconfig/network-scripts/
下生成配置文件:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=MyEthernet
UUID=aab40c13-db9c-44ff-8f65-91d47d0ad76d
DEVICE=eth0
ONBOOT=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 openvpn
nmcli 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 enp125s0f0
connection.id: enp125s0f0
connection.uuid: e5687f51-bf18-4893-b8ea-b6fcc275a3ab
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: enp125s0f0
connection.autoconnect: yes
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.timestamp: 1709702760
connection.read-only: no
connection.permissions: --
connection.zone: --
connection.master: --
connection.slave-type: --
connection.autoconnect-slaves: -1 (default)
connection.secondaries: --
connection.gateway-ping-timeout: 0
connection.metered: unknown
connection.lldp: default
connection.mdns: -1 (default)
connection.llmnr: -1 (default)
connection.wait-device-timeout: -1
802-3-ethernet.port: --
802-3-ethernet.speed: 0
802-3-ethernet.duplex: --
802-3-ethernet.auto-negotiate: no
802-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: auto
802-3-ethernet.s390-subchannels: --
802-3-ethernet.s390-nettype: --
802-3-ethernet.s390-options: --
802-3-ethernet.wake-on-lan: default
802-3-ethernet.wake-on-lan-password: --
ipv4.method: manual
ipv4.dns: 8.8.8.8
ipv4.dns-search: --
ipv4.dns-options: --
ipv4.dns-priority: 0
ipv4.addresses: 192.168.1.225/24
ipv4.gateway: 192.168.1.1
ipv4.routes: --
ipv4.route-metric: -1
ipv4.route-table: 0 (unspec)
ipv4.routing-rules: --
ipv4.ignore-auto-routes: no
ipv4.ignore-auto-dns: no
ipv4.dhcp-client-id: --
ipv4.dhcp-iaid: --
ipv4.dhcp-timeout: 0 (default)
ipv4.dhcp-send-hostname: yes
ipv4.dhcp-hostname: --
ipv4.dhcp-fqdn: --
ipv4.dhcp-hostname-flags: 0x0 (none)
ipv4.never-default: no
ipv4.may-fail: yes
ipv4.dad-timeout: -1 (default)
ipv6.method: auto
ipv6.dns: --
ipv6.dns-search: --
ipv6.dns-options: --
ipv6.dns-priority: 0
ipv6.addresses: --
ipv6.gateway: --
ipv6.routes: --
ipv6.route-metric: -1
ipv6.route-table: 0 (unspec)
ipv6.routing-rules: --
ipv6.ignore-auto-routes: no
ipv6.ignore-auto-dns: no
ipv6.never-default: no
ipv6.may-fail: yes
ipv6.ip6-privacy: -1 (unknown)
ipv6.addr-gen-mode: stable-privacy
ipv6.ra-timeout: 0 (default)
ipv6.dhcp-duid: --
ipv6.dhcp-iaid: --
ipv6.dhcp-timeout: 0 (default)
ipv6.dhcp-send-hostname: yes
ipv6.dhcp-hostname: --
ipv6.dhcp-hostname-flags: 0x0 (none)
ipv6.token: --
proxy.method: none
proxy.browser-only: no
proxy.pac-url: --
proxy.pac-script: --
GENERAL.NAME: enp125s0f0
GENERAL.UUID: e5687f51-bf18-4893-b8ea-b6fcc275a3ab
GENERAL.DEVICES: enp125s0f0
GENERAL.IP-IFACE: enp125s0f0
GENERAL.STATE: activated
GENERAL.DEFAULT: yes
GENERAL.DEFAULT6: no
GENERAL.SPEC-OBJECT: --
GENERAL.VPN: no
GENERAL.DBUS-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/Settings/2
GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
IP4.ADDRESS[1]: 192.168.1.225/24
IP4.GATEWAY: 192.168.1.1
IP4.ROUTE[1]: dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 100
IP4.DNS[1]: 8.8.8.8
IP6.ADDRESS[1]: fe80::a1dc:584b:d1df:bf05/64
IP6.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 xxx
再nmcli con up xxx
)
要为连接配置静态IP地址,你可以按照以下步骤操作:
nmcli con modify "MyConnection" ipv4.addresses 192.168.1.100/24
nmcli con modify "MyConnection" ipv4.gateway 192.168.1.1
nmcli 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
不直接提供流量监控,但它可以与nethogs
或iftop
等其他工具结合使用,进行实时流量分析。然而,在设置监控之前,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 disconnect
和dev connect
以及con up
和con down
命令都是用于管理网络连接,但它们在不同的情况下使用:
-
设备操作(dev disconnect/connect):这些操作主要与硬件设备交互。当你想要断开或重新连接物理网络设备(如eth0, wlan0等)时,你会使用这些命令。例如,如果你的无线适配器遇到问题并需要重启,你可能会使用
dev disconnect
和dev connect
命令。 -
连接操作(con up/down):这些操作主要涉及网络连接的配置。当你想要激活或停用特定的网络连接配置时,你会使用这些命令。例如,如果你有多个WiFi网络,并希望从一个网络切换到另一个网络,你可能会先使用
con down
命令关闭当前的WiFi连接,然后使用con up
命令启动新的WiFi连接。
总的来说,对于大多数用户来说,使用con up
和con down
可能更常见,因为这些命令允许你控制特定的网络连接配置,而无需关心底层的物理设备。然而,在某些情况下,例如在进行故障排除或处理特定的网络问题时,直接管理设备可能会更有用。
执行nmcli con up xxx为什么会把已经disconnect的设备拉起来?
[root@localhost network-scripts]# nmcli dev disconnect enp125s0f1
Device 'enp125s0f1' successfully disconnected.
[root@localhost network-scripts]#
[root@localhost network-scripts]# nmcli dev show enp125s0f1
GENERAL.DEVICE: enp125s0f1
GENERAL.TYPE: ethernet
GENERAL.HWADDR: B0:76:1B:09:DA:AF
GENERAL.MTU: 1500
GENERAL.STATE: 30 (disconnected)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
WIRED-PROPERTIES.CARRIER: on
[root@localhost network-scripts]#
[root@localhost network-scripts]# nmcli con up enp125s0f1
Connection 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 enp125s0f1
GENERAL.DEVICE: enp125s0f1
GENERAL.TYPE: ethernet
GENERAL.HWADDR: B0:76:1B:09:DA:AF
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: enp125s0f1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/9
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.1.226/24
IP4.GATEWAY: 192.168.1.1
IP4.ROUTE[1]: dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 103
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 103
IP6.ADDRESS[1]: fe80::dca1:85a3:8fb:de7b/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 103
IP6.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)
这篇关于Linux nmcli命令简单使用教程(nmcli指令)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!