Linux 网络配置完全指南:ip命令、NetworkManager 与 Netplan

Linux 网络配置完全指南:ip命令、NetworkManager 与 Netplan

Someone Lv5

在 Linux 服务器运维中,网络配置是最基础也最重要的技能之一。无论你是刚接触 Linux 的新手,还是有一定经验的运维人员,掌握现代 Linux 网络配置工具都是必修课。本文将系统性地介绍 Linux 网络配置的三大核心工具:ip 命令族、NetworkManager 服务管理以及 Ubuntu 上的 Netplan 配置方案。文章还会用表格形式汇总常用命令,方便你快速查阅。

一、Linux 网络配置概述

传统上,Linux 网络配置依赖 ifconfigroutenetstat 等工具(来自 net-tools 包),但这些工具已不再被积极维护。现代 Linux 发行版推荐使用 iproute2 工具包,其中的核心命令 ip 可以完成几乎所有网络配置任务。

网络配置的层次

Linux 网络配置可以分三个层次理解:

层次工具/机制说明
底层命令ip, ss, bridge直接操作内核网络栈,实时生效,重启丢失
服务层NetworkManager, systemd-networkd管理网络连接的守护进程,支持持久化配置
配置方案Netplan, ifupdown (/etc/network/interfaces)声明式配置框架,生成下层服务的配置

小贴士:Ubuntu 18.04+ 和 Debian 10+ 默认使用 Netplan + systemd-networkd 或 NetworkManager;CentOS/RHEL 7+ 主要使用 NetworkManager;Arch Linux 等则完全由用户选择。


二、ip 命令完全指南

ip 命令是 iproute2 工具包的核心,它整合了传统 ifconfig、route、arp 等命令的功能。其基本语法为:

1
ip [选项] 对象 命令 [参数]

常见对象包括:link(网络接口)、addr(IP 地址)、route(路由表)、neigh(ARP 邻居表)。

2.1 查看网络接口信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看所有网络接口(等价于 ifconfig -a)
ip link show

# 查看指定接口
ip link show eth0

# 查看接口统计(收发字节数、错误数等)
ip -s link show eth0

# 查看 IP 地址信息(等价于 ifconfig)
ip addr show

# 只显示 IPv4 地址
ip -4 addr show

# 只显示正在运行的接口
ip link show up

输出示例:

1
2
3
4
5
6
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:16:3e:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.10/24 brd 10.0.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::216:3eff:fe12:3456/64 scope link
valid_lft forever preferred_lft forever

标志解读:

  • UP:接口已启用
  • LOWER_UP:物理层已连接(网线插好)
  • BROADCAST:支持广播
  • MULTICAST:支持组播
  • mtu 1500:最大传输单元 1500 字节
  • state UP:运行状态

2.2 管理网络接口

1
2
3
4
5
6
7
8
9
10
11
12
# 启用/禁用接口
ip link set eth0 up
ip link set eth0 down

# 设置 MTU
ip link set eth0 mtu 9000

# 设置 MAC 地址
ip link set eth0 address 00:11:22:33:44:55

# 设置接口别名(例如 eth0:1)
ip link add link eth0 name eth0.100 type vlan id 100

2.3 管理 IP 地址

1
2
3
4
5
6
7
8
9
10
11
12
# 添加 IP 地址
ip addr add 192.168.1.100/24 dev eth0

# 添加多个 IP(IP 别名)
ip addr add 192.168.1.101/24 dev eth0
ip addr add 192.168.1.102/24 dev eth0

# 删除 IP 地址
ip addr del 192.168.1.100/24 dev eth0

# 清空接口上的所有 IP
ip addr flush dev eth0

2.4 管理路由表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查看路由表(等价于 route -n)
ip route show

# 添加默认网关
ip route add default via 192.168.1.1 dev eth0

# 添加静态路由
ip route add 10.0.0.0/8 via 192.168.1.254 dev eth0

# 删除路由
ip route del 10.0.0.0/8

# 添加带 metric 的多网关(主备)
ip route add default via 192.168.1.1 dev eth0 metric 100
ip route add default via 192.168.1.254 dev eth0 metric 200

