Debian 12 配静态 IP 有两套路:官方 ISO 装的机器走 /etc/network/interfaces,云镜像走 netplan。先判断这台归谁管,再动手——两套同时写一张网卡,是把自己锁在门外最快的方式。🖧
一、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/nullls /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/interfacesCODE
# 回环口,别动
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.0DNS 单独写文件:
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.yamlYAML
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 条建议 🔧
- 改前必备份,一条
cp的事,机房跑一趟成本远高于此。 - 远程操作一律带回滚:netplan 用
netplan try,ifupdown 用at定时还原。 - 一台机器只留一套配置源:决定用 netplan 就把 interfaces 里非 lo 的段落注释掉,并
systemctl disable --now networking。 - 改完四件套验证:
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 再通域名- 选型:物理机、单机现场维护 → interfaces 够用且直观;云主机、批量交付、要做桥接/VLAN → netplan。
- 网卡名别照抄:
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 反复跳、路由时有时无。留一套,另一套清干净。

💬 评论 (0)
还没有评论,来抢沙发吧。