VMware Ubuntu 静态 IP 配置手册 (NAT + cloud-init)
# 一、前置背景与现状诊断
VMware 网络环境:NAT 模式(VMnet8),网段 192.168.134.0/24,网关 192.168.134.2,DHCP 池 128-254。静态 IP 需避开 DHCP 池,选用安全区 3-127。
Ubuntu 当前状态:底层由 systemd-networkd 管理,网卡 ens33(驱动 e1000),当前通过 DHCP 获取了 192.168.134.128(位于 DHCP 池内),网关与 DNS 均指向 192.168.134.2。
关键发现:/etc/netplan/ 下配置文件为 50-cloud-init.yaml,说明网络由 cloud-init 接管(常见于 cloud image / 虚拟机模板)。
配置目标:将 IP 固定为安全区地址(如 192.168.134.10),且重启后不被 cloud-init 覆盖。
**为什么 cloud-init 会"抢走"网络管理权?**cloud-init 是云镜像/虚拟机模板中用于初始化系统的工具。安装程序在首次启动时通过它写入了网络配置(DHCP),之后每次启动它都会"重新宣誓主权",导致你手动改的静态 IP 被覆盖。我们需要让它"放手"。
# 二、静态 IP 配置思路骨架
- 确认接管方:判断 cloud-init 是否在管理网络(
cloud-init status)。 - 禁用 cloud-init 网络管理:写入
99-disable-network-config.cfg,让 Netplan 配置"归自己所有"。 - 选安全 IP:避开
.0(网络)、.2(网关)、.255(广播)、128~254(DHCP 池),选192.168.134.10。 - 改 Netplan 配置:编辑
50-cloud-init.yaml,关闭 DHCP,写死地址/网关/DNS。 - 应用生效:
netplan generate校验语法 →netplan try安全应用(远程连接必用)→ 或netplan apply立即生效。 - VMware 侧对齐:确认 NAT 子网
192.168.134.0、网关.2,静态 IP 落在安全区即不冲突。
# 三、静态 IP 配置操作手册
# 1. 规划静态参数
| 配置项 | 配置值 | 说明 |
|---|---|---|
| 网卡 | ens33 | VMware 中常见命名,可用 ip link 确认 |
| 静态 IP | 192.168.134.10/24 | 安全区,好记(可换 .11/.12,只要不在 128-254 内) |
| 网关 | 192.168.134.2 | VMware NAT 网关(不是 .1,.1 是仅主机模式的网关) |
| DNS | 114.114.114.114, 8.8.8.8 | 国内首选 114,备用 Google;也可保留 192.168.134.2 让网关转发 |
| 搜索域 | 不配置 | 新手可跳过,避免解析异常 |
如何确认你的网卡名?
ip link1看到
lo之外带state UP的那个就是,常见为ens33(VMware)或enp0s3(VirtualBox)。
# 2. 备份并删除安装器留下的网络配置
# 备份后删除
sudo cp /etc/cloud/cloud.cfg.d/90-installer-network.cfg /etc/cloud/cloud.cfg.d/90-installer-network.cfg.bak
sudo rm /etc/cloud/cloud.cfg.d/90-installer-network.cfg
2
3
90-installer-network.cfg就是安装程序留给 cloud-init 的"网络遗嘱",每次启动都让它重新 DHCP。删掉它 + 禁用文件双保险,你的静态 IP 就真正稳了。
# 3. 禁用 cloud-init 网络管理
# echo 'network: {config: disabled}' | sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg <<EOF
network: {config: disabled}
EOF
2
3
4
5
为什么需要这一步? 即使删除了
90-installer-network.cfg,cloud-init 仍可能从其他数据源(如 VMware guest info、metadata server)获取网络配置。这个文件明确告诉它:"网络配置交给我自己,你别管。"
# 4. 修改 Netplan 静态配置
sudo vim /etc/netplan/50-cloud-init.yaml
写入内容(YAML 缩进严格,冒号后空格):
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: false
addresses:
- 192.168.134.10/24
routes:
- to: default
via: 192.168.134.2
nameservers:
addresses:
- 114.114.114.114
- 8.8.8.8
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 5. 应用 Netplan 静态配置
I. 校验语法(有错误会直接提示,不报错才能继续)
sudo netplan generate
II. 安全应用(远程 SSH 连接必用!)
sudo netplan try
netplan try的工作机制: 它会应用配置并等待你 120 秒内确认。如果网络断了(SSH 掉线无法确认),它会自动回滚到上一版配置。这是远程操作时的"保命命令"。看到提示
Do you want to keep these settings?后,在终端输入yes或等待倒计时结束即可。
III. 如果你是 VMware 本地控制台操作(非 SSH),可直接 apply
sudo netplan apply
IV. 重启验证(最关键的一步:确认重启后 IP 不变、不被 cloud-init 覆盖)
sudo reboot
# 6. 验证 Netplan 静态配置
重启后重新登录,按以下顺序逐条验证。每一步成功再做下一步,方便定位问题:
I. 确认 IP 已变为静态地址
ip addr show ens33 # 应看到: inet 192.168.134.10/24
II. 确认默认路由指向网关
ip route # 应看到: default via 192.168.134.2
III. 测试网关连通性(网络层)
ping -c 3 192.168.134.2 # 能 ping 通说明:网卡→IP→路由 全部正确
IV. 测试外网 + DNS 解析(应用层)
ping -c 3 baidu.com # 能 ping 通说明:DNS 解析 + 网关 NAT 转发 全部正确