2.5 查看 ARP/邻居表

1
2
3
4
5
6
7
8
# 查看 ARP 缓存(等价于 arp -n)
ip neigh show

# 手动添加静态 ARP 条目
ip neigh add 192.168.1.1 lladdr 00:11:22:33:44:55 dev eth0 nud permanent

# 删除 ARP 条目
ip neigh del 192.168.1.1 dev eth0

2.6 ip 命令速查表

操作传统命令ip 命令
查看接口ifconfigip link show
查看 IPifconfigip addr show
启用接口ifconfig eth0 upip link set eth0 up
添加 IPifconfig eth0:1 10.0.0.1/24ip addr add 10.0.0.1/24 dev eth0
查看路由route -nip route show
添加默认网关route add default gw 10.0.0.1ip route add default via 10.0.0.1
查看 ARParp -nip neigh show
查看连接netstat -tulnpss -tulnp
查看 socket 统计netstat -sss -s

三、NetworkManager 详解

NetworkManager 是大多数现代 Linux 发行版的默认网络管理守护进程。它支持有线、无线、移动宽带、VPN 等多种连接类型,并提供了命令行工具 nmcli 和文本界面 nmtui

3.1 安装与启停

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 安装 NetworkManager(Ubuntu/Debian)
sudo apt install network-manager

# 安装(CentOS/RHEL)
sudo yum install NetworkManager

# 查看服务状态
sudo systemctl status NetworkManager

# 启停服务
sudo systemctl start NetworkManager
sudo systemctl stop NetworkManager
sudo systemctl restart NetworkManager

# 设置开机自启
sudo systemctl enable NetworkManager

3.2 nmcli 基础用法

nmcli 是 NetworkManager 的命令行客户端,功能非常强大。

1
2
3
4
5
6
7
8
9
10
11
# 查看网络设备状态
nmcli device status

# 查看所有连接
nmcli connection show

# 查看活动连接
nmcli connection show --active

# 查看指定连接的详细信息
nmcli connection show "Wired connection 1"

3.3 使用 nmcli 创建和管理连接

创建静态 IP 连接:

1
2
3
4
5
6
7
8
# 创建有线连接并配置静态 IP
nmcli connection add type ethernet con-name "my-static" \
ifname eth0 \
ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8 114.114.114.114" \
autoconnect yes

创建 DHCP 连接:

1
2
3
4
5
# 创建 DHCP 自动获取 IP 的连接
nmcli connection add type ethernet con-name "my-dhcp" \
ifname eth0 \
ipv4.method auto \
autoconnect yes

修改现有连接:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 修改 DNS
nmcli connection modify "my-static" ipv4.dns "1.1.1.1 8.8.8.8"

# 添加次要 IP
nmcli connection modify "my-static" +ipv4.addresses 10.0.0.10/24

# 修改 MTU
nmcli connection modify "my-static" 802-3-ethernet.mtu 1450

# 启用/禁用连接
nmcli connection up "my-static"
nmcli connection down "my-static"

# 删除连接
nmcli connection delete "my-dhcp"

3.4 nmtui 文本界面

如果不想记命令,可以用 nmtui 打开图形化的文本界面进行操作:

1
sudo nmtui

nmtui 中可以直观地编辑连接、激活连接、设置主机名等。

3.5 NetworkManager 配置文件

NetworkManager 的连接配置文件存储在 /etc/NetworkManager/system-connections/ 目录下,每个连接对应一个 .nmconnection 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# /etc/NetworkManager/system-connections/my-static.nmconnection
[connection]
id=my-static
type=ethernet
interface-name=eth0
autoconnect=true

[ipv4]
method=manual
addresses=192.168.1.100/24
gateway=192.168.1.1
dns=8.8.8.8;114.114.114.114;

[ipv6]
method=disabled

注意:这些配置文件包含明文密码(如果设置了 Wi-Fi 密码),权限应为 600。


四、Netplan 配置方案

Netplan 是 Ubuntu 17.10 开始引入的网络配置工具,使用 YAML 格式的配置文件,可以后端对接 NetworkManager 或 systemd-networkd。

