存储革新:
新配置:自动生成 *.nmconnection
文件
旧配置:保留 /etc/sysconfig/network-scripts/
目录,修改现有ifcfg文件仍生效
优势升级:
支持更复杂的网络拓扑(如VPN、绑定接口的优先级策略)
配置版本控制与回滚能力(通过nmcli con rollback
)
与云计算工具(cloud-init)深度集成
历史背景:2004年由Red Hat发起,旨在解决Linux复杂网络配置问题,推动自动化与标准化核心
价值:实现网络配置 零手动干预(自动识别网卡、分配IP、切换网络环境)
管理维度 | 支持类型 |
网络类型 | 有线以太网、Wi-Fi、蓝牙网络、VPN、5G |
设备类型 | 物理网卡、虚拟网卡、桥接 |
IP分配模式 | DHCPv4/v6、静态IP、IPv6 SLAAC、混合模式(多IP绑定) |
高级场景 | 网络策略路由、QoS流量整形、端口镜像 |
操作界面 | 代表工具 | 适用场景 |
命令行 | nmcli (功能最全) |
服务器运维、自动化脚本集成 |
文本图形化 | nmtui | 无GUI环境的快速配置 |
桌面GUI | GNOME控制中心、KDE Plasma网络模块 | 开发者/普通用户直观操作 |
Web管理 | Cockpit Web控制台 | 远程可视化运维 |
企业办公网络:自动切换有线/无线网络,保持VPN持续连接
云计算环境:动态配置Open vSwitch或SDN网络策略
物联网设备:根据信号强度自动选择最佳网络接口
高可用集群:网络故障秒级切换与状态同步
IPv4(Internet Protocol version 4)是互联网的核心协议之一,负责在网络层(OSI 模型的第三层)实现数据的路由和寻址。在 Linux 系统中,IPv4 的实现基于内核网络栈,涵盖从地址分配、数据包封装到路由转发的全过程
ipv4 internet protocol version
ip是由32个01组成 11111110.11111110.11111110.11111110 = 254.254.254.254
IPv4 核心特性
地址结构:
32 位地址(如 192.168.1.100
),用点分十进制表示。
子网划分:通过子网掩码(如 255.255.255.0
)定义网络和主机部分。
私有地址段:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
静态配置:
使用 ip 命令(推荐)
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip route add default via 192.168.1.1
通过 nmcli 配置
sudo nmcli con mod eth0 ipv4.addresses "192.168.1.100/24" \
ipv4.gateway "192.168.1.1" \
ipv4.method manual
接口名称由 前缀 + 位置标识符 组成,格式为 <类型前缀><位置类型><编号>
:
组件 | 含义 | 示例 |
类型前缀 | 标识网络介质类型 | |
en | 以太网(Ethernet) | enp3s0 |
w1 | 无线局域网(Wi-Fi) | wlp4s0 |
ww | 无线广域网(移动网络, 4G/5G) | wwp0s20u4 |
位置类型 | 标识硬件位置或拓扑 | |
o | 主板集成设备(onboard),按索引编号 | eno1 |
s | 热插拔插槽(hot-plug slot) | ens3 |
p | PCI总线物理位置(bus-port) | enp1p2 |
x | 基于MAC地址生成 | enx00a0c9fffe8d |
enp5s0
:
en
→ 以太网
p5
→ 连接在PCI总线第5插槽
s0
→ 该插槽上的第0个端口
wlp0s3f2u4
:
wl
→ 无线局域网
p0s3
→ PCI总线0插槽3
f2u4
→ 功能2,USB接口4
虚拟接口类型 | 命名示例 | 用途 |
---|---|---|
桥接接口 | br0 | 虚拟机网络桥接 |
绑定接口 | bond0 | 网卡冗余聚合 |
VLAN接口 | enp3s0.100 | 划分虚拟局域网 |
虚拟以太网 | veth0 | 容器间通信 |
nmcli
命令核心功能NetworkManager 命令行工具 nmcli
是 Linux 网络管理的全能控制中心,提供对网络资源的全生命周期管理。
创建:定义新网络连接(如以太网、Wi-Fi、VPN)
编辑:修改已有连接的参数(IP/DNS/路由等)
删除:移除无效或废弃的连接配置激活/停用:动态启用或禁用指定连接(无需重启服务)
优先级控制:管理多连接的自动切换顺序
状态监控:实时查看设备物理状态(启用/禁用、信号强度等)
硬件操作:启用/禁用网卡、刷新设备驱动状态
高级调优:配置MTU、MAC地址、速率限制等底层参数
连接状态:显示活动连接的详细参数(IP地址、网关、DNS)
会话诊断:实时监控网络流量、检测连接故障点
服务管理:控制 NetworkManager 守护进程(启动/重启/重载配置)
VPN 集成:管理 OpenVPN、IPsec 等隧道连接
虚拟化网络:配置桥接、绑定、VLAN 等复杂拓扑
云原生适配:生成 Kubernetes 或容器网络所需的声明式配置
无依赖操作:纯命令行工具,适用于无GUI的服务器环境
原子化控制:每个操作对应精确的API指令,便于脚本化集成
配置持久化:修改即时生效并自动保存,重启后配置不丢失
跨版本兼容:统一语法适配
1. 查看网络连接配置
nmcli connection show 简写:nmcli c show
功能:列出所有已配置的网络连接(包括活跃与非活跃),显示连接名称、UUID、设备、类型及状态。
nmcli connection show ens160 简写:nmcli con show ens160
功能:显示特定连接(如 ens160
)的所有参数,包括IP地址、网关、DNS、MAC地址、MTU等。
注意:输出内容可能较长,可用 | less
分页查看,按 q
退出。
nmcli device status 简写:nmcli dev status
STATE:connected
(已连接)、disconnected
(未连接)、unavailable
(设备禁用)
4. 查看网络设备硬件详情
nmcli device show 简写:nmcli dev show
功能:显示所有网络接口的底层详细信息,包括:
驱动版本、PCI总线位置
IP地址、子网掩码、路由表
无线网卡的信号强度、频段
接口统计信息(收发数据包、错误计数)
操作提示:输出内容较多,建议配合 grep
过滤(如 nmcli dev show | grep "IP4.ADDRESS"
)
需求场景 | 推荐命令 |
快速检查所有连接配置 | nmcli c show |
排查某网卡无法获取IP的问题 | nmcli con show ens160 |
确认物理网卡是否被系统识别 | nmcli dev status |
诊断网络延迟或丢包的根本原因 | nmcli dev show |
持续监控设备状态变化:
watch -n 1 nmcli dev status 每秒刷新一次设备状态
导出连接配置备份:
nmcli con show > network_backup.txt
快速定位活动连接:
nmcli c show --active
1. 激活网络连接(启动数据传输)
nmcli connection up <连接名或UUID>
简写:nmcli c up <连接名>
功能:
启用指定网络连接,触发IP地址分配(DHCP/静态)
若连接已激活,则重新应用配置(等效于重启网卡)
nmcli connection down <连接名或UUID>
简写:nmcli c down <连接名>
功能:
停用指定连接,终止网络通信
不会删除配置,仅停止当前会话
临时操作:
up/down
仅影响当前连接状态,重启后配置仍会按默认策略激活
需永久禁用自动连接:
nmcli con mod <连接名> connection.autoconnect no
1. 添加新网络连接(静态IP配置)
sudo nmcli connection add type ethernet \
ifname <物理网卡名> \
con-name <自定义连接名> \
autoconnect yes \
ipv4.addresses \
ipv4.gateway <默认网关> \
ipv4.method manual
参数解析:
type ethernet
:指定连接类型为以太网
ifname
:绑定到物理网卡(如 ens160
)
con-name
:自定义连接名称(建议与用途关联,如 office-lan
)
autoconnect yes
:系统启动时自动激活此连接
ipv4.method manual
:启用静态IP配置
激活新连接(若当前通过SSH使用ens160,此操作会中断连接!)
sudo nmcli c up ens161
替代方案(安全操作):
物理控制台直接操作
通过带外管理(iLO/iDRAC)执行
使用 screen
/tmux
会话防止中断
查看所有连接状态
nmcli connection show
检查新连接详情
nmcli con show ens161
重新激活原连接(如ens160)
sudo nmcli c up ens160
修改网络连接配置为手动模式并设置静态 IP 信息
使用 nmcli
命令将网络接口 ens160
配置为手动获取 IP 地址,同时指定 IP 地址、子网掩码、网关和 DNS:
[root@server ~]# nmcli c modify ens160 ipv4.method manual \
ipv4.addresses '192.168.48.134/24' \
ipv4.gateway '192.168.48.2' \
ipv4.dns '114.114.114.114'
ipv4.method manual
:指定使用手动模式配置 IPv4 地址。
ipv4.addresses
:设置静态 IP 地址及子网掩码(192.168.48.134/24
)。
ipv4.gateway
:指定默认网关地址(192.168.48.2
)。
ipv4.dns
:设置 DNS 服务器地址(114.114.114.114
)。
重新激活网络连接
激活网络接口 ens160
,使配置生效
[root@server ~]# nmcli c up ens160
验证网络配置
使用 ip a
或 ip addr
命令查看网络接口的 IP 配置是否正确:
[root@server ~]# ip a
ipv4.method manual
表示手动配置 IPv4 地址,而不是通过 DHCP 自动获取
配置完成后,通过重新激活连接(nmcli c up
)使更改立即生效。
sudo nmcli connection modify ens160 +ipv4.addresses 192.168.48.136/24
作用:
在原有 IP 配置基础上,为 ens160
连接添加第二个 IPv4 地址 192.168.48.136/24
+
符号表示追加而非覆盖(使用 ipv4.addresses
不加 +
会重置所有 IP)
2. 激活配置变更
sudo nmcli connection up ens160
效果:
重新加载连接配置,使新增 IP 地址生效
注意:若当前通过 SSH 使用该连接,此操作会短暂中断网络(建议在控制台操作)
3. 验证 IP 地址配置
ip address show dev ens160
简写:ip a show ens160
关键字段:
secondary
表示该 IP 为附加地址
场景 | 操作示例 |
添加多个 IP | nmcli c mod ens160 +ipv4.addresses 192.168.48.137/24,192.168.48.138/24 |
删除指定 IP | nmcli c mod ens160 -ipv4.addresses 192.168.48.136/24 |
重置所有 IP | nmcli c mod ens160 ipv4.addresses "192.168.1.100/24 |
1. 查看当前所有网络连接
nmcli connection show 简写:nmcli c show
关键字段说明:
DEVICE
列为 --
表示该连接未激活
若目标连接处于活跃状态(显示设备名如 ens160
),需先停用
2. 执行删除操作
sudo nmcli connection delete <连接名或UUID>
简写:nmcli c del <连接名>
3. 验证删除结果
nmcli c show
活跃连接处理:
若目标连接处于激活状态(DEVICE
列显示接口名),需先关闭连接:
sudo nmcli c down <连接名>
强制删除活跃连接可能导致网络中断
配置文件清除:
删除操作会同步移除NM的配置文件:
/etc/NetworkManager/system-connections/<连接名>.nmconnection
1. 定位NetworkManager配置文件
进入网络连接配置目录
cd /etc/NetworkManager/system-connections
查看现有配置文件(连接名.nmconnection)
ls
sudo vim ens160.nmconnection
[connection]
id=ens160 连接显示名称
uuid=d97d603d-5bb5-3d11-bfeb-11fbc8cb867d # 唯一标识符(勿修改)
type=ethernet 连接类型
interface-name=ens160 绑定物理网卡
[ipv4]
address1=192.168.48.134/24,192.168.48.2 # IP/子网,网关
dns=114.114.114.114; DNS服务器(分号结尾)
method=manual 静态IP模式
[ipv6]
method=auto 通常保持自动获取
重载NetworkManager配置(无需重启服务)
sudo nmcli connection reload
激活修改后的连接
sudo nmcli connection up ens160
注意:
若当前通过SSH使用该连接,激活操作会导致会话中断
建议在物理控制台或带外管理界面执行
查看IP地址配置
ip addr show dev ens160
测试网络连通性
ping -c 4 192.168.48.2
概念 | 说明 |
物理网卡 | 硬件设备(如 ens160 ),提供网络通信的物理通道 |
连接会话 | 软件定义的网络配置(如IP、DNS),可绑定到物理网卡 |
激活规则 | 一个物理网卡可关联多个连接会话,但同一时间仅能激活一个会话 |
切换场景 | 通过 nmcli c up <新会话> 自动停用当前会话并激活新配置 |
配置备份:
修改前创建备份
sudo cp ens160.nmconnection ens160.nmconnection.bak
ping
命令连通性验证:检测本地主机与目标主机(IP/域名)之间是否可达
延迟分析:测量 往返时间(RTT),反映端到端网络响应速度
丢包统计:计算数据包丢失率,评估网络稳定性
基础语法:
ping [选项] 目标主机
参数:
参数 | 功能 | 示例 |
-c |
指定发送数据包次数 | |
-i <秒> | 设置发包间隔 | ping -i 0.5 192.168.1.1 |
-s <字节> | 定义数据包大小 | ping -s 1500 10.0.0.1 |
-W <秒> | 等待响应超时时间 | |
-D | 显示时间戳 | ping -D 8.8.8.8 |
协议依赖:基于ICMP协议,可能被防火墙/安全组拦截
权限要求:普通用户可直接执行,部分参数需要sudo
(如极短发包间隔)
替代工具:
深度路径分析:traceroute
/mtr
高级延迟诊断:tcpg
(TCP层测试)
bytes:接收到的数据包总大小
time:往返延迟(RTT),单位毫秒(ms)
ttl:数据包剩余生存时间
通过手动配置本地映射文件,将域名与对应的IP地址关联起来,从而实现对域名的解析。
通过编辑/etc/hosts
文件,将域名与IP地址进行静态绑定。
[root@server ~]# vim /etc/hosts
wget
命令wget
(GNU Wget)是 Linux/Unix 系统内置的 非交互式网络资源获取工具,支持 HTTP/HTTPS/FTP/FTPS 协议,专为稳定下载与批量抓取设计,广泛应用于自动化脚本、服务器运维及数据归档场景。
协议支持:HTTP/HTTPS/FTP/FTPS
下载模式:单文件下载、递归目录抓取、站点镜像克隆
网络容错:自动重试、断点续传、带宽限制
资源识别:自动处理 Cookie、SSL 证书、重定向
无交互运行
递归下载
增量同步
日志记录
3. 高频参数
参数 | 功能 | 典型场景 |
-c | 断点续传 | 网络中断后恢复大文件下载 |
-q | 静默模式(不输出进度) | 脚本中隐藏非关键信息 |
--limit-rate=200k | 限速下载(200KB/s) | 避免占用全部带宽 |
-P <目录> | 指定下载文件存储目录 | 分类存储不同资源 |
-U | 模拟浏览器 | 绕过简单反爬机制 |
-t | 最大尝试次数 |
-b | 后台下载模式 |
-r | 递归下载 |
curl
命令行工具核心功能curl
(Client URL)是一个 多功能网络数据传输工具,支持包括 HTTP/HTTPS、FTP/FTPS、SCP、SFTP 等 20+ 协议,主要用于:
数据获取:下载网页、API 响应、文件
数据提交:发送表单、上传文件、模拟 API 请求
协议调试:测试服务器响应头、验证证书、分析重定向
参数 | 功能 | 典型场景 |
---|---|---|
-o | 使用服务器端的文件名保存 | curl -O |
-L | 自动跟随重定向 | |
-v | 显示详细通信过程(调试模式) | 排查 HTTPS 握手失败 |
-H | 添加自定义请求头 | 模拟浏览器或传递 Token |
-d | 发送 POST 数据 | 提交表单或调用 REST API |
-u | 认证信息(格式:user:password ) |
访问受密码保护的资源 |
桥接模式(Bridged)
网络地址转换模式(NAT)
仅主机模式(Host-Only)
桥接模式通过 虚拟网桥 将 物理主机网卡 与 虚拟机虚拟网卡 连接,形成二层(数据链路层)网络拓扑。此模式下:
虚拟网桥模拟物理交换机功能,所有接入设备(物理主机、虚拟机)处于同一广播域
虚拟机获得与物理网络 平等地位,直接参与局域网通信
虚拟交换机的 MAC 地址表 动态学习并转发数据帧
组件 | 角色 | 通信规则 |
物理主机网卡 | 桥接端口 | 转发虚拟机与外部网络间的数据帧 |
虚拟网桥 | 逻辑交换机 | 维护 MAC 地址表,决策帧转发路径 |
虚拟机虚拟网卡 | 桥接成员端口 | 通过虚拟网桥与外部直接通信 |
IP 地址:需与物理主机所在局域网处于 同一子网
网关/DNS:必须与物理网络一致
地址分配:支持 DHCP 自动获取或手动静态配置
虚拟机获得真实网络身份
支持跨物理机的二层通信
网络性能接近物理机
无需 NAT 转换,降低复杂度
工作原理
NAT模式通过内置的虚拟NAT(网络地址转换)设备与虚拟DHCP(动态主机配置协议)服务器协同工作,使虚拟机能够共享宿主机的网络连接并访问外部网络资源。
Host-Only 模式通过 虚拟交换机(如 VMnet1) 构建一个 完全封闭的私有网络,仅允许以下通信:
虚拟机 ↔ 宿主机
虚拟机 ↔ 同一 Host-Only 网络的其他虚拟机
虚拟机无法直接访问外部网络(无 NAT 或路由转发)
组件 | 角色 | 通信范围 |
宿主机虚拟网卡 | 接入 Host-Only 网络的网关 | 与虚拟机组成本地私有网络 |
虚拟交换机 | 二层交换设备 | 转发虚拟机和宿主机间的数据帧 |
虚拟机虚拟网卡 | 绑定到 Host-Only 网络的成员端口 | 仅限封闭网络内通信 |
地址分配:
通常由宿主机 DHCP 服务分配私有 IP(如 192.168.56.0/24
)
支持手动设置静态 IP(需与宿主机虚拟网卡同网段)
DNS:仅需配置宿主机可解析的 DNS(通常指向宿主机或内部 DNS 服务器)
外网访问 | 需手动配置路由或代理 |
IP 层级 | 独立私有子网(与宿主机物理网络无关) |
网络隔离 | 完全封闭,仅宿主机可见 |
nmcli
命令配置IPnmcli connection show
2. 创建/修改静态 IP 配置
修改现有连接(替换 CONN_NAME 为实际连接名)
sudo nmcli con mod "CONN_NAME" \
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 \
connection.autoconnect yes
sudo nmcli con down "CONN_NAME" && sudo nmcli con up "CONN_NAME"
[connection]
id=ens160
type=ethernet
interface-name=ens160
[ipv4]
address1=192.168.1.100/24,192.168.1.1
dns=8.8.8.8;8.8.4.4;
method=manual
[ipv6]
method=disabled
在Linux系统中,网关是连接不同网络的设备,它充当不同网络之间的桥梁,负责将数据包从一个网络转发到另一个网络。当数据包的目的地不在本地网络时,默认网关会被用来转发数据包。
查看当前网络配置
ip route show
添加默认网关
sudo ip route add default via <网关IP地址> dev <网络接口名称>
验证配置
ip route show
查看当前网络配置:
nmcli connection show
编辑连接配置:
sudo nmcli connection modify <连接名称> ipv4.gateway <网关IP地址>
重启连接:
sudo nmcli connection down <连接名称>
sudo nmcli connection up <连接名称>
DNS是互联网的核心服务之一,负责将人类可读的域名转换为机器可识别的 IP 地址
其核心作用包括:
域名解析:实现域名与 IP 地址的映射。
负载均衡:通过轮询分配访问请求到不同服务器。
邮件路由:指导邮件服务器的投递路径。
临时修改 DNS(重启失效)
sudo vi /etc/resolv.conf
添加或修改 nameserver 行
nameserver 8.8.8.8 主 DNS
nameserver 1.1.1.1 备用 DNS
options timeout:1 attempts:2 超时与重试次数
使用 nmcli
查看当前连接:
nmcli con show
修改 DNS 配置:
sudo nmcli con mod "连接名" \
ipv4.dns "8.8.8.8 1.1.1.1" \
ipv4.ignore-auto-dns yes 禁用 DHCP 提供的 DNS
重启连接生效:
sudo nmcli con down "连接名" && sudo nmcli con up "连接名"
操作 | 命令 |
刷新 systemd-resolved 缓存 |
sudo systemd-resolve --flush-caches |
清除本地应用缓存 | |
强制重载 DNS 配置 | sudo killall -HUP dnsmasq |