news 2026/10/19 2:05:55

Linux网络配置实战:ip、nmcli、netplan、ifcfg命令

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux网络配置实战:ip、nmcli、netplan、ifcfg命令

「服务器换机房了,网卡要改成静态 IP」「虚拟机克隆后默认路由不见了」——网络配置是运维最基础也最容易翻车的操作。麻烦在于 Linux 没有统一的配置方式:ip命令即时生效但重启就丢;netplan、ifcfg、nmcli各管一派,发行版之间还不一样。这一篇把四种主流方式讲清楚,并给出 Ubuntu 与 CentOS/Rocky 的完整静态 IP 配置示例。

一、四种配置方式概览

先建立全景,知道每种方式何时用:

方式持久化发行版特点
ip否(重启丢失)通用临时调试、快速生效
nmcli是通用(有 NM)命令行管理 NetworkManager
netplan是Ubuntu 18.04+YAML 配置,底层调 NM 或 systemd-networkd
ifcfg是CentOS/RHEL 传统文本文件 +systemctl restart network

选择建议:临时改动用ip;Ubuntu 用netplan;CentOS/Rocky 用nmcli或ifcfg;桌面/有 NetworkManager 的一律nmcli最顺手。

二、ip 命令:即时的临时配置

ip属于iproute2,改完立即生效,但重启或网络服务重载后丢失。适合排障时临时验证。

添加/删除 IP

# 给 eth0 加一个 IP sudo ip addr add 192.168.1.100/24 dev eth0 # 删除 sudo ip addr del 192.168.1.100/24 dev eth0 # 查看 ip addr show eth0

启用/禁用网卡

sudo ip link set eth0 up sudo ip link set eth0 down

临时改网关和路由

# 添加默认网关 sudo ip route add default via 192.168.1.1 dev eth0 # 删除默认网关 sudo ip route del default # 添加静态路由(去 10.10.0.0/16 走 192.168.1.2) sudo ip route add 10.10.0.0/16 via 192.168.1.2

⚠️ ip 命令的「即时性」陷阱

sudo ip addr add 192.168.1.100/24 dev eth0 # 重启网络服务后,这个 IP 就没了

想持久化必须写进配置文件。ip只适合「先加上试试,通了再固化」。

三、nmcli:NetworkManager 命令行

现代发行版(Ubuntu Desktop/Server、CentOS 8+/Rocky)大多用NetworkManager(NM)管理网络。nmcli是它的命令行前端,配置会持久保存到/etc/NetworkManager/system-connections/。

查看连接

nmcli connection show
NAME UUID TYPE DEVICE eth0 3f8b... ethernet eth0

NAME是连接名(不一定等于网卡名),后续操作都用它或 UUID。

查看设备状态

nmcli device status
DEVICE TYPE STATE CONNECTION eth0 ethernet connected eth0 lo loopback unmanaged --

配置静态 IP

sudo nmcli connection modify eth0 \ ipv4.method manual \ ipv4.addresses 192.168.1.100/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns "223.5.5.5 8.8.8.8" # 重新激活连接使配置生效 sudo nmcli connection up eth0

配置 DHCP(自动获取)

sudo nmcli connection modify eth0 ipv4.method auto sudo nmcli connection up eth0

新增一个连接

sudo nmcli connection add type ethernet con-name static-eth0 ifname eth0 \ ipv4.method manual \ ipv4.addresses 192.168.1.100/24 \ ipv4.gateway 192.168.1.1

其他常用操作

nmcli connection show eth0 # 看某连接的详细配置 nmcli device connect eth0 # 连接设备 nmcli device disconnect eth0 # 断开 nmcli general status # 总体状态

nmcli的优点是改完自动持久化,不用记文件格式,是 CentOS/Rocky 8+ 的推荐方式。

四、netplan:Ubuntu 的新方式

Ubuntu 17.10 起引入netplan,用 YAML 描述网络,底层渲染成 NetworkManager 或 systemd-networkd 的配置。配置文件在/etc/netplan/。

查看现有配置

ls /etc/netplan/ cat /etc/netplan/01-netcfg.yaml

配置静态 IP(systemd-networkd 后端)

sudo vim /etc/netplan/01-netcfg.yaml
network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no addresses: - 192.168.1.100/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: [223.5.5.5, 8.8.8.8]

应用配置

sudo netplan apply

配置 DHCP

network: version: 2 renderer: networkd ethernets: eth0: dhcp4: yes

