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.
Comment éviter les échecs de résolution DNS dans mon instance Amazon EC2 Linux ?
Je souhaite éviter les échecs de résolution DNS dans mes instances Linux Amazon Elastic Compute Cloud (Amazon EC2).
Brève description
Pour éviter les échecs de résolution DNS, appliquez un cache DNS.
Lorsque vous utilisez un cache DNS pour interroger des ressources DNS externes, le cache répond localement à la plupart des requêtes DNS récurrentes. Dans ce scénario, le cache n'interagit pas avec le résolveur DNS sur le réseau. Vous pouvez interroger des ressources DNS externes, comme :
- Amazon Relational Database Service (Amazon RDS)
- Amazon ElastiCache
- Amazon Simple Storage Service (Amazon S3)
Vous pouvez suivre les étapes de résolution suivantes pour toutes les versions d'Amazon Linux. Si vous utilisez une autre distribution, consultez la documentation de votre distribution :
- Pour Debian, consultez la page Mise en cache locale sur le site Web de Debian.
- Pour Ubuntu, consultez Dnsmasq sur le site Web d'Ubuntu.
- Pour plus d'informations sur Red Hat Enterprise Linux (RHEL), consultez la page Comment configurer le serveur de mise en cache DNS avec dnsmasq dans RHEL sur le site Web de Red Hat.
Résolution
Remarque : Les étapes de résolution suivantes utilisent 169.254.169.253 comme adresse IP du résolveur DNS. Si vous utilisez un autre résolveur DNS, remplacez 169.254.169.253 par l'adresse IP de votre résolveur DNS.
Configurer un cache DNS local avec dnsmasq
Pour configurer un cache DNS local, utilisez dnsmasq. Pour plus d'informations, consultez dnsmasq sur le site Web thekelleys.org.uk.
Procédez comme suit :
-
Exécutez la commande suivante pour installer le serveur dnsmasq :
sudo yum install -y dnsmasq -
Si votre instance s'exécute sur Amazon Linux 2023 (AL2023), passez à l'étape 3. Pour créer un utilisateur système dédié à l'exécution de dnsmasq, exécutez la commande suivante :
sudo groupadd -r dnsmasq sudo useradd -r -g dnsmasq dnsmasqRemarque : dnsmasq s'exécute généralement en tant qu'utilisateur racine. Cependant, l'utilisateur change après le start-up et supprime les autorisations root. Par défaut, l'utilisateur est personne.
-
Exécutez la commande suivante pour créer une sauvegarde du fichier dnsmasq.conf :
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.ori -
Pour créer et ouvrir le fichier de configuration /etc/dnsmasq.conf avec l'éditeur de texte vim, exécutez la commande suivante :
sudo vim /etc/dnsmasq.confRemarque : Vous pouvez utiliser n'importe quel éditeur de texte, tel que vi ou nano, pour modifier le fichier /etc/dnsmasq.conf.
-
Dans le fichier /etc/dnsmasq.conf, saisissez le contenu suivant :
# 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-privRemarque : L'option bogus-priv dans dnsmasq entraîne l'échec d'une recherche DNS inversée pour les plages d'adresses IP privées qui ne figurent pas dans /etc/hosts. Cette option peut également entraîner l'échec de la recherche DNS inversée pour le fichier de baux DHCP (protocole de configuration d'hôte dynamique). Pour effectuer une recherche inversée réussie, commentez ou supprimez bogus-priv.
-
Créez le fichier /etc/resolv.dnsmasq et définissez le serveur Amazon DNS ou les serveurs de noms de domaine personnalisés que vous avez spécifiés dans les ensembles d'options DHCP. Exécutez la commande suivante :
sudo bash -c "echo 'nameserver 169.254.169.253' > /etc/resolv.dnsmasq"Remarque : Pour en savoir plus sur l'emplacement des serveurs DNS, consultez la section Qu'est-ce que le DHCP ? Vous pouvez également ajuster l'emplacement du serveur 169.254.169.253 lorsque vous créez une Amazon Machine Image (AMI) à partir d'une instance avec le cache dnsmasq pour la lancer dans un autre cloud privé virtuel (VPC) avec un CIDR différent.
-
Pour redémarrer le serveur dnsmasq et configurer le service afin qu'il démarre au démarrage, exécutez l'une des commandes suivantes en fonction de votre distribution.
Amazon Linux 1 (AL1) :sudo service dnsmasq restart sudo chkconfig dnsmasq onAmazon Linux 2 (AL2) et AL2023 :
sudo systemctl restart dnsmasq.service sudo systemctl enable dnsmasq.service -
Pour vérifier que dnsmasq fonctionne correctement, exécutez la commande suivante :
dig aws.amazon.com @127.0.0.1Si la réponse est similaire à l'exemple suivant, le cache dnsmasq fonctionne comme prévu :
; <<>> 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) ... -
Définissez le cache DNS dnsmasq comme résolveur DNS par défaut.
Remarque : Vous devez supprimer le résolveur DNS par défaut fourni par DHCP. Pour cela, modifiez ou créez le fichier /etc/dhcp/dhclient.conf.
Pour AL2, exécutez la commande suivante :sudo bash -c "echo 'supersede domain-name-servers 127.0.0.1, 169.254.169.253;' >> /etc/dhcp/dhclient.conf"Pour AL2023, exécutez la commande suivante :
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'Remarque : AL2023 utilise systemd-networkd comme résolveur DNS par défaut.
-
Pour appliquer la modification, exécutez la commande suivante en fonction de votre distribution Linux :
AL2 :
sudo dhclient
AL2023 :
sudo systemctl restart systemd-resolved.service
-ou-
Exécutez la commande suivante pour redémarrer les services réseau :
sudo systemctl restart network
-ou-
Pour redémarrer votre instance, exécutez la commande suivante :
sudo reboot
- Exécutez la commande suivante pour vérifier que votre instance utilise le cache DNS :
dig aws.amazon.com
Si la sortie indique que le serveur de réponse est 127.0.0.1, le cache DNS fonctionne comme prévu.
Exemple de sortie :
; <<>> 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) <------------- ...
Automatiser dnsmasq pour de nouvelles instances
Pour automatiser l'installation et la configuration de dnsmasq en tant que résolveur DNS sur Amazon Linux, veuillez utiliser l'une des options suivantes :
- Utilisez le script Bash AutomateDnsmasq.sh. Pour télécharger le fichier, consultez la page AutomateDnsmasq.sh sur le site Web de GitHub.
- Utilisez les directives AutomateDnsmasq.cloudinit. Pour télécharger le fichier, consultez la page AutomateDnsmasq.cloudinit sur le site Web de GitHub.
Pour automatiser l'installation de dnsmasq sur d'autres distributions Linux, utilisez l'un des fichiers précédents pour effectuer la personnalisation nécessaire. Pour l'un ou l'autre des fichiers, si vous utilisez l'adresse alternative du serveur DNS 169.254.169.253, les fichiers peuvent être exécutés sur des instances VPC.
Pour exécuter l'un ou l'autre des fichiers au lancement, saisissez le contenu du fichier dans Données utilisateur. Vous pouvez utiliser les commandes d'exécution d'AWS Systems Manager pour exécuter le script Bash. Il est recommandé d'utiliser les directives uniquement pour l'initialisation au premier démarrage.
Pour exécuter le script Bash en tant que script autonome, procédez comme suit :
-
Pour télécharger le script sur votre instance et le rendre exécutable, exécutez la commande suivante :
wget https://raw.githubusercontent.com/awslabs/aws-support-tools/master/EC2/AutomateDnsmasq/AutomateDnsmasq.sh chmod +x AutomateDnsmasq.sh -
Pour exécuter le script, exécutez la commande suivante en tant qu'utilisateur racine :
sudo ./AutomateDnsmasq.sh
Informations connexes
- Sujets
- Compute
- Balises
- Amazon EC2Linux
- Langue
- Français
Vidéos associées


Contenus pertinents
- demandé il y a un an
- demandé il y a un an
- demandé il y a 2 ans
- demandé il y a un an
AWS OFFICIELA mis à jour il y a 8 mois
AWS OFFICIELA mis à jour il y a un an