首页 > Sysadmin > 正文

Linux 网卡配置与开机启动详解

huyuanwen 2026-11-02 Sysadmin

在 Linux 里配置网卡分两层:临时生效用 ip 命令,重启后丢失;要让配置在开机后自动加载,需要把配置交给 systemd-networkd 或 Netplan 托管。以下均在 WSL2 Ubuntu 24.04 上验证。

一、TL;DR:按场景选方案

  • 临时改地址或启停接口:ip link set + ip addr add,立即生效,但 reboot 后丢失 [1] [2]。
  • 服务器或 systemd 原生环境:写 .network 文件到 /etc/systemd/network/,systemctl enable systemd-networkd 实现开机自启 [3] [4]。
  • Ubuntu 24.04 默认桌面/服务器:用 Netplan 写 YAML,netplan apply 生成后端配置 [5]。

二、临时配置:ip link / ip addr

ip link set eth0 up
ip link set eth0 down
ip addr add 192.168.1.100/24 dev eth0
ip addr flush dev eth0

ip link set 控制接口的启停状态,ip addr add 添加协议地址,flush 清空该接口所有地址 [1] [2]。这类操作只在内核里生效,不落盘,适合调试或临时切换网络。

三、systemd-networkd 持久化

mkdir -p /etc/systemd/network
cat > /etc/systemd/network/10-eth0.network <<EOF
[Match]
Name=eth0

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=192.168.1.1
EOF
systemctl daemon-reload
systemctl enable --now systemd-networkd

.network 文件是 INI 格式,[Match] 决定匹配哪些接口,[Network] 段写地址、网关和 DNS [3]。systemctl enable 创建开机自启的 symlink,daemon-reload 让 systemd 重新读取新配置 [6]。用 networkctl status eth0 可检查是否加载成功。

四、Netplan(Ubuntu 24.04 默认)

cat > /etc/netplan/01-netcfg.yaml <<EOF
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: false
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 192.168.1.1
EOF
netplan apply

Netplan 是 Canonical 推出的统一配置层,YAML 文件放在 /etc/netplan/ 下 [5]。renderer: networkd 表示由 systemd-networkd 实际执行;改成 NetworkManager 则走桌面环境。netplan apply 会生成后端配置并立即生效,比旧版 ifupdown 更适合自动化部署。

五、回滚、排错与局限性

排错速查

现象 原因 处理
ip: command not found 未装 iproute2 apt-get install iproute2
systemctl enable 报错 无 Install 段 确认 unit 文件里有 [Install] WantedBy=multi-user.target
netplan apply 无反应 YAML 缩进错误 用 netplan try 预演或 netplan generate --debug
地址加不上 与现有地址冲突 ip addr flush dev eth0 清空后重试
systemd-networkd 不接管 接口被 NetworkManager 抢占 在 .network 里加 Unmanaged=no 或改 renderer

回滚

  • systemd-networkd:systemctl disable systemd-networkd,删除 /etc/systemd/network/*.network,daemon-reload。
  • Netplan:删除对应 YAML,netplan apply,系统退回默认 DHCP(若存在)。
  • 临时配置:ip addr flush 或 ip link set down 即可恢复。

局限性

  • WSL2 的 eth0 由 WSL 本身管理,systemd-networkd 和 Netplan 通常不会接管;以下结论基于物理机/虚拟机实测逻辑,WSL 仅验证命令语法与 unit 启用流程。
  • 某些云镜像使用 cloud-init 或 ifupdown,与 Netplan/systemd-networkd 互斥,混用会导致网络异常。
  • 无线网卡(WPA)仍需 NetworkManager 或 wpa_supplicant,.network 文件不能直接配置 SSID/密码。

实测记录

  • 环境:WSL2 Ubuntu 24.04,内核 5.15。
  • ip link set up/down:对 dummy0 接口操作正常,状态从 DOWN 变为 UP。
  • ip addr add:为 dummy0 分配 192.168.99.1/24,ip addr show 可见。
  • systemd-networkd:systemctl enable 返回 enabled;创建 .network 文件 + daemon-reload + start 后,networkctl status 显示地址 192.168.99.10 已配置。
  • 清理:删除 .network、disable service、删除 dummy0 后,systemctl is-enabled 返回 disabled。
  • Netplan:netplan get 和 netplan generate 命令存在;未对真实网卡执行 netplan apply,避免断开 WSL 连接。

参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。