⚠️ netplan 的两个大坑

  1. YAML 缩进必须用空格,不能用 Tab。缩进错了netplan apply会报解析错误。
  2. netplan try是安全网:
sudo netplan try

它应用配置后等待确认,如果断网了(比如你远程改错了),120 秒后自动回滚。远程改网络配置务必用netplan try,别用apply直接梭哈。

新旧配置文件名规律

  • 文件按名字字典序加载,数字前缀控制优先级
  • 01-、50-、99-等,后面的覆盖前面的同名设置

五、ifcfg:CentOS/RHEL 传统方式

老牌 RHEL/CentOS 7 及之前的配置方式,文件在/etc/sysconfig/network-scripts/,文件名ifcfg-<网卡名>。

配置静态 IP

sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet BOOTPROTO=static NAME=eth0 DEVICE=eth0 ONBOOT=yes IPADDR=192.168.1.100 PREFIX=24 GATEWAY=192.168.1.1 DNS1=223.5.5.5 DNS2=8.8.8.8

关键字段:

字段说明
BOOTPROTOstatic/dhcp/none
ONBOOT开机是否启用,必须是yes
IPADDR/PREFIXIP 和掩码位数
GATEWAY默认网关
DNS1/DNS2DNS

应用配置

# CentOS 7 sudo systemctl restart network # CentOS 8+/Rocky(network 服务被 NM 取代) sudo nmcli connection reload sudo nmcli connection up eth0 # 或 sudo systemctl restart NetworkManager

⚠️ CentOS 8+ 的 ifcfg 兼容性

CentOS 8+ 默认只有 NetworkManager,systemctl restart network已不存在。此时ifcfg文件仍能被 NM 读取(通过ifcfg-rh插件),但推荐改用nmcli。改完 ifcfg 后要nmcli connection reload让 NM 重新读取。

六、完整示例:给 Ubuntu Server 配静态 IP

结合典型场景,走一遍完整流程:

# 1. 先看当前网卡名和状态 ip -br addr # eth0 UP 192.168.1.50/24 # 2. 备份原配置 sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak # 3. 编辑配置 sudo vim /etc/netplan/01-netcfg.yaml
network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no addresses: [192.168.1.100/24] routes: - to: default via: 192.168.1.1 nameservers: addresses: [223.5.5.5, 8.8.8.8]
# 4. 用 try 应用(有回滚保护) sudo netplan try # 5. 验证 ip addr show eth0 ip route show default ping -c 2 223.5.5.5

七、⚠️ 常见错误

  1. ip addr add后以为改好了。它不持久,重启就丢。要写进 netplan/nmcli/ifcfg。
  2. 远程改网络用netplan apply。配错直接断连,进不去机器。永远用netplan try。
  3. 改完不激活连接。nmcli connection modify后忘了up,配置没生效。
  4. YAML 用 Tab 缩进。netplan 只认空格,报错难查。
  5. 网卡名写错。eth0vsens33vsenp0s3,现代系统网卡名可预测化,先ip -br addr确认。
  6. ONBOOT=no导致开机没网。ifcfg 里这个字段忘了改yes,重启后网卡不启动。
  7. 多网卡只配了一个网关。两个网卡都写GATEWAY会冲突,应只在一个网卡配默认网关,另一个用静态路由。
  8. 改了 DNS 不重载。resolv.conf被 NM 管理时,得通过nmcli改 DNS,直接改文件会被覆盖。

八、原理探究:网络配置的持久化机制

为什么ip改了不持久,netplan改了持久?理解这套机制,就不会再困惑。

三条技术路线