4.1 配置文件位置

Netplan 的配置文件位于 /etc/netplan/ 目录下,常见的文件名有:

  • /etc/netplan/01-netcfg.yaml
  • /etc/netplan/00-installer-config.yaml
  • /etc/netplan/50-cloud-init.yaml(云服务器上常见)

4.2 Netplan 配置示例

DHCP 自动获取:

1
2
3
4
5
6
7
8
# /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: true
dhcp6: false

静态 IP 配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 192.168.1.100/24
- 10.0.0.10/24 # 次要 IP
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 114.114.114.114
dhcp4: false
dhcp6: false
mtu: 1500

多网卡配置(含路由):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
eth1:
addresses:
- 10.0.0.10/24
routes:
- to: 172.16.0.0/12
via: 10.0.0.1

Wi-Fi 配置:

1
2
3
4
5
6
7
8
9
10
# /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: NetworkManager
wifis:
wlan0:
dhcp4: true
access-points:
"MyWiFi":
password: "your-wifi-password"

4.3 应用 Netplan 配置

1
2
3
4
5
6
7
8
9
10
11
# 测试配置是否有语法错误
sudo netplan try

# 直接应用配置(不需要确认)
sudo netplan apply

# 生成后端的配置文件(不应用)
sudo netplan generate

# 调试用,查看 Netplan 生成的 systemd-networkd 配置
sudo netplan --debug apply

重要提示:使用 netplan try 会应用配置并等待 120 秒确认。如果你在 SSH 中操作,务必使用此命令,配置错误导致断网后可以等待超时自动回滚。

4.4 各种场景下的 Netplan 配置

禁用 IPv6:

1
2
3
4
5
6
7
8
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: true
dhcp6: false
link-local: [] # 禁用 link-local IPv6 地址

网卡 bonding(绑定/聚合):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
network:
version: 2
renderer: networkd
bonds:
bond0:
interfaces: [eth0, eth1]
parameters:
mode: active-backup
mii-monitor-interval: 100
primary: eth0
ethernets:
eth0:
dhcp4: false
eth1:
dhcp4: false

五、网络故障排查实用技巧

5.1 基础排查流程

当服务器网络出现问题时,按照以下顺序排查:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 1. 检查接口状态
ip link show eth0
# 重点看 state UP 和 LOWER_UP

# 2. 检查 IP 地址配置
ip addr show eth0

# 3. 测试链路层连通性
ping -c 4 192.168.1.1 # 能否 ping 通网关

# 4. 检查路由表
ip route show
# 确认有默认网关

# 5. 测试 DNS 解析
nslookup google.com
dig +short google.com

# 6. 检查外部连通性
ping -c 4 8.8.8.8 # 如果通,说明是 DNS 问题
ping -c 4 google.com # 测试完整连通性

# 7. 检查防火墙
sudo iptables -L -n -v
sudo firewall-cmd --list-all

5.2 常见网络问题排查表

现象可能原因排查命令
ping 不通网关网线松动、接口 down、IP 冲突ip link show; dmesg | tail
ping 外网 IP 通但域名不通DNS 配置错误cat /etc/resolv.conf; nslookup
某些端口无法访问防火墙阻止ss -tulnp; iptables -L -n
网络速度慢链路协商问题、带宽耗尽ethtool eth0; nload; iftop
SSH 频繁断连MTU 问题、路由不稳定ping -M do -s 1472 网关IP; traceroute
Linux 发包正常但收不到回复ARP 表错误、路由回程不对ip neigh show; tcpdump -i eth0

5.3 使用 ss 替代 netstat

1
2
3
4
5
6
7
8
9
10
11
12
# 查看所有监听端口
ss -tulnp

# 查看 TCP 连接状态统计
ss -t state established
ss -t state time-wait

# 查看某个端口的连接数
ss -tn state established | grep :80 | wc -l

# 查看 socket 统计信息
ss -s

5.4 测试网络性能

1
2
3
4
5
6
7
8
9
10
11
12
13
# 使用 ethtool 查看网卡参数
sudo ethtool eth0
sudo ethtool -i eth0 # 驱动信息
sudo ethtool -S eth0 # 驱动统计

