Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
¿Cómo evito los errores de resolución de DNS en mi instancia Linux de Amazon EC2?
Quiero evitar errores de resolución de DNS con mis instancias de Linux de Amazon Elastic Compute Cloud (Amazon EC2).
Descripción corta
Para evitar errores en la resolución de DNS, aplica una caché de DNS.
Cuando uses una caché de DNS para consultar recursos externos de DNS, la caché responderá a la mayoría de las consultas de DNS recurrentes de forma local. En este caso, la caché no interactúa con el solucionador de DNS a través de la red. Puedes consultar recursos de DNS externos como los de estos ejemplos:
- Amazon Relational Database Service (Amazon RDS)
- Amazon ElastiCache
- Amazon Simple Storage Service (Amazon S3)
Puedes utilizar los siguientes pasos de resolución para todas las versiones de Amazon Linux. Si usas otra distribución, consulta la documentación de tu distribución:
- En el caso de Debian, consulta Local caching en el sitio web de Debian.
- Para Ubuntu, consulta Dnsmasq en el sitio web de Ubuntu.
- Para obtener información sobre Red Hat Enterprise Linux (RHEL), consulta How to configure DNS caching server with dnsmasq in RHEL en el sitio web de Red Hat.
Resolución
Nota: Los siguientes pasos de resolución utilizan 169.254.169.253 como dirección IP del solucionador de DNS. Si usas un solucionador de DNS diferente, reemplaza 169.254.169.253 por la dirección IP de tu solucionador de DNS.
Configuración de una caché local de DNS con dnsmasq
Para configurar una caché local de DNS, usa dnsmasq. Para obtener más información, consulta dnsmasq en el sitio web thekelleys.org.uk.
Sigue estos pasos:
-
Para instalar el servidor dnsmasq, ejecuta el siguiente comando:
sudo yum install -y dnsmasq -
Si la instancia se ejecuta en Amazon Linux 2023 (AL2023), ve al paso 3. Para crear un usuario de sistema dedicado para ejecutar dnsmasq, ejecuta el siguiente comando:
sudo groupadd -r dnsmasq sudo useradd -r -g dnsmasq dnsmasqNota: dnsmasq normalmente se ejecuta como usuario raíz. Sin embargo, el usuario cambia después del inicio y elimina los permisos de la raíz. De manera predeterminada, el usuario es nadie.
-
Para crear una copia del archivo dnsmasq.conf, ejecuta el siguiente comando:
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.ori -
Para crear y abrir el archivo de configuración /etc/dnsmasq.conf con el editor de texto vim, ejecuta el siguiente comando:
sudo vim /etc/dnsmasq.confNota: Puedes usar cualquier editor de texto, como vi o nano, para modificar el archivo /etc/dnsmasq.conf.
-
En el archivo /etc/dnsmasq.conf, introduce el siguiente contenido:
# Server Configuration listen-address=127.0.0.1 port=53 bind-interfaces user=dnsmasq group=dnsmasq pid-file=/var/run/dnsmasq.pid # Name resolution options resolv-file=/etc/resolv.dnsmasq cache-size=500 neg-ttl=60 domain-needed bogus-privNota: La opción bogus-priv en dnsmasq provoca el fallo de una búsqueda inversa de DNS en el caso de los intervalos de direcciones de IP privadas que no se hayan incluido en /etc/hosts. Esta opción también puede provocar un error en la búsqueda de DNS inversa para el archivo de concesiones del protocolo de configuración dinámica de host (DHCP). Para realizar una búsqueda inversa satisfactoria, comenta o elimina bogus-priv.
-
Crea el archivo /etc/resolv.dnsmasq y configura el servidor DNS de Amazon o los servidores de nombres de dominio personalizados que especificaste en los conjuntos de opciones de DHCP. Ejecuta el siguiente comando:
sudo bash -c "echo 'nameserver 169.254.169.253' > /etc/resolv.dnsmasq"Nota: Para obtener más información sobre las ubicaciones de los servidores DNS, consulta ¿Qué es DHCP? También puedes ajustar la ubicación del servidor 169.254.169.253 al crear una imagen de máquina de Amazon (AMI) a partir de una instancia con la caché dnsmasq para lanzarla en otra nube virtual privada (VPC) con un CIDR diferente.
-
Para reiniciar el servidor dnsmasq y configurar el servicio para que se inicie al arrancar, ejecuta uno de los siguientes comandos según su distribución.
Amazon Linux 1 (AL1):sudo service dnsmasq restart sudo chkconfig dnsmasq onAmazon Linux 2 (AL2) y AL2023:
sudo systemctl restart dnsmasq.service sudo systemctl enable dnsmasq.service -
Para comprobar que dnsmasq funcione correctamente, ejecuta el siguiente comando:
dig aws.amazon.com @127.0.0.1Si la respuesta es parecida a la del siguiente ejemplo, entonces la caché dnsmasq funciona correctamente:
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.13.11 <<>> aws.amazon.com @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33958 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;aws.amazon.com. IN A ;; ANSWER SECTION: aws.amazon.com. 300 IN CNAME tp.8e49140c2-frontier.amazon.com. tp.8e49140c2-frontier.amazon.com. 9 IN CNAME dr49lng3n1n2s.cloudfront.net. dr49lng3n1n2s.cloudfront.net. 59 IN A 108.158.61.67 dr49lng3n1n2s.cloudfront.net. 59 IN A 108.158.61.79 dr49lng3n1n2s.cloudfront.net. 59 IN A 108.158.61.96 dr49lng3n1n2s.cloudfront.net. 59 IN A 108.158.61.102 ;; Query time: 2 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ... -
Configura la caché de DNS dnsmasq como solucionador de DNS predeterminado.
Nota: Debes suprimir el solucionador de DNS predeterminado que proporciona DHCP. Para ello, modifica o crea el archivo /etc/dhcp/dhclient.conf.
Para AL2, ejecuta el siguiente comando:sudo bash -c "echo 'supersede domain-name-servers 127.0.0.1, 169.254.169.253;' >> /etc/dhcp/dhclient.conf"Para AL2023, ejecuta el siguiente comando:
sudo bash -c 'echo "DNS=127.0.0.1" >> /etc/systemd/resolved.conf' sudo bash -c 'echo "DNS=169.254.169.253" >> /etc/systemd/resolved.conf'Nota: AL2023 usa systemd-networkd como solucionador de DNS predeterminado.
-
Para aplicar el cambio, ejecuta el siguiente comando según tu distribución de Linux:
AL2:
sudo dhclient
AL2023:
sudo systemctl restart systemd-resolved.service
-o-
Para reiniciar el servicio de red, ejecute el siguiente comando:
sudo systemctl restart network
-o-
Para reiniciar la instancia, ejecuta el siguiente comando:
sudo reboot
- Para comprobar si la instancia utiliza la caché de DNS, ejecuta el siguiente comando:
dig aws.amazon.com
Si el resultado muestra que el servidor que responde es 127.0.0.1, es que la caché de DNS funciona según lo esperado.
Resultado de ejemplo:
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.13.11 <<>> aws.amazon.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29129 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;aws.amazon.com. IN A ;; ANSWER SECTION: aws.amazon.com. 297 IN CNAME tp.8e49140c2-frontier.amazon.com. tp.8e49140c2-frontier.amazon.com. 25 IN CNAME dr49lng3n1n2s.cloudfront.net. dr49lng3n1n2s.cloudfront.net. 41 IN A 108.158.61.102 dr49lng3n1n2s.cloudfront.net. 41 IN A 108.158.61.96 dr49lng3n1n2s.cloudfront.net. 41 IN A 108.158.61.79 dr49lng3n1n2s.cloudfront.net. 41 IN A 108.158.61.67 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) <------------- ...
Automatización de dnsmasq para nuevas instancias
Puedes utilizar una de las siguientes opciones para automatizar la instalación y la configuración de dnsmasq como solucionador de DNS en Amazon Linux:
- Usa el script de Bash AutomateDnsmasq.sh. Para descargar el archivo, consulta AutomateDnsmasq.sh en el sitio web de GitHub.
- Usa las directivas AutomateDnsmasq.cloudinit. Para descargar el archivo, consulta AutomateDnsmasq.cloudinit en el sitio web de GitHub.
Para automatizar la instalación de dnsmasq en otras distribuciones de Linux, usa uno de los archivos anteriores para realizar la personalización necesaria. En cualquiera de los archivos, si usas la dirección alternativa del servidor DNS de Amazon 169.254.169.253, los archivos se pueden ejecutar en instancias de VPC.
Para ejecutar cualquiera de los archivos al inicio, introduce el contenido del archivo en Datos de usuario. Puedes usar los comandos de ejecución de AWS Systems Manager para ejecutar el script de Bash. Se recomienda usar las directivas solo para la inicialización en el primer arranque.
Para ejecutar el script de Bash como script independiente, sigue estos pasos:
-
Para descargar el script en tu instancia y que sea ejecutable, ejecuta el siguiente comando:
wget https://raw.githubusercontent.com/awslabs/aws-support-tools/master/EC2/AutomateDnsmasq/AutomateDnsmasq.sh chmod +x AutomateDnsmasq.sh -
Para ejecutar el script, ejecuta el siguiente comando como usuario raíz:
sudo ./AutomateDnsmasq.sh
Información relacionada
- Temas
- Compute
- Etiquetas
- Amazon EC2Linux
- Idioma
- Español
Vídeos relacionados


Contenido relevante
- preguntada hace 5 meses
- preguntada hace 5 meses
- preguntada hace 6 meses
- Respuesta aceptadapreguntada hace 9 meses
OFICIAL DE AWSActualizada hace 2 años