传统:/etc/sysconfig/network-scripts/ifcfg-* + network 服务 ↓(CentOS 7 及之前) NetworkManager:/etc/NetworkManager/system-connections/* + nmcli ↓(现代发行版) systemd-networkd:.network 文件 ↓ netplan:/etc/netplan/*.yaml(渲染到上面之一)
  • ip命令:直接改内核里的网络配置对象,内核不落盘,重启即失。
  • 配置文件方式:把配置写在磁盘上,开机时由对应的服务读取、翻译成ip命令再执行,所以持久。

netplan 的「渲染」

netplan本身不是网络管理程序,它只是个「配置翻译器」:

# 看 netplan 渲染出的底层配置 ls /run/systemd/network/ # renderer: networkd 时 ls /run/NetworkManager/system-connections/ # renderer: NetworkManager 时

你在 YAML 里写一次,netplan apply会把它翻译成 systemd-networkd 或 NM 能懂的格式。这就是为什么改 netplan 后,可以用networkctl或nmcli查看结果。

为什么推荐 netplan try

netplan try的机制:

  1. 应用新配置,启动一个 120 秒倒计时。
  2. 期间如果你确认没问题,按 Enter 固化。
  3. 如果你因为断网没法确认,倒计时结束自动回滚到上一个可用配置。

这是防止「远程配错网络把自己锁在门外」的安全设计,改网络配置的标准姿势。

一个判断口诀

  • 临时、紧急→ip
  • Ubuntu 持久→netplan(用try)
  • CentOS/Rocky 持久→nmcli(或ifcfg+ reload)
  • 改了没生效→ 检查:配置写对了吗?服务重载了吗?连接激活了吗?

九、网络配置速查表

# 临时配置(iproute2) sudo ip addr add 192.168.1.100/24 dev eth0 sudo ip route add default via 192.168.1.1 # NetworkManager(通用持久) nmcli connection show sudo nmcli connection modify eth0 ipv4.method manual \ ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 sudo nmcli connection up eth0 # netplan(Ubuntu 持久) sudo vim /etc/netplan/*.yaml sudo netplan try # ifcfg(CentOS 传统) sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0 sudo systemctl restart network # 或 nmcli connection reload # 验证 ip -br addr ip route show default ping -c2 223.5.5.5

一句话收尾:临时用ip,持久分发行版——Ubuntu 认 netplan、CentOS 认 nmcli。改配置前先备份、远程操作用try、改完必验证,网络配置就不会成为你的滑铁卢。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/19 2:05:39

渗透学习笔记

渗透笔记 &#xff1a;基础入门与 SQL 注入 一、基础概念名词 1. 域名 网站的网络身份证&#xff0c;通过第三方平台注册。国内主要注册商&#xff1a;阿里云、腾讯云&#xff1b;国外常用&#xff1a;GoDaddy。二级/多级域名&#xff1a; 顶级域名&#xff1a;baidu.com二级域…

作者头像 李华
网站建设 2026/10/19 2:05:21

第 15 章 MySQL 接入:Flink CDC 实时同步

第 15 章 MySQL 接入:Flink CDC 实时同步 章节定位:第五篇(数据接入)的开篇。前四篇把 Fluss 本身的"存、读、分层、联合读、服务"讲完了,但一直有个前提被藏在背景里——湖里的数据、Fluss 里的维表,最初是从哪来的? 本章回答最主流的那个来源:业务库 MySQL…

作者头像 李华
网站建设 2026/10/19 2:05:17

Α-Conotoxin MII;175735-93-0

基本性质英文名称&#xff1a;α-Conotoxin MII&#xff0c;α-CTx MII中文名称&#xff1a;α- 芋螺毒素 MIICAS 号&#xff1a;175735-93-0单字母序列&#xff1a;GCCSNPVCHLEHSNLC三字母序列&#xff1a;H-Gly-Cys-Cys-Ser-Asn-Pro-Val-Cys-His-Leu-Glu-His-Ser-Asn-Leu-Cys…

作者头像 李华
网站建设 2026/10/19 2:04:37

善良必须带点锋芒:识别人际边界,拒绝再做老好人

“老王&#xff0c;你人真好”“老王&#xff0c;这事只能找你了”“老王&#xff0c;你帮我这次&#xff0c;下次我一定……”下次是什么时候&#xff1f;没有人知道。老王自己也忘了&#xff0c;这已经是第几次把手头的工作放下&#xff0c;去做别人丢过来的烂摊子了。直到有…

作者头像 李华
网站建设 2026/10/19 2:04:14

《ON JAVA 中文版 基础卷》学习笔记(第一章 什么是对象)

01 什么是对象 1.1 抽象的历程 编程语言本质是抽象&#xff0c;抽象水平决定处理问题的能力。早期语言要么贴近硬件&#xff0c;要么适用场景有限。OOP 把现实事物抽象成拥有状态、行为、标识的对象&#xff0c;直接映射业务&#xff0c;简化复杂程序开发。 1.2 对象具有接口 类…

作者头像 李华
网站建设 2026/10/19 2:04:03

USB描述符逐层拆解:以CP210x为例看懂枚举与驱动匹配

插上一块带CP210x的USB转串口小板&#xff0c;系统几乎在同一瞬间就能认出设备&#xff0c;随后设备管理器里多出一个COM口&#xff0c;串口工具马上就能收发数据。这个动作太日常了&#xff0c;以至于很多人不会去想&#xff1a;主机凭什么知道这是什么设备&#xff1f;它又是…

作者头像 李华