Netplan Basics¶
Configuration Files¶
Location¶
Netplan configuration files are stored in:
/etc/netplan/
├── 00-installer-config.yaml # Created by Ubuntu installer
├── 01-netcfg.yaml # Custom configuration
└── 99-custom.yaml # Override file
Processing Order¶
Files are processed in lexicographical order: - 00-* files process first - 99-* files process last - Later files can override earlier settings
Naming Convention¶
/etc/netplan/
├── 00-installer-config.yaml # Base from installer
├── 50-cloud-init.yaml # Cloud-init generated
├── 60-bridge.yaml # Custom bridge config
└── 90-local.yaml # Local overrides
Basic Structure¶
Minimal Configuration¶
Structure Breakdown¶
network: # Root key (required)
version: 2 # Schema version (required)
renderer: networkd # Backend (optional, has default)
ethernets: # Ethernet devices
eth0: # Interface name or match pattern
dhcp4: true # Configuration options
bridges: # Bridge devices
br0:
interfaces: [eth0]
bonds: # Bond devices
bond0:
interfaces: [eth0, eth1]
vlans: # VLAN devices
vlan100:
id: 100
link: eth0
wifis: # Wireless devices
wlan0:
access-points:
"MyNetwork":
password: "secret"
Commands¶
netplan generate¶
Generates backend configuration without applying:
sudo netplan generate
# Files created in:
# /run/systemd/network/ (for networkd)
# /run/NetworkManager/ (for NetworkManager)
netplan apply¶
Applies configuration immediately:
Remote Access Risk
netplan apply can disconnect you if configuration is wrong. Use netplan try for remote administration.
netplan try¶
Applies configuration with automatic rollback:
Press ENTER to confirm changes. If you don't (or can't because you lost connectivity), configuration reverts automatically.
netplan get¶
Show current configuration:
# All configuration
sudo netplan get
# Specific interface
sudo netplan get ethernets.eth0
# Output as YAML
sudo netplan get --root-dir=/
netplan set¶
Modify configuration from command line:
# Set DHCP
sudo netplan set ethernets.eth0.dhcp4=true
# Set static IP
sudo netplan set ethernets.eth0.addresses='[192.168.1.100/24]'
# Then apply
sudo netplan apply
netplan status¶
Show current network status (Ubuntu 23.04+):
netplan info¶
Show Netplan version and features:
Interface Identification¶
By Name¶
Direct interface name:
By Match¶
Match multiple interfaces:
Match Options¶
ethernets:
matched:
match:
name: "enp*" # Glob pattern
macaddress: "aa:bb:cc:dd:ee:ff"
driver: "virtio*"
set-name: eth0 # Rename matched interface
Common Interface Names¶
Predictable Names (Default)¶
| Pattern | Meaning |
|---|---|
enp5s0 | Ethernet, PCI bus 5, slot 0 |
ens3 | Ethernet, slot 3 |
eno1 | Onboard Ethernet 1 |
enx... | Ethernet by MAC address |
wlp2s0 | Wireless, PCI bus 2, slot 0 |
Finding Your Interface¶
# List all interfaces
ip link show
# Show detailed info
networkctl list
# Show status
networkctl status enp5s0
Configuration Validation¶
Syntax Check¶
Common Errors¶
Invalid YAML:
# WRONG - tabs instead of spaces
network:
version: 2 # Tab character!
# CORRECT - spaces only
network:
version: 2 # Two spaces
Missing Required Fields:
# WRONG - missing version
network:
ethernets:
eth0:
dhcp4: true
# CORRECT
network:
version: 2
ethernets:
eth0:
dhcp4: true
Invalid IP Format:
Backend Files¶
systemd-networkd Files¶
Generated in /run/systemd/network/:
ls -la /run/systemd/network/
# Example files:
# 10-netplan-eth0.network
# 10-netplan-br0.netdev
# 10-netplan-br0.network
NetworkManager Files¶
Generated in /run/NetworkManager/system-connections/:
Persistence¶
Configuration Persistence¶
- YAML files in
/etc/netplan/persist across reboots - Generated files in
/run/are recreated at boot
When Changes Take Effect¶
| Action | Effect |
|---|---|
| Edit YAML | No immediate effect |
netplan generate | Creates backend files |
netplan apply | Applies to running system |
| Reboot | Re-generates and applies |