¿Cómo puedo asignar a la instancia de EC2 un servidor DNS estático que persista durante el reinicio?

8 minutos de lectura
0

Quiero configurar una instancia de Amazon Elastic Compute Cloud (Amazon EC2) que tenga un servidor DNS estático que persista durante el reinicio.

Breve descripción

De forma predeterminada, las instancias de Amazon EC2 que están asociadas a Amazon Virtual Private Cloud (Amazon VPC) solicitan una dirección de servidor DNS en el startup. El protocolo de configuración dinámica de host (DHCP) envía la solicitud. La respuesta DHCP devuelve las direcciones del servidor DNS que están escritas en el archivo local /etc/resolv.conf.

Al reiniciar la instancia, pierde las modificaciones manuales en el archivo resolv.conf que contiene direcciones de servidor DNS personalizadas. Para mantener el servidor DNS estático al reiniciar la instancia, complete uno de los siguientes procedimientos según su distribución de Linux.

Resolución

Importante: Antes de cambiar la instancia, use una imagen de máquina de Amazon (AMI) para crear una copia de seguridad. O bien, utilice una instantánea de Amazon Elastic Block Store (Amazon EBS) para crear una copia de seguridad. Cuando cambie las configuraciones de red de una instancia, es posible que la instancia se convierta en inalcanzable.

Amazon Linux 2023

Amazon Linux 2023 utiliza systemd-resolved. Para obtener más información, consulte systemd-resolved en el sitio web de Archlinux.

Configuración del solucionador

Edite el archivo /etc/systemd/resolved.conf y cambie el DNS y las opciones de dominio.

Archivo configuración de ejemplo:

# /etc/systemd/resolved.conf

[Resolve]
DNS=8.8.8.8
Domains=~.

Como alternativa, cree un drop in. Por ejemplo, utilice el archivo /etc/systemd/resolved.conf.d/dns_servers.conf.

Archivo configuración de ejemplo:

#/etc/systemd/resolved.conf.d/dns_servers.conf

[Resolve]
DNS=8.8.8.8 8.8.4.4
Domains=~.

**Nota:**Si no configura la opción Domains=~., systemd-resolved podría usar los servidores DNS por enlace establecidos en la configuración por enlace. La opción Domains=~. no afecta a las consultas de nombres de dominio que coincidan con los dominios de búsqueda más específicos que se indican en las configuraciones por enlace. Cuando los nombres de dominio se resuelven, utilizan sus respectivos servidores DNS por enlace.

Modificación de la ubicación a la que apunta /etc/resolv.conf

De forma predeterminada, /etc/resolv.conf apunta al solucionador de código auxiliar de localhost. Para cambiar el solucionador, vuelva a crear el archivo con un contenido diferente o apunte a otro lugar que no sea el solucionador de código auxiliar de localhost. Por ejemplo, puede apuntar a /run/systemd/resolve/resolv.conf, que contiene una lista simplificada de los servidores que systemd-resolved usa.

Para probar la configuración, ejecute el comando resolvectl status y utilice resolvectl query amazonaws.com. A continuación, revise el resultado.

Amazon Linux o Amazon Linux 2

Utilice una de las siguientes opciones para configurar la instancia. Si aplica ambas opciones, tendrán prioridad los servidores DNS que están especificados en el archivo ifcfg-eth0.

Para que funcione cualquiera de las opciones, debe definir el valor del parámetro PEERDNS del archivo ifcfg-eth0 como yes. Al definir el parámetro PEERDNS en no, se ignorarán los servidores DNS que se especifican en los archivos ifcfg-* o que proporciona DHCP.

Opción 1

Siga estos pasos:

  1. Edite o cree el archivo /etc/dhcp/dhclient.conf.
    Nota: Debe tener permisos de usuario raíz para editar este archivo. Utilice o bien sudo -i para convertirse en el usuario raíz o bien utilice sudo para implementar todos los comandos.
  2. Añada el comando supersede al archivo para anular los servidores de nombres de dominio. En el siguiente comando de ejemplo, sustituya xxx.xxx.xxx.xxx por la dirección IP del servidor o servidores DNS que desee que utilice la instancia:
    supersede domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;
    Tras la modificación anterior, el archivo resolv.conf se actualiza al reiniciar la instancia y pasa a incluir únicamente los servidores DNS que especificó en el archivo dhclient.
  3. Defina el parámetro PEERDNS como yes en el archivo de configuración por interfaz (/etc/sysconfig/network-scripts/ifcfg-*).
  4. Reinicie la instancia de EC2.

Opción 2

Siga estos pasos:

  1. Para anular los valores del servidor DNS en el archivo /etc/dhcp/dhclient.conf, especifique los servidores DNS personalizados en los archivos de configuración por interfaz.
    Por ejemplo, el siguiente archivo muestra el archivo /etc/sysconfig/network-scripts/ifcfg-eth0 de una instancia de Amazon Linux que se ha modificado para incluir dos servidores DNS personalizados:

    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes
    TYPE=Ethernet
    USERCTL=yes
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    RES_OPTIONS="timeout:2 attempts:5"
    DHCP_ARP_CHECK=no
    MTU="9001"
    DNS1=8.8.8.8
    DNS2=8.8.4.4
  2. Defina el parámetro PEERDNS como yes en el archivo de configuración por interfaz (/etc/sysconfig/network-scripts/ifcfg-*).

Ubuntu 16.04

Siga estos pasos:

  1. Edite o cree el archivo /etc/dhcp/dhclient.conf.
    Nota: Debe tener permisos de usuario raíz para editar este archivo. Utilice o bien sudo -i para convertirse en el usuario raíz o bien utilice sudo para implementar todos los comandos.
  2. Añada el comando supersede al archivo para anular los servidores de nombres de dominio. En el siguiente comando de ejemplo, sustituya xxx.xxx.xxx.xxx por la dirección IP del servidor o servidores DNS que desee que utilice la instancia:
    supersede domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;
    Tras esta modificación, el archivo resolv.conf se actualiza al reiniciar la instancia, de modo que solo incluya los servidores DNS que especificó en el archivo dhclient.
  3. Reinicie la instancia.

Ubuntu 18.04

En Ubuntu 18.04, el paquete netplan.io gestiona la configuración de la interfaz de red, mientras que el servicio systemd-resolved utiliza un solucionador de código auxiliar para gestionar las consultas de DNS. La dirección IP del solucionador de código auxiliar se encuentra en /etc/resolv.conf.

A su vez, el archivo /etc/resolv.conf es un enlace simbólico al archivo /run/systemd/resolve/stub-resolv.conf. Si se cumple una de las siguientes condiciones en el archivo /etc/resolv.conf, es posible que la instrucción supersed en /etc/dhcp/dhclient.conf no funcione como se esperaba:

  • El archivo no es un enlace simbólico en su instancia.
  • El archivo es un enlace simbólico que apunta a un archivo diferente. Por ejemplo, el archivo apunta a /run/systemd/resolve/resolv.conf.

Para anular los valores del servidor DNS, siga estos pasos:

  1. Netplan almacena los archivos de configuración en el directorio /etc/netplan. Cree un archivo denominado /etc/netplan/99-custom-dns.yaml y, a continuación, introduzca las siguientes líneas en el archivo. Sustituya las direcciones IP del servidor DNS de ejemplo por sus direcciones IP:
    cat << 'EOF' | sudo tee /etc/netplan/99-custom-dns.yaml
    network:
      version: 2
      ethernets:
        ens5:
          nameservers:
            addresses: [1.1 .1 .1, 1.0 .0 .1]
          dhcp4-overrides:
            use-dns: false
            use-domains: false
    EOF
    **Nota:**En el código de ejemplo anterior, la interfaz se especifica como ens5. Asegúrese de que el nombre de la interfaz coincida con la interfaz de la configuración. Para ver el nombre de la interfaz, ejecute el comando ip a.
  2. Para convertir el archivo YAML de Netplan en archivos de configuración, ejecute el siguiente comando de netplan:
    netplan generate
    Ahora puede encontrar la dirección IP del solucionador de código auxiliar en /etc/resolv.conf. Esto es lo que se espera. La dirección IP del solucionador de código auxiliar es local en su sistema operativo. En segundo plano, el solucionador de código auxiliar utiliza los servidores DNS que especificó en el archivo 99-custom-dns.yaml.
  3. Reinicie la instancia.
  4. Para confirmar que el sistema recoja correctamente las direcciones IP del servidor DNS deseadas, ejecute el comando systemd-resolve:
    systemd-resolve --status

RHEL 7.5

De forma predeterminada, el servicio NetworkManager administra el archivo resolv.conf. A continuación, el servicio rellena el archivo con los servidores DNS que proporciona DHCP. No permita que NetworkManager administre el archivo resolv.conf para que el archivo resolv.conf ignore los servidores DNS que proporciona DHCP.

Opción 1

Siga estos pasos:

  1. Edite o cree el archivo /etc/dhcp/dhclient.conf.
    Nota: Debe tener permisos de usuario raíz para editar este archivo. Utilice o bien sudo -i para convertirse en el usuario raíz o bien utilice sudo para implementar todos los comandos.
  2. Añada el comando supersede al archivo para anular los servidores de nombres de dominio. En el siguiente comando de ejemplo, sustituya xxx.xxx.xxx.xxx por la dirección IP del servidor DNS:
    supersede domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;
    O bien, puede introducir los servidores que prefiera para que la instancia los utilice.
    Tras esta modificación, el archivo resolv.conf se actualiza al reiniciar la instancia, de modo que solo incluya los servidores DNS que especificó en el archivo dhclient.
  3. Defina el parámetro PEERDNS como yes en el archivo de configuración por interfaz (/etc/sysconfig/network-scripts/ifcfg-*).
  4. Reinicie la instancia.

Opción 2

Siga estos pasos:

  1. Cree el archivo /etc/NetworkManager/conf.d/90-dns-none.conf con el siguiente contenido:

    [main]
    dns=none
  2. Reinicie la instancia y, a continuación, cree el archivo /etc/resolv.conf manualmente.

Información relacionada

Conjuntos de opciones de DHCP en Amazon VPC

2.1 Archivos network en el sitio web de Archlinux

resolved.conf(5) en el sitio web de Archlinux

dhclient.conf(5) en el sitio web de Archlinux

networkmanager.conf(5) en el sitio web de Archlinux

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 9 meses