====== Configure Static IP Address on Ubuntu Server 22.04 ======
user@svr1:~$ ifconfig
eno1: flags=4163 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
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 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
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 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
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 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
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 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
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 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
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