🐧 Linux 网络配置大全
IP 地址 | 静态路由 | 链路聚合 (Bond/Team) --- 临时 & 永久配置 | 多发行版对比
📑 目录
0. 发行版版本与网络管理工具对照表
1. IP 地址配置 --- 临时方式
2. IP 地址配置 --- 永久方式
3. 静态路由 --- 临时方式
4. 静态路由 --- 永久方式
5. 链路聚合 --- 临时方式
6. 链路聚合 --- 永久方式
7. 验证命令汇总
8. 常见问题排障
- 发行版版本与网络管理工具对照表
发行版 版本 网络管理工具 配置文件位置
Ubuntu 14.04 / 16.04 ifupdown /etc/network/interfaces
Ubuntu 18.04 / 20.04 / 22.04 / 24.04 Netplan + networkd/NM /etc/netplan/.yaml
RHEL / CentOS 6 / 7 network-scripts (initscripts) /etc/sysconfig/network-scripts/ifcfg-
RHEL / Rocky / Alma 8 NetworkManager + nmcli /etc/sysconfig/network-scripts/ifcfg-* 或 NM keyfile
RHEL / Rocky / Alma 9 NetworkManager (nmcli) /etc/NetworkManager/system-connections/.nmconnection
Debian 9 / 10 / 11 / 12 ifupdown 或 NetworkManager /etc/network/interfaces
SUSE / openSUSE 12 / 15 wicked /etc/sysconfig/network/ifcfg-
⚠️ 关键点:不论哪个发行版,ip 命令(iproute2 包)都可用于临时配置,重启即失效。永久配置才需要区分发行版和版本。 - IP 地址配置 --- 临时方式(所有发行版通用)
临时使用 ip 命令,重启后失效。适合临时排障或测试。
=== 添加 IP 地址 ===
ip addr add 192.168.1.100/24 dev eth0
=== 添加多个 IP(一卡多IP)===
ip addr add 192.168.1.101/24 dev eth0 label eth0:1
=== 删除 IP 地址 ===
ip addr del 192.168.1.100/24 dev eth0
=== 启用/禁用网卡 ===
ip link set eth0 up
ip link set eth0 down
=== 修改 MTU ===
ip link set eth0 mtu 9000
=== 旧命令(已废弃但仍可用)===
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up
⚠️ 注意:ifconfig 属于 net-tools 包,已被 iproute2 的 ip 命令替代。新系统可能默认不安装 net-tools。
- IP 地址配置 --- 永久方式(按发行版区分)
2.1 Ubuntu 18.04+ (Netplan)
Ubuntu 18/20/22/24永久
文件: /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
ens33:
addresses:
-
192.168.1.100/24
-
192.168.1.101/24
gateway4: 192.168.1.1
nameservers:
addresses:
-
8.8.8.8
-
114.114.114.114
应用配置:
sudo netplan apply
测试配置(有误可自动回滚):
sudo netplan try
💡 Ubuntu 22.04+ 注意:gateway4 已废弃,推荐使用 routes 方式:
routes:
- to: default
via: 192.168.1.1
2.2 Ubuntu 14.04 / 16.04 (ifupdown)
Ubuntu 14/16永久
文件: /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 114.114.114.114
重启网络:
sudo systemctl restart networking
或
sudo ifdown eth0 && sudo ifup eth0
2.3 RHEL / CentOS 6 / 7 (network-scripts)
RHEL/CentOS 6/7永久
文件: /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=114.114.114.114
重启网络:
systemctl restart network # CentOS 7
service network restart # CentOS 6
2.4 RHEL / Rocky / Alma 8 (nmcli)
RHEL/Rocky/Alma 8永久
使用 nmcli 命令行配置(推荐)
nmcli con mod ens33 ipv4.addresses 192.168.1.100/24
nmcli con mod ens33 ipv4.gateway 192.168.1.1
nmcli con mod ens33 ipv4.dns "8.8.8.8 114.114.114.114"
nmcli con mod ens33 ipv4.method manual
nmcli con up ens33
或编辑 ifcfg 文件(RHEL8 仍兼容):
/etc/sysconfig/network-scripts/ifcfg-ens33 (同 CentOS 7 格式)
2.5 RHEL / Rocky / Alma 9 (nmcli + keyfile)
RHEL/Rocky/Alma 9永久
RHEL 9 取消了 ifcfg 格式,使用 keyfile:
文件: /etc/NetworkManager/system-connections/ens33.nmconnection
connection
id=ens33
type=ethernet
interface-name=ens33
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
或仍使用 nmcli(推荐,命令同 RHEL 8):
nmcli con mod ens33 ipv4.addresses 192.168.1.100/24
nmcli con mod ens33 ipv4.gateway 192.168.1.1
nmcli con mod ens33 ipv4.method manual
nmcli con up ens33
重载配置:
nmcli con reload
2.6 Debian 9 / 10 / 11 / 12 (ifupdown)
Debian永久
文件: /etc/network/interfaces
auto ens33
iface ens33 inet static
address 192.168.1.100/24
gateway 192.168.1.1
dns-nameservers 8.8.8.8
应用:
systemctl restart networking
2.7 SUSE / openSUSE 12 / 15 (wicked)
SUSE/openSUSE永久
文件: /etc/sysconfig/network/ifcfg-eth0
BOOTPROTO=static
STARTMODE=auto
IPADDR=192.168.1.100/24
文件: /etc/sysconfig/network/routes (默认路由)
default 192.168.1.1 - -
应用:
wicked ifreload eth0
或
systemctl restart wicked
- 静态路由 --- 临时方式(所有发行版通用)
临时使用 ip route 命令,重启失效。
=== 添加静态路由 ===
ip route add 10.10.0.0/16 via 192.168.1.1 dev eth0
=== 添加默认路由 ===
ip route add default via 192.168.1.1
=== 添加指定源地址的路由 ===
ip route add 172.16.0.0/12 via 192.168.1.254 src 192.168.1.100
=== 添加黑洞路由(丢弃)===
ip route add blackhole 192.168.99.0/24
=== 添加等价多路径路由 (ECMP) ===
ip route add 10.0.0.0/8
nexthop via 192.168.1.1 weight 1
nexthop via 192.168.1.2 weight 1
=== 删除路由 ===
ip route del 10.10.0.0/16 via 192.168.1.1
=== 替换路由(存在则修改,不存在则添加)===
ip route replace 10.10.0.0/16 via 192.168.1.254
=== 指定 metric(优先级)===
ip route add 10.10.0.0/16 via 192.168.1.1 metric 100
=== 旧命令(已废弃)===
route add -net 10.10.0.0/16 gw 192.168.1.1
- 静态路由 --- 永久方式(按发行版区分)
4.1 Ubuntu 18.04+ (Netplan)
Ubuntu 18/20/22/24永久
文件: /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
ens33:
addresses:
- 192.168.1.100/24
routes:
- to: 10.10.0.0/16
via: 192.168.1.254
metric: 100
- to: 172.16.0.0/12
via: 192.168.1.253
- to: default
via: 192.168.1.1
sudo netplan apply
4.2 Ubuntu 14.04 / 16.04 (ifupdown)
Ubuntu 14/16永久
文件: /etc/network/interfaces(在接口段内添加)
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
up ip route add 10.10.0.0/16 via 192.168.1.254
up ip route add 172.16.0.0/12 via 192.168.1.253
或创建独立路由文件:
/etc/network/if-up.d/static-routes (脚本方式)
4.3 RHEL / CentOS 6 / 7 (route-文件)
RHEL/CentOS 6/7永久
文件: /etc/sysconfig/network-scripts/route-ens33
格式1 (推荐):
10.10.0.0/16 via 192.168.1.254
172.16.0.0/12 via 192.168.1.253
格式2 (旧式 ifcfg 风格):
ADDRESS0=10.10.0.0
NETMASK0=255.255.0.0
GATEWAY0=192.168.1.254
重启网络:
systemctl restart network
4.4 RHEL / Rocky / Alma 8 / 9 (nmcli)
RHEL/Rocky/Alma 8/9永久
添加路由:
nmcli con mod ens33 +ipv4.routes "10.10.0.0/16 192.168.1.254 100"
nmcli con mod ens33 +ipv4.routes "172.16.0.0/12 192.168.1.253"
nmcli con up ens33
删除路由:
nmcli con mod ens33 -ipv4.routes "10.10.0.0/16 192.168.1.254 100"
nmcli con up ens33
查看已配置的路由:
nmcli con show ens33 | grep ipv4.routes
4.5 Debian (ifupdown)
Debian 9-12永久
文件: /etc/network/interfaces
auto ens33
iface ens33 inet static
address 192.168.1.100/24
gateway 192.168.1.1
post-up ip route add 10.10.0.0/16 via 192.168.1.254
pre-down ip route del 10.10.0.0/16 via 192.168.1.254
4.6 SUSE / openSUSE (wicked)
SUSE 12/15永久
文件: /etc/sysconfig/network/ifroute-eth0
10.10.0.0/16 192.168.1.254 - eth0
172.16.0.0/12 192.168.1.253 - eth0
或全局默认路由:
/etc/sysconfig/network/routes
default 192.168.1.1 - -
wicked ifreload eth0
- 链路聚合 --- 临时方式(所有发行版通用)
临时使用 ip 命令创建 Bond 接口,重启失效。
5.1 使用 ip 命令创建 Bond(内核模块方式)
=== 加载 bonding 模块 ===
modprobe bonding mode=4 miimon=100
=== 创建 bond 接口 ===
ip link add bond0 type bond mode 802.3ad
ip link set bond0 type bond miimon 100
=== 将物理网卡加入 bond ===
ip link set eth0 down
ip link set eth1 down
ip link set eth0 master bond0
ip link set eth1 master bond0
=== 配置 IP 并启用 ===
ip addr add 192.168.1.100/24 dev bond0
ip link set bond0 up
=== 移除成员 ===
ip link set eth1 nomaster
=== 删除 bond ===
ip link del bond0
5.2 Bond 模式说明
模式 名称 说明 交换机要求
0 balance-rr 轮询,负载均衡 无特殊要求
1 active-backup 主备,一个活动一个待命 无特殊要求
2 balance-xor 基于 XOR hash 分流 无特殊要求
3 broadcast 所有成员都发送 无特殊要求
4 802.3ad (LACP) 动态聚合,最常用 需交换机配 LACP
5 balance-tlb 自适应发送负载均衡 无特殊要求
6 balance-alb 自适应收发负载均衡 无特殊要求
⚠️ 网络工程师重点:Mode 4 (LACP) 最常用于数据中心服务器上联,需要交换机侧配置对应的 Port-Channel(Cisco)/ Eth-Trunk(华为)/ AE(Juniper)。
- 链路聚合 --- 永久方式(按发行版区分)
6.1 Ubuntu 18.04+ (Netplan Bond)
Ubuntu 18/20/22/24永久
文件: /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
ens34:
dhcp4: no
bonds:
bond0:
interfaces:
-
ens33
-
ens34
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
parameters:
mode: 802.3ad
lacp-rate: fast
mii-monitor-interval: 100
transmit-hash-policy: layer3+4
nameservers:
addresses:
- 8.8.8.8
sudo netplan apply
6.2 Ubuntu 14.04 / 16.04 (ifupdown Bond)
Ubuntu 14/16永久
安装 ifenslave:
apt install ifenslave
文件: /etc/network/interfaces
auto bond0
iface bond0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
bond-slaves eth0 eth1
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-xmit-hash-policy layer3+4
auto eth0
iface eth0 inet manual
bond-master bond0
auto eth1
iface eth1 inet manual
bond-master bond0
systemctl restart networking
6.3 RHEL / CentOS 7 (network-scripts Bond)
RHEL/CentOS 7永久
文件: /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
BONDING_OPTS="mode=4 miimon=100 lacp_rate=fast xmit_hash_policy=layer3+4"
文件: /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
文件: /etc/sysconfig/network-scripts/ifcfg-ens34 (同上改 DEVICE)
DEVICE=ens34
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
systemctl restart network
6.4 RHEL / Rocky / Alma 8 / 9 (nmcli Bond)
RHEL/Rocky/Alma 8/9永久
创建 bond 连接:
nmcli con add type bond ifname bond0 con-name bond0
bond.options "mode=802.3ad,miimon=100,lacp_rate=fast,xmit_hash_policy=layer3+4"
添加成员:
nmcli con add type ethernet ifname ens33 con-name bond0-slave1 master bond0
nmcli con add type ethernet ifname ens34 con-name bond0-slave2 master bond0
配置 IP:
nmcli con mod bond0 ipv4.addresses 192.168.1.100/24
nmcli con mod bond0 ipv4.gateway 192.168.1.1
nmcli con mod bond0 ipv4.method manual
启用:
nmcli con up bond0-slave1
nmcli con up bond0-slave2
nmcli con up bond0
6.5 RHEL 7+ nmcli Team(替代 Bond 的新方案)
RHEL 7/8永久 Team 是红帽推荐的 Bond 替代方案,配置更灵活。
创建 team:
nmcli con add type team ifname team0 con-name team0
team.config '{"runner":{"name":"lacp","active":true,"fast_rate":true}}'
添加成员:
nmcli con add type team-slave ifname ens33 con-name team0-port1 master team0
nmcli con add type team-slave ifname ens34 con-name team0-port2 master team0
配置 IP:
nmcli con mod team0 ipv4.addresses 192.168.1.100/24
nmcli con mod team0 ipv4.gateway 192.168.1.1
nmcli con mod team0 ipv4.method manual
nmcli con up team0
注意: RHEL 9 已废弃 Team,只保留 Bond!
6.6 SUSE (wicked Bond)
SUSE 12/15永久
文件: /etc/sysconfig/network/ifcfg-bond0
STARTMODE=auto
BOOTPROTO=static
IPADDR=192.168.1.100/24
BONDING_MASTER=yes
BONDING_MODULE_OPTS="mode=802.3ad miimon=100 lacp_rate=fast"
BONDING_SLAVE_0=eth0
BONDING_SLAVE_1=eth1
文件: /etc/sysconfig/network/ifcfg-eth0
STARTMODE=hotplug
BOOTPROTO=none
文件: /etc/sysconfig/network/ifcfg-eth1
STARTMODE=hotplug
BOOTPROTO=none
wicked ifreload all
- 验证命令汇总
7.1 IP 地址验证
查看所有 IP
ip addr show
ip -4 addr show # 仅 IPv4
ip addr show dev ens33 # 指定接口
简洁显示
ip -br addr
确认网卡状态
ip link show
ip -br link
查看网卡详细信息(速率/双工)
ethtool ens33
7.2 路由验证
查看路由表
ip route show
ip route show table all # 包含策略路由
查看到达特定目的的路由
ip route get 10.10.1.1
查看路由缓存
ip route show cache
Traceroute 验证路径
traceroute 10.10.1.1
mtr 10.10.1.1 # 持续追踪
7.3 Bond/Team 验证
Bond 状态
cat /proc/net/bonding/bond0
Bond 简要信息
ip -br link show type bond
ip -br link show master bond0 # 查看成员
Bond 模式和参数
cat /sys/class/net/bond0/bonding/mode
cat /sys/class/net/bond0/bonding/slaves
cat /sys/class/net/bond0/bonding/lacp_rate
cat /sys/class/net/bond0/bonding/xmit_hash_policy
Team 状态 (RHEL 7/8)
teamdctl team0 state
nmcli 查看连接
nmcli con show
nmcli con show bond0
nmcli device status
7.4 连通性验证
Ping 网关
ping -c 4 192.168.1.1
Ping 跨网段目标
ping -c 4 10.10.1.1
检查 ARP 邻居表
ip neigh show
检查 DNS
nslookup www.baidu.com
dig www.baidu.com
检查端口连通
ss -tulnp # 本机监听
curl -v http://10.10.1.1:80 # 远端端口
7.5 配置持久化验证
Netplan 检查语法:
sudo netplan generate # 检查 YAML 语法错误
NetworkManager 检查:
nmcli general status
nmcli con show --active
模拟重启验证(重载网络而非重启系统):
systemctl restart NetworkManager # RHEL 8/9
systemctl restart networking # Debian/Ubuntu旧版
netplan apply # Ubuntu Netplan
wicked ifreload all # SUSE
- 常见问题排障
8.1 配置不生效
现象 排查
重启后 IP 丢失 只做了临时配置(ip addr add),未写入永久配置文件
netplan apply 报错 YAML 缩进错误(必须用空格不能用Tab),用 netplan generate 检查
nmcli con up 失败 检查 nmcli con show 连接名是否正确,接口是否被其他 profile 占用
ifcfg 修改后不生效 RHEL 8/9 需 nmcli con reload 或 nmcli con up 连接名
8.2 Bond/聚合问题
现象 排查
Bond 只有一个接口 UP 交换机侧未配 LACP / Port-Channel,或模式不匹配
LACP 协商不起来 检查 cat /proc/net/bonding/bond0 中 Partner 信息;交换机 show lacp neighbor
Bond 流量不负载均衡 检查 xmit_hash_policy,layer3+4 比 layer2 效果好;确认有多条不同流
Bond 切换后丢包 检查 miimon 间隔(建议 100ms);active-backup 模式下切换延迟正常
8.3 路由问题
现象 排查
跨网段不通 ① ip route get 目标IP 确认走哪个网关 ② ping 网关是否通 ③ 网关设备是否有回程路由
路由存在但不通 检查防火墙 iptables -L -n / firewall-cmd --list-all 是否拦截
多网关冲突 检查是否有多条 default 路由,用 metric 区分优先级
路由重启后消失 未写入永久配置(route-文件 / netplan / nmcli)
8.4 版本差异踩坑
版本 注意点
Ubuntu 22.04+ gateway4 已废弃,必须用 routes: - to: default
RHEL 9 彻底移除了 ifcfg 格式和 network-scripts 包,只能用 nmcli 或 keyfile
RHEL 9 废弃了 Team,只支持 Bond
RHEL 8 同时支持 ifcfg 和 nmcli,但 ifcfg 已标记 deprecated
Debian 12 默认使用 systemd-networkd,部分场景需手动安装 ifupdown
SUSE 15 SP4+ wicked 仍是默认,但也可切换为 NetworkManager
Linux 网络配置参考 | IP / 路由 / 聚合 | 临时 & 永久 | 多发行版多版本