¿Cómo añadir y configurar direcciones IPv4 e IPv6 adicionales en servidores Ubuntu 20.04 y 22.04?
La gestión de red en las versiones modernas de Ubuntu ha evolucionado. En Ubuntu 20.04 y 22.04, la configuración ya no reside en el clásico archivo /etc/network/interfaces, sino que se gestiona a través de Netplan. Si necesitas añadir IPs adicionales a tu Servidor Cloud o VPS en Arsys, esta guía técnica te mostrará cómo hacerlo paso a paso utilizando archivos YAML.
Requisitos previos a configurar tu red Ubuntu
Antes de modificar la configuración de red, asegúrate de cumplir con los siguientes puntos:
- Asignación en el Panel: Has reservado las IPs adicionales en tu Cloud Panel de Arsys.
- Acceso Root: Tienes acceso vía SSH con privilegios de superusuario.
- Datos anotados: Conoces tu IP principal, la nueva IP adicional y sus respectivas puertas de enlace (gateways).
Paso 1: Comprobar el uso de Netplan para la configuración de red
Para comprobar si tu servidor ya utiliza netplan para la configuración de la red, introduce el siguiente comando:
- Accede al directorio /etc/netplan.
[root@localhost ~]# cd /etc/netplan
- Comprueba si ya existe un archivo de configuración en este directorio. Para ello, introduce el siguiente comando:
[root@localhost ~]# ls
| Nota: Si el directorio no existe, tu sistema no utiliza Netplan. Si encuentras el archivo 00-Public_network.yaml, no lo renombres ni lo borres, ya que es esencial para la red de Arsys. |
Paso 2: Consultar la interfaz de red
Consulta el nombre del archivo de la interfaz de red. Para ello, introduce el siguiente comando:
[root@localhost ~]# ip addr
En este ejemplo, el nombre de la interfaz de red es ens192:
root@localhost:~# 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: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:50:56:08:a5:c6 brd ff:ff:ff:ff:ff:ff altname enp11s0 inet 217.160.141.60/32 metric 100 scope global dynamic ens192 valid_lft 21695sec preferred_lft 21695sec inet 82.165.254.101/32 scope global ens192 valid_lft forever preferred_lft forever inet6 2001:8d8:1801:5d2::2/64 scope global valid_lft forever preferred_lft forever inet6 2001:8d8:1801:5d2::1/64 scope global dynamic noprefixroute valid_lft 3443sec preferred_lft 3443sec inet6 fe80::250:56ff:fe08:a5c6/64 scope link valid_lft forever preferred_lft forever
Paso 3: Consultar servidor DNS por defecto
- Para consultar los servidores DNS utilizados, introduce los siguientes comandos:
[root@localhost ~]# curl https://169.254.169.254/latest/meta_data/dns/nameservers -Lv [root@localhost ~]# curl https://169.254.169.254/latest/meta_data/dns/nameservers6 -Lv
Los servidores DNS utilizados se muestran al final del mensaje.
Ejemplo:
[root@localhost ~]# curl https://169.254.169.254/latest/meta_data/dns/nameservers -Lv * Trying 169.254.169.254... * TCP_NODELAY set * Connected to 169.254.169.254 (169.254.169.254) port 80 (#0) > GET /latest/meta_data/dns/nameservers HTTP/1.1 > Host: 169.254.169.254 > User-Agent: curl/7.61.1 > Accept: */* > < HTTP/1.1 200 OK < Date: Thu, 08 Sep 2022 12:19:36 GMT < Server: Apache < Strict-Transport-Security: max-age=63072000; includeSubDomains < Vary: Accept-Encoding < Access-Control-Allow-Origin: * < Access-Control-Allow-Headers: X-TOKEN, X-HASH, X-MICROTIME, X-USER, Content-Type, X-API-TOKEN, Authorization < Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS < Access-Control-Expose-Headers: Error-Msg < Cache-control: no-cache, no-store, max-age=0 < Access-Control-Allow-Origin: * < Access-Control-Allow-Headers: X-TOKEN, X-HASH, X-MICROTIME, Content-Type, X-API-TOKEN, Authorization < Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS < Access-Control-Expose-Headers: Error-Msg < Transfer-Encoding: chunked < Content-Type: text/plain;charset=UTF-8 < 212.227.123.16,212.227.123.17 * Connection #0 to host 169.254.169.254 left intact
- Anota los servidores DNS. En el ejemplo anterior, los servidores DNS se muestran sobre la línea * Connection #0 to host 169.254.169.254 left intact.
Paso 4: Consultar puerta de enlace (gateway) para IPv4 e IPv6
- Para consultar la puerta de enlace predeterminada (defauult gateway) de la interfaz activa, introduce los siguientes comandos:
IPv4:
[root@localhost ~]# ip route show | grep 'default'
IPv6:
[root@localhost ~]# ip -6 route show | grep 'default'
- Anota las direcciones IP de las puertas de enlace (gateways). Estas aparecen directamente después de la parte de default via. Ejemplos:
Gateway IPv4:
root@localhost:~# ip route show | grep 'default' default via 10.255.255.1 dev ens192 proto static onlink default via 10.255.255.1 dev ens192 proto dhcp src 217.160.141.60 métrica 100
Gateway IPv6:
root@localhost:~# ip -6 route show | grep 'default' default via fe80::1 dev ens192 proto ra métrica 100 expires 3sec pref high default via fe80::1 dev ens192 proto static métrica 1024 pref medium
Paso 5: Añadir direcciones IPv4 e IPv6
- Comprueba si ya existe un archivo de configuración en este directorio. Para ello, introduce el siguiente comando:
[root@localhost ~]# ls /etc/netplan
- Si ya existe un archivo de configuración en este directorio, cámbiale el nombre. Para ello, introduce el siguiente comando y sustituye los marcadores de posición.
[root@localhost ~]# mv ANTIGUO_ARCHIVO.yaml ANTIGUO_ARCHIVO.yaml.old
| ¡Atención! Si el directorio contiene el archivo 00-Public_network.yaml, no le cambies el nombre, ya que este archivo es necesario para la red pública. |
- Crea el archivo /etc/netplan/01-netcfg.yaml con el editor nano. Para ello, introduce el siguiente comando:
[root@localhost ~]# nano etc/netplan/01-netcfg.yaml
- Añade la siguiente información:
network: version: 2 renderer: networkd ethernets: INTERFAZ DE RED: addresses: - DIRECCIÓN IPv4 PRINCIPAL/32 - DIRECCIÓN IPv4 ADICIONAL 1/32 - DIRECCIÓN IPv6 PRINCIPAL/64 - DIRECCIÓN IPv6 ADICIONAL 1/64 gateway6: GATEWAY PARA IPv6 nameservers: addresses: - DIRECCIÓN IP DEL SERVIDOR DE NOMBRES 1 - DIRECCIÓN IP DEL SERVIDOR DE NOMBRES 2 routes: - on-link: true to: default via: STANDARD-GATEWAY DE LA INTERFAZ ACTIVA version: 2 Ejemplo:network: ethernets: ens192: addresses: - 217.160.141.60/32 - 82.165.254.101/32 - 2001:8d8:1801:5d2::1/64 - 2001:8d8:1801:5d2::2/64 gateway6: fe80::1 nameservers: addresses: - 127.0.0.53 routes: - on-link: true to: default via: 10.255.255.1 version: 2
- Sustituye INTERFAZ DE RED por ens192. A continuación, introduce la dirección IPv4 principal, las direcciones IPv4 adicionales, la dirección IPv6 principal y las direcciones IPv6 adicionales.
| Atención – Las sangrías pertenecen a la sintaxis del formato YAML. Por lo tanto, asegúrate de que se visualizan correctamente. De lo contrario, la configuración no podrá realizarse correctamente y el servidor podría dejar de estar accesible. – Utiliza siempre la barra espaciadora para las sangrías. |
- Sustituye GATEWAY PARA IPv6 por la puerta de enlace (gateway) IPv6 anotada.
- Sustituye DIRECCIÓN IP DEL SERVIDOR DE NOMBRES 1 y DIRECCIÓN IP DEL SERVIDOR DE NOMBRES 2 por los servidores de nombres comprobados.
- Sustituye STANDARD-GATEWAY DE LA INTERFAZ ACTIVA por la puerta de enlace (gateway) IPv4 anotada.
- Para comprobar el archivo de configuración, introduce el siguiente comando:
root@localhost:~# netplan --debug apply
| Atención Los cambios que has realizado en el archivo /etc/netplan/01-netcfg.yaml se almacenan en el sistema y debes modificarlos si no son correctos. De lo contrario, el sistema operativo intentará cargarlos después de un reinicio. |
- Reinicia el servidor para que se apliquen los cambios. Para ello, introduce el siguiente comando:
systemctl reboot