跳到主要内容

静态 IP 与 Netplan 配置

背景说明见博客:新装 Ubuntu 服务器后的运维清单

Ubuntu 云镜像 / 虚拟机默认由 cloud-init 管理网络。仅编辑 /etc/netplan/50-cloud-init.yamlnetplan apply,重启后配置可能被 cloud-init 还原为 DHCP

文件头部注释已说明:

# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot.

1. 禁用 cloud-init 网络管理(必做)

创建配置文件,禁止 cloud-init 在重启时覆盖 netplan:

sudo vim /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

写入:

network: {config: disabled}

2. 配置静态 IP

查看网卡名(常见为 ens18eth0 等):

ip link show
ls /etc/netplan/

编辑 netplan 配置(可直接改 50-cloud-init.yaml,或新建如 01-static.yaml):

sudo vim /etc/netplan/50-cloud-init.yaml

示例(请按实际环境替换 IP、网关、DNS、网卡名):

network:
ethernets:
ens18:
dhcp4: false
addresses:
- 192.168.1.183/24
routes:
- to: default
via: 192.168.1.187
nameservers:
addresses: [192.168.1.187]
version: 2
字段说明
ens18网卡接口名,以 ip link 为准
addresses静态 IP 与掩码(CIDR)
routes.via默认网关
nameservers.addressesDNS 服务器

3. 应用并验证

sudo netplan apply
ip addr show ens18
ip route show default

确认 IP、网关正确后再重启验证:

sudo reboot

重启后再次检查 IP,应仍为静态地址而非 DHCP 分配。

注意

远程 SSH 改 IP 前,请确保新 IP 可达,或保留控制台(Proxmox / 云厂商 VNC)访问,避免改错网段后失联。

与 SSH 踩坑的共性

cloud-init 在云镜像上会同时影响 SSH网络 配置:

场景cloud-init 覆盖位置解决方式
SSH 密码仍可登录/etc/ssh/sshd_config.d/50-cloud-init.conf改该文件或禁用相关 cloud-init 模块
静态 IP 重启变 DHCP/etc/netplan/50-cloud-init.yaml禁用 cloud-init 网络:99-disable-network-config.cfg