Linux 网络配置大全

🐧 Linux 网络配置大全

IP 地址 | 静态路由 | 链路聚合 (Bond/Team) --- 临时 & 永久配置 | 多发行版对比

📑 目录

复制代码
0. 发行版版本与网络管理工具对照表
1. IP 地址配置 --- 临时方式
2. IP 地址配置 --- 永久方式
3. 静态路由 --- 临时方式
4. 静态路由 --- 永久方式
5. 链路聚合 --- 临时方式
6. 链路聚合 --- 永久方式
7. 验证命令汇总
8. 常见问题排障
  1. 发行版版本与网络管理工具对照表
    发行版 版本 网络管理工具 配置文件位置
    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 包)都可用于临时配置,重启即失效。永久配置才需要区分发行版和版本。
  2. 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。

  1. 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

  1. 静态路由 --- 临时方式(所有发行版通用)

临时使用 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

  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

  1. 链路聚合 --- 临时方式(所有发行版通用)

临时使用 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)。

  1. 链路聚合 --- 永久方式(按发行版区分)

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

  1. 验证命令汇总
    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

  1. 常见问题排障
    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 / 路由 / 聚合 | 临时 & 永久 | 多发行版多版本