static IPv4 on VMware Ubuntu VMs using Netplan.
Uses modern routes: syntax (no deprecated gateway4) and prevents cloud-init from reverting your config.
sudo netplan try so it auto-rolls back if something goes wrong.
Make sure your NIC is really ens33 (VMware often uses this).
ip a
This stops cloud-init from overwriting your static IP on reboot.
sudo mkdir -p /etc/cloud/cloud.cfg.d
sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
network: {config: disabled}
Back up anything created by cloud-init (commonly 50-cloud-init.yaml).
sudo mkdir -p /root/netplan-backup
sudo mv /etc/netplan/50-cloud-init.yaml* /root/netplan-backup/ 2>/dev/null || true
Create one authoritative config file for VMware.
sudo nano /etc/netplan/99-netcfg-vmware.yaml
Change ens33, IP, gateway, and DNS as needed. Use 2-space indentation (no tabs).
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses:
- 10.10.1.70/24
routes:
- to: default
via: 10.10.1.1
nameservers:
addresses:
- 10.10.1.2
- 10.10.1.3
ens160 or ens34),
update the YAML key under ethernets: to match ip a.
No output is good; errors usually mean YAML indentation issues.
sudo netplan generate
Accept changes by pressing ENTER when prompted.
sudo netplan try
sudo netplan apply
ip a
ip route
resolvectl status
ping -c 3 10.10.1.1
ping -c 3 google.com
Prevents accidental edits to the netplan file.
sudo chmod 600 /etc/netplan/99-netcfg-vmware.yaml
netplan get
networkctl status ens33
journalctl -u systemd-networkd -n 50 --no-pager
journalctl -u systemd-resolved -n 50 --no-pager