Configure Static IP Address on Ubuntu Server 22.04
user@svr1:~$ ifconfig eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.95 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::d6ae:52ff:fecd:3bf8 prefixlen 64 scopeid 0x20<link> ether d4:ae:52:cd:3b:f8 txqueuelen 1000 (Ethernet) RX packets 156399 bytes 144274804 (144.2 MB) RX errors 0 dropped 85 overruns 0 frame 0 TX packets 43997 bytes 7998011 (7.9 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 16 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 288 bytes 29450 (29.4 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 288 bytes 29450 (29.4 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 user@svr1:~$ cd /etc/netplan/ user@svr1:/etc/netplan$ ls -l total 4 -rw-r--r-- 1 root root 115 Jun 18 18:43 00-installer-config.yaml user@svr1:/etc/netplan$ vim 00-installer-config.yaml user@svr1:/etc/netplan$ ifconfig -a eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.95 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::d6ae:52ff:fecd:3bf8 prefixlen 64 scopeid 0x20<link> ether d4:ae:52:cd:3b:f8 txqueuelen 1000 (Ethernet) RX packets 157795 bytes 144372089 (144.3 MB) RX errors 0 dropped 85 overruns 0 frame 0 TX packets 44136 bytes 8018251 (8.0 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 16 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 288 bytes 29450 (29.4 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 288 bytes 29450 (29.4 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Let's switch to /etc/netplan subdirectory path and perform a list command to see what is stored in the subdirectory.
user@svr1:$ cd /etc/netplan/ user@svr1:/etc/netplan$ ls user@svr1:/etc/netplan$ 00-installer-config.yaml
Then, before we edit the network configuration file, let's make a backup of the '00-installer-config.yaml' file and call it '00-installer-config.yaml-bak' just in case we need to restore it in the future to obtain a dynamic IP lease.
user@svr1:/etc/netplan$ cp -v 00-installer-config.yaml 00-installer-config.bak '00-installer-config.yaml' -> '00-installer-config.bak' cp: cannot create regular file '00-installer-config.bak': Permission denied user@svr1:/etc/netplan$ sudo cp -v 00-installer-config.yaml 00-installer-config.yaml-bak [sudo] password for user: '00-installer-config.yaml' -> '00-installer-config.yaml-bak' user@svr1:/etc/netplan$ ls 00-installer-config.yaml 00-installer-config.yaml-bak user@svr1:/etc/netplan$ sudo vim 00-installer-config.yaml
Here is the original dhcp configuration for eno1.
# This is the network config written by 'subiquity' network: ethernets: eno1: dhcp4: true version: 2
Using Vim editor, here is how to configure the static IP.
$ sudo vi 00-installer-config.yaml
While within Vim, to the preceding lines of the original configuration, add an IP address, a net mask, and a default gateway. Replace the samples below with the appropriate static values (and you can use your own nameservers rather than Google's) as follows:
network: ethernets: en01: addresses: - 192.168.1.95/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: [8.8.8.8,8.8.4.4] dhcp4: no version: 2
Another author instead inserts the following content which varies only by two lines (renderer: networkd) and (nameservers):
$ sudo vi 00-installer-config.yaml # This is the network config written by 'subiquity' network: renderer: networkd ethernets: ens33: addresses: - 192.168.1.95/24 nameservers: addresses: [4.2.2.2, 8.8.8.8] routes: - to: default via: 192.168.1.1 version: 2
user@svr1:/etc/netplan$ vim 00-installer-config.yaml user@svr1:/etc/netplan$ user@svr1:/etc/netplan$ ls 00-installer-config.yaml 00-installer-config.yaml-bak
After Saving the new static configuration using Vim (:w :qs), then apply the changes to netplan as follows:
user@svr1:/etc/netplan$ sudo netplan apply [sudo] password for user: Failed to reload network settings: No such file or directory Falling back to a hard restart of systemd-networkd.service user@svr1:/etc/netplan$ sudo netplan apply
Notice that there was an error (failed to load, then the system auto-performed a hard restart of systemd-neworkd.service). This may be the result of using the first example above rather than the second (containing the line 'renderer: networkd'). A re-run of 'sudo netplan apply' like above, there is silent application. Maybe insert the renderer line and re-apply to netplan. See if that is silently applied as well.
Now test the static configuration by running ping, or whatever else may be useful.
user@svr1:/etc/netplan$ ping -c 5 www.google.com PING www.google.com (142.250.217.228) 56(84) bytes of data. 64 bytes from mia07s62-in-f4.1e100.net (142.250.217.228): icmp_seq=1 ttl=117 time=11.8 ms 64 bytes from mia07s62-in-f4.1e100.net (142.250.217.228): icmp_seq=2 ttl=117 time=13.2 ms 64 bytes from mia07s62-in-f4.1e100.net (142.250.217.228): icmp_seq=3 ttl=117 time=11.4 ms 64 bytes from mia07s62-in-f4.1e100.net (142.250.217.228): icmp_seq=4 ttl=117 time=12.2 ms 64 bytes from mia07s62-in-f4.1e100.net (142.250.217.228): icmp_seq=5 ttl=117 time=12.9 ms --- www.google.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 11.387/12.302/13.216/0.674 ms user@svr1:/etc/netplan$
Run ifconfig:
$ ifconfig eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.95 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::d6ae:52ff:fecd:3bf8 prefixlen 64 scopeid 0x20<link> ether d4:ae:52:cd:3b:f8 txqueuelen 1000 (Ethernet) RX packets 183111 bytes 149312474 (149.3 MB) RX errors 0 dropped 88 overruns 0 frame 0 TX packets 47132 bytes 8346015 (8.3 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 16 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 374 bytes 38261 (38.2 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 374 bytes 38261 (38.2 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0