Adding public IPv4 and IPv6 addresses to a VPS, VPS+, or a migrated Cloud Server (Ubuntu 24.04 and Ubuntu 26.04)
Please use the “Print” function at the bottom of the page to create a PDF.
Valid for Linux VPS, migrated Cloud Servers and VPS+ running Ubuntu 24.04 or Ubuntu 26.04, managed in the Cloud Panel.
This article explains how to add additional public IPv4 and IPv6 addresses to a VPS, a migrated Cloud Server, or a VPS+ running Ubuntu 24.04 or Ubuntu 26.04. This is required if you want to assign two IPv4 addresses and at least one IPv6 address to the server. If only one IPv4 address and one or two IPv6 addresses are assigned to your server, these IP addresses are configured automatically in the operating system.
In these distributions, network configuration is performed exclusively using Netplan. Management is done through YAML files in the /etc/netplan/ directory.
Requirements
- You have assigned one or more additional public IPv4 addresses, and, if applicable, one or more IPv6 addresses to your server in the Cloud Panel.
- You have logged in to the server.
- You have made a note of the server’s IPv4 and IPv6 addresses.
Note
You can find instructions on how to establish an encrypted network connection to your server using your computer in the following articles:
Setting up an SSH connection to your Linux server from a Microsoft Windows computer
Setting up an SSH connection to your Linux server from a Linux computer
Detect network interface
Find out the name of the network interface. To do this, enter the following command:
[root@localhost ~]# ip addr
In this example, the name of the network interface is ens6:
[root@localhost ~]# /etc/netplan# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 02:01:e4:95:f5:d9 brd ff:ff:ff:ff:ff:ff
inet 195.20.234.94/32 scope global dynamic ens6
valid_lft 463sec preferred_lft 463sec
inet6 fe80::1:e4ff:fe95:f5d9/64 scope link
valid_lft forever preferred_lft forever
Make a note of the name of the interface configured for your primary IPv4 address.
Show default DNS servers
To view the DNS servers being used, enter the following command:
[root@localhost ~]# resolvectl --no-pager | grep Server
The DNS servers in use will then be displayed at the end of the output. Example:
[root@localhost ~]# resolvectl --no-pager |grep Server
Current DNS Server: 212.227.123.16
DNS Servers: 212.227.123.16 212.227.123.17Make a note of the DNS servers.
Show gateway for IPv4 and IPv6
To display the default gateway of the active interface, enter the following command:
IPv4:
[root@localhost ~]# ip route show | grep 'default'
IPv6:
[root@localhost ~]# ip -6 route show | grep 'default'
Make a note of the IP addresses of the gateways. These are listed immediately after the default via section. Example:
IPv4 gateway
[root@localhost ~]# ip route show | grep 'default'
default via 195.20.234.1 dev ens6 proto dhcp src 195.20.234.94 metric 100IPv6 gateway
[root@localhost ~]# ip -6 route show | grep 'default' default via fe80::1 dev ens6 proto ra metric 100 expires 4sec pref high
In this example, fe80::1 is the IPv6 gateway.
Add IPv4 and IPv6 addresses
Change to the /etc/netplan directory and identify the name of the configuration file.
[root@localhost ~]# cd /etc/netplan
[root@localhost ~]# ls /etc/netplanIf the file 00-Public_network.yaml is in the directory, do not rename it, as this file is required for the public network. If there is a configuration file with a different filename in this directory, rename it. To do this, enter the following command and replace the placeholders.
root@localhost ~]# mv OLD_CONFIGURATION_FILE.yaml OLD_CONFIGURATION_FILE.yaml.old
Example:
[root@localhost ~]# mv 50-cloud-init.yaml 50-cloud-init.yaml.old
Create the file /etc/netplan/01-netcfg.yaml using the vi editor. To do this, enter the following command:
[root@localhost ~]# vi /etc/netplan/01-netcfg.yaml
Note
The vi editor has an insert mode and a command mode. You can enter insert mode by pressing the [i] key. In this mode, the characters you type are inserted into the text immediately. To switch to command mode, press [ESC] afterwards. When you are in command mode, your keystrokes are interpreted as commands.
Please Note
Indentation is part of the YAML syntax. Therefore, make sure it is used correctly. Otherwise, the configuration may not be applied correctly and the server may no longer be reachable. Always use the space bar for indentation.
Insert the following information:
network:
version: 2
renderer: networkd
ethernets:
NETWORK_INTERFACE:
addresses:
- PRIMARY_IPV4_ADDRESS/32
- ADDITIONAL_IPV4_ADDRESS/32
- PRIMARY_IPV6_ADDRESS/64
- ADDITIONAL_IPV6_ADDRESS_1/64
nameservers:
addresses:
- IP_ADDRESS_OF_NAMESERVER_1
- IP_ADDRESS_OF_NAMESERVER_2
routes:
- on-link: true
to: default
via: DEFAULT_GATEWAY_OF_THE_ACTIVE_INTERFACEExample:
network:
version: 2
renderer: networkd
ethernets:
ens6:
addresses:
- 195.20.234.94/32
- 195.20.234.86/32
- 2a02:247a:21f:9c00::1/64
- 2a02:247a:21f:9c00::2/64
nameservers:
addresses:
- 212.227.123.16
- 212.227.123.17
routes:
- on-link: true
to: default
via: 195.20.234.1Replace the placeholder NETWORK_INTERFACE with the network interface you have identified. In this example, this is the network interface ens6.
Next, enter the primary IPv4 address and the secondary IPv4 address. To do this, replace the placeholders.
Enter the primary IPv6 address and the secondary IPv6 address. Replace the placeholders accordingly.
Replace the IP_ADDRESS_OF_NAMESERVER_1 and IP_ADDRESS_OF_NAMESERVER_2 placeholders with the DNS servers you identified.
Replace the DEFAULT_GATEWAY_OF_THE_ACTIVE_INTERFACE placeholder with the IPv4 gateway you identified.
To exit vi and save the file, enter the command :wq and then press the Enter key.
To change the permissions of the new configuration file so that it can only be read and modified by the root account, adapt the following command and then enter it:
root@localhost:~# sudo chmod 600 /etc/netplan/CONFIGURATION_FILE.yaml
Example:
root@localhost:~# sudo chmod 600 /etc/netplan/01-netcfg.yaml
To check the configuration file, enter the following command:
root@localhost:~# netplan --debug apply
Please Note
Any changes you make in the configuration file remain in place and must be corrected by you if they are incorrect. Otherwise, after a restart, the operating system will attempt to load them again.
Restart the server so that the changes take effect. To do this, enter the following command:
root@localhost:~# systemctl reboot
To check whether the additional IPv4 address has been configured correctly, enter the following command:
root@localhost:~# ip addr
Note
If the server is no longer accessible due to a configuration error, you can log in to the server via the remote console and correct the configuration. For further information, please see the following article: Using the remote console to access the server
Additional information
Further information on Netplan can be found in the following articles: