Linux 网络配置完全指南:从临时到永久,从 Netplan 到 NetworkManager
在 Linux 系统中配置网络是每个运维人员和开发者的必修课。无论是搭建服务器、配置开发环境,还是解决网络故障,掌握网络配置技能都至关重要。临时配置:立即生效,重启丢失Netplan:Ubuntu 默认配置工具,YAML 格式:功能最全面的网络管理工具使用 YAML 格式配置文件后端可以对接networkd(服务器版)或(桌面版)配置文件统一管理,避免冲突桌面 Linux 用户笔记本电脑(WiFi
一篇搞定 Linux 网络配置,再也不怕网络设置出问题
📌 目录
- 前言:Linux 网络配置概述
- 基础概念:IP地址、子网掩码、网关、DNS
- 临时配置:快速测试网络设置
- Netplan:Ubuntu 新一代网络配置工具
- NetworkManager:功能强大的网络管理神器
- 实战案例:将网卡IP永久设置为192.168.8.110
- 故障排除与常见问题
- 最佳实践与建议
前言
在 Linux 系统中配置网络是每个运维人员和开发者的必修课。无论是搭建服务器、配置开发环境,还是解决网络故障,掌握网络配置技能都至关重要。
本文将从零开始,带你全面了解 Linux 网络配置的三种方式:
- 临时配置:立即生效,重启丢失
- Netplan:Ubuntu 默认配置工具,YAML 格式
- NetworkManager:功能最全面的网络管理工具
基础概念
📡 IP 地址
网络中设备的唯一标识,就像门牌号。
- IPv4 格式:
192.168.8.110 - 分类:
- 公网 IP:互联网上唯一
- 私网 IP:局域网内使用(如 192.168.x.x、10.x.x.x、172.16.x.x)
🎭 子网掩码
划分网络号和主机号的界限。
- 常见格式:
255.255.255.0或/24 /24表示前24位是网络号,后8位是主机号
🚪 网关
连接不同网络的出入口,通常是路由器的 IP 地址。
- 常见格式:
192.168.8.1
📞 DNS
域名解析服务器,将域名转换为 IP 地址。
- 公共 DNS:
8.8.8.8(Google)、114.114.114.114(国内)
临时配置
适用于:测试网络连通性、临时调整网络参数
1. 查看当前网络接口
# 查看所有网络接口
ip addr show
# 或使用传统命令
ifconfig -a
# 查看特定网卡(以 enp3s0 为例)
ip addr show enp3s0
2. 临时修改 IP 地址
# 添加 IP 地址(会保留原有 IP)
sudo ip addr add 192.168.8.110/24 dev enp3s0
# 删除原有 IP
sudo ip addr del 192.168.1.118/24 dev enp3s0
# 或者直接替换(需要先删除所有 IP)
sudo ip addr flush dev enp3s0
sudo ip addr add 192.168.8.110/24 dev enp3s0
3. 临时修改路由(网关)
# 删除默认网关
sudo ip route del default
# 添加新网关
sudo ip route add default via 192.168.8.1
# 查看路由表
ip route show
4. 临时修改 DNS
# 编辑 resolv.conf 文件
sudo nano /etc/resolv.conf
# 添加以下内容
nameserver 8.8.8.8
nameserver 114.114.114.114
⚠️ 注意事项
- 重启网络服务或重启系统后,所有临时配置会丢失
- 适用于快速测试或临时调整
- 正式环境建议使用永久配置
Netplan
Ubuntu 17.10 引入的新一代网络配置工具,使用 YAML 格式
什么是 Netplan?
Netplan 是 Ubuntu 开发的网络配置抽象层工具,它:
- 使用 YAML 格式配置文件
- 后端可以对接
networkd(服务器版)或NetworkManager(桌面版) - 配置文件统一管理,避免冲突
Netplan 配置文件位置
/etc/netplan/
├── 01-network-manager-all.yaml # 桌面版常见
├── 00-installer-config.yaml # 服务器版常见
└── 50-cloud-init.yaml # 云服务器常见
Netplan 基础语法
network:
version: 2 # 版本号,必须为2
renderer: networkd # 后端:networkd 或 NetworkManager
ethernets: # 以太网配置
网卡名称: # 如 enp3s0
dhcp4: true/false # 是否开启 DHCP
dhcp6: true/false
addresses: # 静态 IP 列表
- 192.168.8.110/24
- 2001:db8::1/64
routes: # 路由配置
- to: default
via: 192.168.8.1
nameservers: # DNS 服务器
addresses: [8.8.8.8, 8.8.4.4]
optional: true/false # 是否可选(启动时不等待)
Netplan 常用命令
# 查看配置
sudo netplan get
# 应用配置
sudo netplan apply
# 调试模式应用(显示详细信息)
sudo netplan --debug apply
# 测试配置(120秒自动回滚)
sudo netplan try
# 生成后端配置
sudo netplan generate
# 查看帮助
netplan --help
Netplan 配置示例
示例1:DHCP 自动获取
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
dhcp6: false
示例2:静态 IP 配置
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: false
addresses:
- 192.168.8.110/24
routes:
- to: default
via: 192.168.8.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
示例3:多网卡配置
network:
version: 2
renderer: networkd
ethernets:
enp3s0: # 外网
dhcp4: true
enp4s0: # 内网
addresses:
- 10.0.0.1/24
routes:
- to: 10.0.0.0/24
via: 10.0.0.1
Netplan 最佳实践
- 使用有意义的文件名:如
01-static-enp3s0.yaml - 保留备份:修改前备份原文件
- 使用
netplan try:避免配置错误导致无法连接 - 注意 YAML 缩进:必须使用空格,不能使用 Tab
- 清理冲突配置:确保只有一个配置文件包含同一网卡配置
NetworkManager
Linux 系统最强大的网络管理工具,桌面环境标配
什么是 NetworkManager?
NetworkManager 旨在简化网络管理,特别适合:
- 桌面 Linux 用户
- 笔记本电脑(WiFi、移动网络切换)
- 需要图形化配置的场景
- 复杂网络环境(VPN、热点等)
安装 NetworkManager
Ubuntu/Debian 系统
# 安装 NetworkManager
sudo apt update
sudo apt install network-manager
# 启动并启用服务
sudo systemctl start NetworkManager
sudo systemctl enable NetworkManager
# 查看状态
sudo systemctl status NetworkManager
CentOS/RHEL/Rocky Linux
# 安装 NetworkManager
sudo yum install NetworkManager
# 或使用 dnf(新版)
sudo dnf install NetworkManager
# 禁用默认的 network 服务
sudo systemctl disable network
sudo systemctl stop network
# 启动 NetworkManager
sudo systemctl start NetworkManager
sudo systemctl enable NetworkManager
Arch Linux
sudo pacman -S networkmanager
sudo systemctl enable NetworkManager
sudo systemctl start NetworkManager
NetworkManager 架构组件
- 核心服务:
NetworkManager.service - 命令行工具:
nmcli - 文本界面工具:
nmtui - 图形界面:
nm-connection-editor、GNOME 设置 - 小程序:
nm-applet
NetworkManager 连接管理概念
- Connection(连接配置):保存的网络设置,可以有多个
- Device(设备):物理网卡或虚拟网卡
- Active Connection:当前激活的连接
nmcli 命令详解
基础命令
# 查看所有连接
nmcli connection show
# 查看活动连接
nmcli connection show --active
# 查看设备状态
nmcli device status
# 查看设备详细信息
nmcli device show enp3s0
# 查看连接详细信息
nmcli connection show "连接名称"
创建连接
# 创建 DHCP 连接
sudo nmcli connection add type ethernet ifname enp3s0 con-name "my-ethernet"
# 创建静态 IP 连接
sudo nmcli connection add type ethernet ifname enp3s0 con-name "static-enp3s0" \
ipv4.addresses 192.168.8.110/24 \
ipv4.gateway 192.168.8.1 \
ipv4.dns "8.8.8.8 114.114.114.114" \
ipv4.method manual
修改连接
# 修改 IP 地址
sudo nmcli connection modify "static-enp3s0" ipv4.addresses 192.168.8.120/24
# 修改网关
sudo nmcli connection modify "static-enp3s0" ipv4.gateway 192.168.8.1
# 修改 DNS
sudo nmcli connection modify "static-enp3s0" ipv4.dns "8.8.8.8 1.1.1.1"
# 切换为 DHCP
sudo nmcli connection modify "static-enp3s0" ipv4.method auto
# 修改网卡名称
sudo nmcli connection modify "static-enp3s0" connection.interface-name enp3s0
激活/停用连接
# 激活连接
sudo nmcli connection up "static-enp3s0"
# 停用连接
sudo nmcli connection down "static-enp3s0"
# 重新加载配置
sudo nmcli connection reload
# 删除连接
sudo nmcli connection delete "static-enp3s0"
nmtui 文本界面
nmtui 提供图形化文本界面,适合不熟悉命令行的用户:
# 启动 nmtui
sudo nmtui
界面功能:
- Edit a connection:编辑连接
- Activate a connection:激活连接
- Set system hostname:设置主机名
图形界面配置
GNOME 桌面
- 设置 → 网络 → 有线连接 → 齿轮图标
- 或运行:
nm-connection-editor
KDE Plasma
- 系统设置 → 连接 → 网络
NetworkManager 配置文件
NetworkManager 配置文件位置:
# 系统连接(对所有用户有效)
/etc/NetworkManager/system-connections/
# 用户连接(仅对当前用户有效)
~/.local/share/NetworkManager/system-connections/
# 主配置文件
/etc/NetworkManager/NetworkManager.conf
配置文件示例(/etc/NetworkManager/system-connections/enp3s0.nmconnection):
[connection]
id=enp3s0
uuid=3e7c8c7e-8c9c-4a5a-9c7e-3c9a8e7d6c5b
type=ethernet
autoconnect=true
interface-name=enp3s0
[ethernet]
mac-address-blacklist=
[ipv4]
address1=192.168.8.110/24,192.168.8.1
dns=8.8.8.8;114.114.114.114;
method=manual
[ipv6]
addr-gen-mode=stable-privacy
method=ignore
NetworkManager 与 Netplan 配合
在 Ubuntu 中,NetworkManager 可以通过 Netplan 管理:
# /etc/netplan/01-network-manager-all.yaml
network:
version: 2
renderer: NetworkManager # 指定使用 NetworkManager
这样配置后,Netplan 会将控制权交给 NetworkManager。
实战案例
将 enp3s0 网卡的 IP 永久设置为 192.168.8.110
场景描述
当前配置:
- 网卡名称:
enp3s0 - 当前 IP:
192.168.1.118/24 - 目标 IP:
192.168.8.110/24 - 网关:
192.168.8.1 - DNS:
8.8.8.8、114.114.114.114
方案一:使用临时配置(测试用)
# 1. 清除原有 IP
sudo ip addr flush dev enp3s0
# 2. 设置新 IP
sudo ip addr add 192.168.8.110/24 dev enp3s0
# 3. 修改网关
sudo ip route del default
sudo ip route add default via 192.168.8.1
# 4. 修改 DNS
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
echo "nameserver 114.114.114.114" | sudo tee -a /etc/resolv.conf
# 5. 验证
ip addr show enp3s0
ping -c 4 8.8.8.8
方案二:使用 Netplan 配置(推荐服务器)
# 1. 进入配置目录
cd /etc/netplan/
# 2. 备份现有配置
sudo cp 00-installer-config.yaml 00-installer-config.yaml.bak
# 3. 创建新配置(或修改现有配置)
sudo nano 01-static-enp3s0.yaml
# /etc/netplan/01-static-enp3s0.yaml
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: false
dhcp6: false
addresses:
- 192.168.8.110/24
routes:
- to: default
via: 192.168.8.1
nameservers:
addresses:
- 8.8.8.8
- 114.114.114.114
# 4. 测试配置
sudo netplan try
# 系统会测试配置,120秒无操作自动回滚
# 5. 应用配置
sudo netplan apply
# 6. 验证
ip addr show enp3s0
ping 192.168.8.1
方案三:使用 NetworkManager 配置(推荐桌面)
方法 A:使用 nmcli 命令行
# 1. 查看现有连接
nmcli connection show
# 2. 修改现有连接或创建新连接
# 方式1:修改现有连接
sudo nmcli connection modify "Wired connection 1" \
ipv4.addresses 192.168.8.110/24 \
ipv4.gateway 192.168.8.1 \
ipv4.dns "8.8.8.8 114.114.114.114" \
ipv4.method manual
# 方式2:创建新连接
sudo nmcli connection add type ethernet ifname enp3s0 con-name "static-enp3s0" \
ipv4.addresses 192.168.8.110/24 \
ipv4.gateway 192.168.8.1 \
ipv4.dns "8.8.8.8 114.114.114.114" \
ipv4.method manual
# 3. 激活连接
sudo nmcli connection down "Wired connection 1"
sudo nmcli connection up "static-enp3s0"
# 4. 设置自动连接
sudo nmcli connection modify "static-enp3s0" connection.autoconnect yes
# 5. 验证
nmcli device show enp3s0
方法 B:使用 nmtui 文本界面
# 启动 nmtui
sudo nmtui
操作步骤:
- 选择 “Edit a connection”
- 选择你的网卡连接,按 Enter
- 选择 “IPv4 CONFIGURATION”,改为 “Manual”
- 选择 “Show” 展开详细信息
- 填写:
- Addresses:
192.168.8.110/24 - Gateway:
192.168.8.1 - DNS servers:
8.8.8.8,114.114.114.114
- Addresses:
- 选择 “OK” 保存
- 选择 “Back” 退出
- 重启连接或重启系统
方法 C:使用图形界面
# 启动网络连接编辑器
nm-connection-editor
或通过系统设置:
- GNOME:Settings → Network → 齿轮图标 → IPv4 → Manual
- 填写 IP、网关、DNS → Apply
方案四:混合方案(Netplan + NetworkManager)
# 1. 配置 Netplan 使用 NetworkManager 后端
sudo nano /etc/netplan/01-network-manager-all.yaml
network:
version: 2
renderer: NetworkManager
# 2. 应用 Netplan 配置
sudo netplan apply
# 3. 使用 NetworkManager 配置网络
sudo nmcli connection add type ethernet ifname enp3s0 con-name "my-static" \
ipv4.addresses 192.168.8.110/24 \
ipv4.gateway 192.168.8.1 \
ipv4.dns "8.8.8.8 114.114.114.114" \
ipv4.method manual
sudo nmcli connection up "my-static"
# 4. 验证
ip addr show enp3s0
验证配置是否成功
# 1. 检查 IP 地址
ip addr show enp3s0 | grep inet
# 应该看到:inet 192.168.8.110/24 ...
# 2. 检查路由
ip route show | grep default
# 应该看到:default via 192.168.8.1 ...
# 3. 检查 DNS
systemd-resolve --status | grep DNS
# 或
cat /etc/resolv.conf
# 4. 测试网络连通性
ping -c 4 192.168.8.1 # 测试网关
ping -c 4 8.8.8.8 # 测试外网
ping -c 4 baidu.com # 测试 DNS
# 5. 重启系统测试
sudo reboot
# 重启后再次检查 IP 是否保持不变
常见配置错误处理
# 错误1:配置文件格式错误
sudo netplan --debug apply # 查看详细错误信息
# 错误2:多个配置文件冲突
sudo rm /etc/netplan/90-NM-*.yaml # 删除旧配置文件
# 错误3:NetworkManager 和其他服务冲突
sudo systemctl stop networking # Debian/Ubuntu 传统网络服务
sudo systemctl mask networking
# 错误4:配置未生效
sudo systemctl restart NetworkManager # 重启 NetworkManager
sudo netplan apply # 重新应用 Netplan
故障排除
常用诊断命令
# 查看网络接口状态
ip link show
ip addr show
ip route show
# 查看网络服务状态
systemctl status NetworkManager
systemctl status systemd-networkd
# 查看连接历史
journalctl -u NetworkManager -n 50
# 测试连通性
ping -c 4 8.8.8.8
traceroute 8.8.8.8
# 查看端口监听
ss -tlnp
netstat -tlnp
# DNS 解析测试
dig google.com
nslookup google.com
host google.com
# 查看 ARP 表
arp -a
# 抓包分析
sudo tcpdump -i enp3s0 -n
常见问题及解决方案
问题1:配置后无法上网
# 检查网关是否可达
ping 192.168.8.1
# 检查 DNS 解析
nslookup baidu.com
# 检查路由表
ip route show
# 查看防火墙规则
sudo iptables -L
sudo ufw status
问题2:重启后配置丢失
# 检查配置文件是否保存
cat /etc/netplan/*.yaml
# 检查 NetworkManager 连接
nmcli connection show
# 确认服务自启动
systemctl is-enabled NetworkManager
问题3:多个网卡冲突
# 查看网卡排序
ls /sys/class/net/
# 使用 udev 固定网卡名称
sudo nano /etc/udev/rules.d/70-persistent-net.rules
# 示例:固定网卡名称
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="d0:00:06:41:70:d9", NAME="enp3s0"
问题4:NetworkManager 和 systemd-networkd 冲突
# 方案1:完全禁用 networkd
sudo systemctl disable systemd-networkd
sudo systemctl stop systemd-networkd
# 方案2:让 Netplan 统一管理
# 在 netplan 配置中明确指定 renderer
renderer: NetworkManager # 或 networkd
问题5:IP 地址冲突
# 扫描网络中的 IP 使用情况
sudo arp-scan --localnet
# 或使用 nmap
sudo nmap -sn 192.168.8.0/24
# 临时更换 IP 测试
sudo ip addr add 192.168.8.111/24 dev enp3s0
调试技巧
- 开启 NetworkManager 详细日志
sudo systemctl stop NetworkManager
sudo NetworkManager --log-level=DEBUG --no-daemon
- 监控网络事件
sudo udevadm monitor --property --subsystem-match=net
- 跟踪 Netplan 生成过程
sudo netplan generate
ls /run/systemd/network/
cat /run/systemd/network/*.network
最佳实践与建议
配置文件管理
- 版本控制
# 使用 Git 管理网络配置
cd /etc/netplan
sudo git init
sudo git add *.yaml
sudo git commit -m "Initial network config"
- 备份策略
# 自动备份脚本
#!/bin/bash
BACKUP_DIR="/root/network-backups"
mkdir -p $BACKUP_DIR
cp /etc/netplan/*.yaml $BACKUP_DIR/
cp /etc/NetworkManager/system-connections/* $BACKUP_DIR/ 2>/dev/null
tar -czf $BACKUP_DIR/network-$(date +%Y%m%d).tar.gz $BACKUP_DIR/
- 配置文档化
# 在配置文件中添加注释
network:
version: 2
# 配置目的:办公室网络静态IP
# 配置人员:张三
# 配置日期:2024-01-15
ethernets:
enp3s0:
addresses:
- 192.168.8.110/24 # 服务器固定IP
安全建议
- 限制配置文件权限
sudo chmod 600 /etc/netplan/*.yaml
sudo chmod 600 /etc/NetworkManager/system-connections/*
- 禁用不必要的网络服务
# 禁用 IPv6(如果不需要)
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
# 永久禁用
echo "net.ipv6.conf.all.disable_ipv6=1" | sudo tee -a /etc/sysctl.conf
- 防火墙配置
# UFW 基本配置
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable
# 区域限制
sudo ufw allow from 192.168.8.0/24
性能优化
- 调整网络参数
# /etc/sysctl.conf 优化
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728
net.ipv4.tcp_congestion_control = bbr
# 应用配置
sudo sysctl -p
- 网卡多队列
# 查看队列数量
ethtool -l enp3s0
# 设置 RSS 队列
sudo ethtool -L enp3s0 combined 4
监控与告警
- 网络监控脚本
#!/bin/bash
# monitor-network.sh
INTERFACE="enp3s0"
THRESHOLD=100 # Mbps
RX_BEFORE=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
TX_BEFORE=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
sleep 1
RX_AFTER=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
TX_AFTER=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
RX_RATE=$((($RX_AFTER - $RX_BEFORE) * 8 / 1000000))
TX_RATE=$((($TX_AFTER - $TX_BEFORE) * 8 / 1000000))
if [ $RX_RATE -gt $THRESHOLD ] || [ $TX_RATE -gt $THRESHOLD ]; then
echo "High network usage: RX=${RX_RATE}Mbps, TX=${TX_RATE}Mbps"
# 发送告警
fi
- 配置自动恢复
# /etc/systemd/system/network-watchdog.service
[Unit]
Description=Network Watchdog
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/network-watchdog.sh
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
选择建议
| 使用场景 | 推荐方案 | 原因 |
|---|---|---|
| Ubuntu 服务器 | Netplan + networkd | 轻量、稳定、配置统一 |
| 桌面 Linux | NetworkManager | 功能全面、图形界面、WiFi支持 |
| 容器环境 | 临时配置 | 轻量、无状态 |
| 嵌入式设备 | 静态配置文件 | 资源占用小 |
| 开发测试机 | NetworkManager | 灵活切换网络 |
| 云服务器 | 云平台管理 | 避免本地配置冲突 |
快速参考卡片
# === Netplan 快速参考 ===
ls /etc/netplan/ # 查看配置
sudo netplan apply # 应用配置
sudo netplan try # 测试配置
sudo netplan --debug apply # 调试模式
# === nmcli 快速参考 ===
nmcli device status # 设备状态
nmcli connection show # 连接列表
nmcli connection up "名称" # 激活连接
nmcli connection down "名称" # 停用连接
nmcli connection modify "名称" # 修改连接
# === 临时配置快速参考 ===
ip addr add 192.168.8.110/24 dev enp3s0
ip route add default via 192.168.8.1
echo "nameserver 8.8.8.8" > /etc/resolv.conf
# === 故障排查快速参考 ===
ip addr show
ip route show
ping -c 4 8.8.8.8
systemctl status NetworkManager
journalctl -u NetworkManager -f
结语
网络配置看似简单,实则涉及众多细节。掌握这三种配置方式,你已经能够应对绝大多数 Linux 网络配置场景:
- 临时配置:快速测试和应急处理
- Netplan:Ubuntu 服务器的最佳选择
- NetworkManager:全功能网络管理解决方案
记住:配置文件是基础设施,备份和文档和配置本身一样重要。
希望这篇指南能帮助你在 Linux 网络配置的道路上少走弯路!
参考资料
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)