Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
¿Cómo puedo asignar a la instancia de EC2 un servidor DNS estático que persista durante el reinicio?
Quiero configurar una instancia de Amazon Elastic Compute Cloud (Amazon EC2) con un servidor DNS estático que persista durante el reinicio.
Resolución
De forma predeterminada, las instancias de EC2 que asocias a Amazon Virtual Private Cloud (Amazon VPC) solicitan una dirección de servidor DNS en el inicio. El protocolo de configuración dinámica de host (DHCP) envía la solicitud y, a continuación, Amazon escribe la respuesta DHCP con las direcciones del servidor DNS en el archivo /etc/resolv.conf.
Al reiniciar la instancia, pierdes las modificaciones manuales en el archivo resolv.conf que contiene direcciones de servidor DNS personalizadas. Para mantener tu servidor DNS estático al reiniciar la instancia, actualiza la configuración en función de tu distribución de Linux.
Importante: Antes de cambiar la instancia, usa una imagen de máquina de Amazon (AMI) para crear una copia de seguridad. O bien, utiliza una instantánea de Amazon Elastic Block Store (Amazon EBS) para crear una copia de seguridad. Cuando cambies las configuraciones de red de una instancia, es posible que la instancia se convierta en inalcanzable.
AL2023
Amazon Linux 2023 (AL2023) usa systemd-resolved. Para obtener más información, consulta systemd-resolved en el sitio web de Archlinux.
Configuración del solucionador
Edita el archivo /etc/systemd/resolved.conf y cambia 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, crea un drop in. Por ejemplo, utiliza 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: Establece la opción Domains=~. para que systemd-resolved no use 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 específicos que indicas en las configuraciones por enlace. Cuando los nombres de dominio se resuelven, utilizan sus 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 del host local. Para cambiar el solucionador, vuelve a crear el archivo con los campos actualizados o apunta a otro lugar que no sea el solucionador de código auxiliar del host local. Por ejemplo, apunta al archivo /run/systemd/resolve/resolv.conf, que contiene una lista simplificada de los servidores que systemd-resolved usa.
Ejemplo del estado del archivo de configuración cuando usas la caché de DNS local:
### Default Symbolic link status : point to stub-resolv.conf ### Flow: DNS query => Local Cache DNS 127.0.0.53 ( systemd-resolved ) => External DNS # ls -al /etc/resolv.conf lrwxrwxrwx 1 root root 39 Mar 5 02:28 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf # cat /etc/resolv.conf nameserver 127.0.0.53 options edns0 trust-ad search . ### 127.0.0.53 is used for systemd-resolved ( local cache dns ) # lsof -nP -p `pidof systemd-resolved` |grep TCP systemd-r 339 systemd-resolve 14u IPv4 2753 0t0 TCP 127.0.0.53:53 (LISTEN)
Ejemplo del estado del archivo de configuración cuando no usas la caché de DNS local:
### Changed Symbolic link status : point to /run/systemd/resolve/resolv.conf # cat /run/systemd/resolve/resolv.conf nameserver 1.1.1.1 nameserver 1.0.0.1 search . # ln -sf ../run/systemd/resolve/resolv.conf /etc/resolv.conf # ls -al /etc/resolv.conf lrwxrwxrwx 1 root root 34 Apr 1 16:05 /etc/resolv.conf -> ../run/systemd/resolve/resolv.conf
Para probar la configuración, ejecuta los siguientes comandos:
# resolvectl status
# resolvectl query amazonaws.com
Ejemplos de salidas:
# resolvectl status Global Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: uplink DNS Servers 8.8.8.8 8.8.4.4 DNS Domain ~. Link 2 (ens5) Current Scopes: DNS Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported DNS Servers: 10.2.0.2 DNS Domain: ap-northeast-2.compute.internal
# resolvectl query amazonaws.com amazonaws.com: 207.171.166.22 -- link: ens5 72.21.206.80 -- link: ens5 72.21.210.29 -- link: ens5 -- Information acquired via protocol DNS in 3.0ms. -- Data is authenticated: no; Data was acquired via local or encrypted transport: no -- Data from: cache
AL1 o AL2
Para configurar tus instancias de Amazon Linux 1 (AL1) o Amazon Linux 2 (AL2), actualiza el archivo etc/dhcp/dhclient.conf o ifcfg-eth0.conf. Si configuras ambos archivos, prevalecerán los servidores DNS que especifiques en el archivo ifcfg-eth0.conf.
Requisitos previos: Establece el valor del parámetro PEERDNS del archivo ifcfg-eth0.conf en sí. Al establecer el parámetro PEERDNS en no, Amazon EC2 ignora los servidores DNS especificados en los archivos ifcfg-* o que proporciona DHCP.
Actualización del archivo etc/dhcp/dhclient.conf
Sigue estos pasos:
- Abre el archivo /etc/dhcp/dhclient.conf. O bien, crea uno nuevo.
Nota: Debes tener permisos de usuario raíz para editar este archivo. Utiliza sudo -i para convertirte en el usuario raíz, o bien sudo para implementar todos los comandos. - Para anular los servidores de nombres de dominio, agrega el comando supersede al archivo:
Nota: Sustituye 000.000.000.000 por la dirección IP del servidor o los servidores DNS que deseas que utilice la instancia.supersede domain-name-servers 000.000.000.000, 000.000.000.000;
- Establece el parámetro PEERDNS como sí en el archivo de configuración por interfaz, como /etc/sysconfig/network-scripts/ifcfg-*.
- Reinicia la instancia de EC2. El archivo resolv.conf se actualiza al reiniciar la instancia, de modo que solo incluya los servidores DNS que especificaste en el archivo dhclient.
Actualiza el archivo ifcfj-eth0
Sigue estos pasos:
-
Para anular los valores del servidor DNS en el archivo /etc/dhcp/dhclient.conf, especifica los servidores DNS personalizados en los archivos de configuración por interfaz.
El siguiente archivo muestra el archivo /etc/sysconfig/network-scripts/ifcfg-eth0 de una instancia de Amazon Linux que incluye 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
-
Establece el parámetro PEERDNS como sí en el archivo de configuración por interfaz, como /etc/sysconfig/network-scripts/ifcfg-*.
Nota: Si la instancia ejecuta Ubuntu 16.04 o Red Hat Enterprise Linux (RHEL) 7.5, también puedes seguir los pasos de resolución anteriores.
Ubuntu 18.04, 20.04 y 22.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ódigos auxiliares se encuentra en el archivo /etc/resolv.conf, que es un enlace simbólico al archivo /run/systemd/resolve/stub-resolv.conf. Si el archivo /etc/resolv.conf tiene las siguientes configuraciones, 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 tu instancia.
- El archivo es un enlace simbólico que apunta a otro archivo, como /run/systemd/resolve/resolv.conf.
Para anular los valores del servidor DNS, sigue estos pasos:
-
Crea un archivo denominado /etc/netplan/99-custom-dns.yaml con los siguientes datos:
### Create Customer DNS config # 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 ### Required File Permission # chmod 600 /etc/netplan/99-custom-dns.yaml ### Checking Netplan Configuration status # netplan get network: version: 2 ethernets: ens5: match: macaddress: "0a:e5:a1:40:a2:f5" nameservers: addresses: - 1.1.1.1 - 1.0.0.1 dhcp4: true dhcp4-overrides: use-dns: false use-domains: false dhcp6: false set-name: "ens5"
Nota: Sustituye 1.1.1.1, 1.0.0.1 por la dirección IP de tu servidor DNS. Netplan almacena los archivos de configuración en el directorio /etc/netplan. En el ejemplo anterior se utiliza la interfaz ens5. Asegúrate de que el nombre de la interfaz coincida con tu interfaz. Para ver el nombre de la interfaz, ejecuta el siguiente comando:
# ip a
Resultado de ejemplo:
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: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000 link/ether 0a:e5:a1:40:a2:f5 brd ff:ff:ff:ff:ff:ff inet 172.31.35.233/20 metric 100 brd 172.31.47.255 scope global dynamic ens5 valid_lft 2828sec preferred_lft 2828sec inet6 fe80::8e5:a1ff:fe40:a2f5/64 scope link valid_lft forever preferred_lft forever
-
Para convertir el archivo YAML de Netplan en archivos de configuración, ejecuta los siguientes comandos de netplan:
# netplan generate # netplan try # netplan apply
Nota: Es posible que recibas el mensaje «WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running». Puedes ignorar este mensaje y continuar con el siguiente paso. Si no deseas ver el mensaje de ADVERTENCIA, instala el paquete Open vSwitch con DPDK. La dirección IP del solucionador de código auxiliar ahora se encuentra en /etc/resolv.conf. Este es un comportamiento esperado porque la dirección IP del solucionador de código auxiliar es local en tu sistema operativo (SO). En segundo plano, el solucionador de código auxiliar utiliza los servidores DNS que especificaste en el archivo 99-custom-dns.yaml.
-
Para confirmar que el sistema usa correctamente las direcciones IP del servidor DNS deseadas, ejecuta el siguiente comando según tu versión de Ubuntu:
Ubuntu 18.04:systemd-resolve --status
Ubuntu 20.04 y 22.04:
resolvectl status
RHEL 7.5
De forma predeterminada, el servicio NetworkManager administra el archivo resolv.conf para las distribuciones de RHEL. A continuación, el servicio rellena el archivo con los servidores DNS que proporciona DHCP. Para usar servidores DNS personalizados, bloquea NetworkManager en el archivo resolv.conf para que el archivo resolv.conf ignore los servidores DNS que proporciona DHCP.
Completa los pasos para actualizar el archivo etc/dhcp/dhclient.conf en AL1 o AL2. O bien, crea el archivo /etc/NetworkManager/conf.d/90-dns-none.conf con el siguiente contenido:
[main]dns=none
Reinicia la instancia y, a continuación, crea el archivo /etc/resolv.conf manualmente.
Información relacionada
Conjuntos de opciones de DHCP en Amazon VPC
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
Vídeos relacionados


Contenido relevante
- preguntada hace 3 meses
- preguntada hace 23 días
- preguntada hace 2 meses
- preguntada hace 2 meses
- preguntada hace 4 meses