¿Cómo añadir y configurar direcciones IPv4 e IPv6 adicionales en servidores Ubuntu 20.04 y 22.04?

6min

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.

Índice

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
Manuel León

Productos relacionados: