← 返回首页

Debian 12 静态 IP 两套路:interfaces 与 netplan 🖧

Debian 12 配静态 IP 有两套路:官方 ISO 装的机器走 /etc/network/interfaces,云镜像走 netplan。先判断这台归谁管,再动手——两套同时写一张网卡,是把自己锁在门外最快的方式。🖧

Debian 12 网络配置

一、30 秒判断这台机器归谁管

BASH
ip -br addr                       # 看网卡名和当前 IP
ls /etc/netplan/                  # 有 .yaml → netplan 派
grep -vE '^\s*(#|$)' /etc/network/interfaces   # 有 iface 段 → ifupdown 派
systemctl is-enabled systemd-networkd networking 2>/dev/null
  • ls /etc/netplan/ 有 yaml,且 systemd-networkd 是 enabled → netplan 版
  • interfaces 里除 lo 之外还有 iface 段 → 普通安装版
  • 两个都中(装了 netplan.io 但没迁干净)→ 立刻二选一,别让两个后台抢同一张网卡

二、普通安装版:改 /etc/network/interfaces

第 1 步 备份

BASH
sudo cp /etc/network/interfaces /etc/network/interfaces.bak

第 2 步 写配置(网卡名按 ip -br addr 的实际结果改)

BASH
sudo nano /etc/network/interfaces
CODE
# 回环口,别动
auto lo
iface lo inet loopback

# 主网卡静态地址
allow-hotplug enp1s0
iface enp1s0 inet static
    address 192.168.11.20/24
    gateway 192.168.11.1
    # 掩码也可以写成老式两行:
    # address 192.168.11.20
    # netmask 255.255.255.0

DNS 单独写文件:

BASH
echo -e "nameserver 223.5.5.5\nnameserver 114.114.114.114" | sudo tee /etc/resolv.conf

第 3 步 生效

BASH
sudo systemctl restart networking        # 整机重起网络
# 只动单卡(SSH 上时更稳):
sudo ifdown enp1s0 && sudo ifup enp1s0

远程改 IP 的保命招——先挂一个 3 分钟定时回滚,确认能连上再取消:

BASH
sudo apt install -y at
echo "cp /etc/network/interfaces.bak /etc/network/interfaces && systemctl restart networking" \
  | sudo at now + 3 minutes
# 新 IP 确认能连上后:sudo atrm <任务号>

三、netplan 版:改 /etc/netplan/*.yaml

普通 ISO 装的机器默认没有 netplan,先装:

BASH
sudo apt update && sudo apt install -y netplan.io systemd-resolved
sudo systemctl unmask systemd-networkd systemd-resolved
sudo systemctl enable --now systemd-networkd systemd-resolved

从 interfaces 迁过去(自动生成 yaml,省得手敲):

BASH
ENABLE_TEST_COMMANDS=1 sudo netplan migrate   # 生成 /etc/netplan/*.yaml

写配置(文件名前缀数字越小越先加载,建议 01-):

BASH
sudo nano /etc/netplan/01-static.yaml
YAML
network:
  version: 2
  renderer: networkd            # 桌面版可写 NetworkManager
  ethernets:
    enp1s0:
      dhcp4: no
      addresses:
        - 192.168.11.20/24      # 必须带 CIDR 掩码
      routes:
        - to: default
          via: 192.168.11.1     # 网关,gateway4 已废弃
      nameservers:
        addresses: [223.5.5.5, 114.114.114.114]
        search: [example.com]

生效——优先用 try,它带自动回滚:

BASH
sudo chmod 600 /etc/netplan/01-static.yaml
sudo netplan try       # 120 秒内回车确认;不确认自动回滚,SSH 上强烈推荐
sudo netplan apply     # 确认无误后正式应用

四、两者到底差在哪

CODE
+------------+--------------------------------+------------------------------+
| 对比项     | 普通安装版 ifupdown            | netplan 版                   |
+------------+--------------------------------+------------------------------+
| 配置文件   | /etc/network/interfaces        | /etc/netplan/*.yaml          |
+------------+--------------------------------+------------------------------+
| 写法       | 段落式,空格缩进随意           | YAML,缩进错一个就失败       |
+------------+--------------------------------+------------------------------+
| 后台服务   | networking.service(ifupdown) | systemd-networkd / NetworkMa |
|            |                                | nager                        |
+------------+--------------------------------+------------------------------+
| 生效命令   | systemctl restart networking   | netplan try / netplan apply  |
+------------+--------------------------------+------------------------------+
| 默认场景   | 官方 ISO 装机默认              | Debian 12 云镜像、cloud-init |
+------------+--------------------------------+------------------------------+
| DNS 落点   | 直写 /etc/resolv.conf          | 交给 systemd-resolved        |
+------------+--------------------------------+------------------------------+
| 写错保护   | 无,改错就断网                 | netplan try 超时自动回滚     |
+------------+--------------------------------+------------------------------+
| 复杂拓扑   | 桥接/VLAN 语法冗长             | 桥接、bond、VLAN 声明式,直  |
|            |                                | 观                           |
+------------+--------------------------------+------------------------------+
| 适合谁     | 物理机、单机现场维护           | 云主机、批量装机、自动化     |
+------------+--------------------------------+------------------------------+

一句话总结:interfaces 是直接下命令给网卡,netplan 是写「期望状态」再翻译成后台配置。netplan 自己不配网,它只生成 systemd-networkd 或 NetworkManager 的配置——这也是为什么它更适合云镜像和批量装机(cloud-init 直接塞一份 yaml 就行)。

五、维护现场 6 条建议 🔧

  1. 改前必备份,一条 cp 的事,机房跑一趟成本远高于此。
  2. 远程操作一律带回滚:netplan 用 netplan try,ifupdown 用 at 定时还原。
  3. 一台机器只留一套配置源:决定用 netplan 就把 interfaces 里非 lo 的段落注释掉,并 systemctl disable --now networking。
  4. 改完四件套验证:
BASH
ip -br addr show enp1s0      # 地址对不对
ip route                     # 默认路由在不在
resolvectl status            # netplan 版看 DNS;interfaces 版看 cat /etc/resolv.conf
ping -c 2 223.5.5.5 && ping -c 2 www.baidu.com   # 先通 IP 再通域名
  1. 选型:物理机、单机现场维护 → interfaces 够用且直观;云主机、批量交付、要做桥接/VLAN → netplan。
  2. 网卡名别照抄:enp1s0、ens18、eth0 都有可能,先 ip -br link 确认;想退回 eth0 传统命名就在 GRUB 加 net.ifnames=0 再 update-grub。

六、三个常见坑 ⚠️

  • gateway4/gateway6 已废弃,netplan 报 deprecation 就换成 routes: - to: default via:。
  • netplan try 报 Cannot call Open vSwitch: ovsdb-server.service is not running(Debian 12 已知问题):装 sudo apt install -y openvswitch-switch,或者直接用 netplan apply 忽略该警告。
  • 装了 netplan.io 但 interfaces 还在:两个后台会抢同一张网卡,表现为 IP 反复跳、路由时有时无。留一套,另一套清干净。
静态 IP 本身不难,难的是改的时候别把自己关在门外。备份 + 回滚 + 四件套验证,这三步走完,机房的活就是三分钟的事。👍

💬 评论 (0)

今日还可评论 3 条

还没有评论,来抢沙发吧。