# 使用 iperf3 测试带宽(需要服务端和客户端)
# 服务端
iperf3 -s
# 客户端
iperf3 -c 192.168.1.100

# 使用 mtr 进行持续路由追踪
mtr -n google.com

六、系统级网络配置持久化

6.1 hostname 配置

1
2
3
4
5
6
7
8
9
10
# 查看当前主机名
hostname
hostnamectl

# 设置主机名
sudo hostnamectl set-hostname my-server

# 修改 /etc/hosts 确保本地解析
sudo vim /etc/hosts
# 添加:127.0.1.1 my-server

6.2 DNS 配置

1
2
3
4
5
6
# 查看当前 DNS 配置
cat /etc/resolv.conf

# 如果由 systemd-resolved 管理
resolvectl status
resolvectl dns eth0 8.8.8.8

6.3 系统级网络参数调优

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查看 sysctl 网络参数
sudo sysctl -a | grep net.

# 常见调优参数
# 开启 IP 转发(路由器功能)
sudo sysctl -w net.ipv4.ip_forward=1

# 增大 TCP 缓冲区
sudo sysctl -w net.core.rmem_max=134217728
sudo sysctl -w net.core.wmem_max=134217728

# 缩短 TIME_WAIT 时长
sudo sysctl -w net.ipv4.tcp_fin_timeout=30

# 持久化配置(写入 /etc/sysctl.conf 或 /etc/sysctl.d/)
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
echo "net.core.rmem_max = 134217728" | sudo tee -a /etc/sysctl.d/network-tuning.conf
sudo sysctl -p

七、实战:一键配置脚本

以下是一个完整的网络初始化脚本,适用于 Ubuntu 服务器首次配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/bash
# Linux 网络初始化脚本
# 使用方法:sudo bash network-init.sh

set -e

# 配置参数
INTERFACE="eth0"
STATIC_IP="192.168.1.100/24"
GATEWAY="192.168.1.1"
DNS="8.8.8.8,114.114.114.114"
HOSTNAME="my-server"

# 1. 设置主机名
echo ">>> Setting hostname..."
hostnamectl set-hostname $HOSTNAME

# 2. 配置 Netplan
echo ">>> Configuring Netplan..."
cat > /etc/netplan/01-netcfg.yaml <<EOF
network:
version: 2
renderer: networkd
ethernets:
$INTERFACE:
addresses:
- $STATIC_IP
gateway4: ${GATEWAY%/*}
nameservers:
addresses: [${DNS//,/, }]
dhcp4: false
EOF

# 3. 应用配置
echo ">>> Applying network config..."
netplan apply

# 4. 配置 hosts
echo ">>> Configuring /etc/hosts..."
sed -i "/127.0.1.1/d" /etc/hosts
echo "127.0.1.1 $HOSTNAME" >> /etc/hosts

# 5. 验证配置
echo ">>> Verifying network..."
ip addr show $INTERFACE
ip route show
ping -c 2 $GATEWAY

echo ">>> Network setup completed!"

结语

掌握 Linux 网络配置是服务器运维的必备技能。本文从 ip 命令的基础用法,到 NetworkManager 的路由策略,再到 Netplan 的声明式配置,构建了一套完整的知识体系。在实际工作中,建议:

  1. 日常排查:优先使用 ipss 代替传统 ifconfignetstat
  2. 配置管理:Ubuntu 上使用 Netplan,CentOS/RHEL 上使用 nmcli
  3. 调试技巧:结合 tcpdumpmtr 深入分析网络问题
  4. 自动化运维:将网络配置纳入 Ansible/Puppet 等配置管理工具

网络配置涉及的细节非常多,如果遇到本文未覆盖的问题,欢迎留言交流。


本文由AI辅助生成,内容仅供参考

  • 标题: Linux 网络配置完全指南:ip命令、NetworkManager 与 Netplan
  • 作者: Someone
  • 创建于 : 2026-06-08 17:38:00
  • 更新于 : 2026-06-18 08:39:57
  • 链接: https://demo-blog.qusite.cn/2026-06-08-linux-network-config-guide/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。