跳转至

06 - 网络配置(ifupdown / systemd-networkd / Netplan)

前提条件

  • 已完成 Debian 12 Bookworm 最小化安装(主机名 linuxdc,IP 192.168.1.100/24
  • 系统已升级、apt 源优化、时间同步完成
  • 以 root 身份登录,或 ops 用户执行 sudo -i 切换至 root 环境
  • 虚拟机环境:VMware Workstation Pro,网络适配器为桥接(Bridged)或 NAT
  • 当前 IP 仍为安装时手动设置的 192.168.1.100/24(在 /etc/network/interfaces 中)

全局网络参数

参数
接口名 ens33
IP / 前缀 192.168.1.100/24
网关 192.168.1.1
DNS 8.8.8.88.8.4.4

详细步骤

Debian 12 默认使用 ifupdown/etc/network/interfaces),现代生产环境推荐迁移至 systemd-networkd。本章对比三种方案,以 systemd-networkd 为主要推荐方式。

1. 当前状态检查

ip addr show
cat /etc/network/interfaces
systemctl status networking

2. 方案一:继续使用经典 ifupdown(兼容旧习惯,最简单)

编辑主配置文件:

vim /etc/network/interfaces

推荐生产配置示例:

# 回环接口
auto lo
iface lo inet loopback

# 主网卡(根据实际情况替换 ens33 / enp0s3)
auto ens33
iface ens33 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4

应用配置:

ifdown ens33 --force && ifup ens33
# 或重启网络服务
systemctl restart networking

注意

ifdown ens33 会断开当前 SSH 连接,建议先在本地控制台操作,或使用 ip addr add / del 手动切换。

检查点

ip -br addr show ens33   # 显示 192.168.1.100/24
ping -c 4 8.8.8.8        # 0% packet loss

3. 方案二:迁移到 systemd-networkd(推荐生产方式)

停用 ifupdown 管理的网络服务:

systemctl stop networking
systemctl disable networking

启用 systemd-networkd 和 systemd-resolved:

systemctl enable --now systemd-networkd
systemctl enable --now systemd-resolved

创建网络配置文件:

mkdir -p /etc/systemd/network
vim /etc/systemd/network/10-static-ens33.network

文件内容:

[Match]
Name=ens33

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
DNS=8.8.4.4

[Link]
RequiredForOnline=routable

配置 DNS 解析(将 /etc/resolv.conf 指向 systemd-resolved):

ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

应用并验证:

systemctl restart systemd-networkd
networkctl status
ip -br addr show
resolvectl status

检查点

  • networkctl status ens33 显示 State: routable
  • resolvectl status 显示 DNS 为 8.8.8.88.8.4.4
  • ping -c 4 8.8.8.8 正常通信

4. 方案三:使用 Netplan(可选,偏 Ubuntu 风格)

安装 Netplan:

apt install -y netplan.io

创建配置文件:

vim /etc/netplan/01-netcfg.yaml

内容示例:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      addresses: [192.168.1.100/24]
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

YAML 缩进

YAML 对缩进敏感,必须使用空格(不可用 Tab),建议用 vim 编辑(已在 .vimrc 中设置 expandtab)。

应用配置:

netplan generate
netplan apply
netplan status

检查点

netplan status 显示 ens33 状态为 online,IP 为 192.168.1.100/24

5. 最终验证(所有方案通用)

ip -br addr show
ip route show
ping -c 4 8.8.8.8
ping -c 4 www.baidu.com
resolvectl query www.baidu.com

实践任务

  1. 检查当前网络配置使用哪种方式(ifupdown / systemd-networkd / netplan)
  2. 将网络配置迁移到 systemd-networkd,设置静态 IP 192.168.1.100/24,DNS 8.8.8.88.8.4.4
  3. 重启网络服务后,用 networkctl statusresolvectl status 验证
  4. (可选)尝试 Netplan 配置并对比使用感受

自测问题

1. Debian 12 默认使用哪种网络管理方式?

Debian 12 默认使用 ifupdown,配置文件为 /etc/network/interfaces,由 networking.service 管理。这是 Debian 历史上的传统网络管理方式,简单可靠,但不支持网络热插拔和动态配置。NetworkManager 在桌面版中默认安装,服务器版不安装。

2. systemd-networkd 和 ifupdown 的主要区别是什么?

ifupdown 是静态配置工具,通过 shell 脚本执行,功能有限,不支持网络状态事件响应。systemd-networkd 是 systemd 生态的原生网络管理守护进程,支持热插拔、网络状态跟踪(networkctl)、与 systemd-resolved 深度集成、配置文件语法更规范,适合现代容器化和云原生环境。在 Debian 服务器上,systemd-networkd 是更现代的选择,维护成本更低。

3. 如何让 systemd-resolved 接管 DNS 解析(/etc/resolv.conf 指向哪里)?

ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

/run/systemd/resolve/stub-resolv.conf 包含 127.0.0.53,所有 DNS 查询通过 systemd-resolved 的本地桩解析器(stub resolver)处理,再转发至配置的上游 DNS 服务器,支持 DNS 缓存、DNSSEC 等特性。

4. 如果迁移后网络不通,最常见的三种排查方向是什么?

  • 配置文件语法错误journalctl -u systemd-networkd -n 50 查看错误日志,常见问题包括 .network 文件中 [Match]Name= 接口名与实际不符(用 ip link show 确认接口名)
  • DNS 解析失败但网络连通ping 8.8.8.8 成功但 ping www.baidu.com 失败,说明 DNS 配置有问题。检查 /etc/resolv.conf 内容,确认 systemd-resolved 服务已启动,或直接检查 resolvectl status
  • 旧配置未清除:ifupdown 和 systemd-networkd 同时管理同一接口会冲突。确认已执行 systemctl disable networking,并清空 /etc/network/interfaces 中对应接口的配置

总结

本章完成了网络配置的现代化迁移。生产环境强烈推荐 systemd-networkd(轻量、可靠、与 systemd 集成完善)。ifupdown 仍可继续使用(简单兼容),Netplan 适合有 Ubuntu 背景的团队。后续所有章节假设网络已稳定在 192.168.1.100/24,DNS 为 8.8.8.88.8.4.4