En utilisant AWS re:Post, vous acceptez les AWS re:Post Conditions d’utilisation

Comment puis-je éviter les échecs de résolution DNS avec une instance Linux Amazon EC2 ?

Lecture de 7 minute(s)
0

Je souhaite éviter les échecs de résolution DNS avec les instances Linux Amazon Elastic Compute Cloud (Amazon EC2).

Brève description

Appliquez un cache DNS pour réduire l'utilisation du processeur et du réseau et éviter les échecs de résolution DNS.

Si vous utilisez un cache DNS pour interroger des ressources DNS externes, le cache répond localement à la plupart des requêtes DNS récurrentes. Lorsque le cache effectue cette opération, il 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)

La procédure suivante s'applique à toutes les versions d'Amazon Linux. Si vous utilisez une autre distribution, sélectionnez la documentation relative à votre distribution dans la liste suivante :

Résolution

Configuration d’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 :

  1. Pour installer le serveur dnsmasq, exécutez la commande suivante :

    sudo yum install -y dnsmasq
  2. 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 dnsmasq

    Remarque : dnsmasq s'exécute généralement en tant qu'utilisateur root, mais passe à un autre utilisateur après le démarrage. Par défaut, l'utilisateur est « personne ». Lorsque dnsmasq passe à un autre utilisateur, les privilèges root sont supprimés.

  3. Pour créer une copie du fichier dnsmasq.conf, exécutez la commande suivante :

    sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.ori

    Pour ouvrir le fichier de configuration avec un éditeur de texte, exécutez la commande suivante :

    sudo vim /etc/dnsmasq.conf
  4. Pour modifier le fichier /etc/dnsmasq.conf, exécutez lade commande suivant :

    # Server Configurationlisten-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-priv

    Remarque : 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 des baux DHCP (Dynamic Host Configuration Protocol). Si vous souhaitez réussir une recherche inversée, vous devez commenter ou supprimer bogus-priv.

  5. Créez le fichier /etc/resolv.dnsmasq. Ensuite, pour configurer 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 ? Dans certains cas, il peut être nécessaire d’ajuster le fichier /etc/resolv.dnsmasq pour utiliser le serveur de noms de ce réseau. Vous devez ajuster le fichier lorsque vous créez une AMI à partir d'une instance avec le cache dnsmasq pour la lancer dans un autre VPC avec un autre CIDR. Vous pouvez également ajuster le fichier lorsque vous spécifiez un serveur DNS personnalisé dans vos options DHCP.

  6. Pour redémarrer le serveur dnsmasq et configurer le service afin qu'il se lance au démarrage, effectuez l'une des actions suivantes.
    Pour démarrer Amazon Linux 1 au démarrage, exécutez la commande suivante :

    sudo service dnsmasq restart
    sudo chkconfig dnsmasq on

    Pour démarrer Amazon Linux 2 et Amazon Linux 2023 au redémarrage, exécutez la commande suivante :

    sudo systemctl restart dnsmasq.service
    sudo systemctl enable dnsmasq.service
  7. Pour vérifier que dnsmasq fonctionne correctement, utilisez la commande dig :

    dig aws.amazon.com @127.0.0.1

    Si la réponse est similaire à l'exemple suivant, le cache dnsmasq fonctionne correctement :

    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.56.amzn1 <<>> aws.amazon.com @127.0.0.1;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25122
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;aws.amazon.com.            IN    A
    
    ;; ANSWER SECTION:
    aws.amazon.com.        41    IN    A    54.239.31.69
    
    ;; Query time: 1 msec
    ;; SERVER: 127.0.0.1#53(127.0.0.1)
    ...
  8. 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 plus d'informations, consultez Comment puis-je attribuer un serveur DNS statique à l’instance EC2 qui persiste lors du redémarrage ?

    Ensuite, pour configurer le résolveur DNS par défaut comme option de secours, 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"
  9. Pour appliquer la modification, effectuez l'une des actions suivantes. Exécutez la commande dhclient suivante :

    sudo dhclient

    -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

    Remarque : Pour Amazon Linux 2023, exécutez à la commande sudo systemctl restart systemd-networkd.service au lieu de dhclient.
    Pour vérifier que votre instance utilise le cache DNS, exécutez la commande dig suivante :

    dig aws.amazon.com

    Si la réponse indique que le serveur qui répond est 127.0.0.1, le cache DNS fonctionne correctement.
    Exemple de réponse :

    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.56.amzn1 <<>> aws.amazon.com;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1028
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;aws.amazon.com.            IN    A
    
    ;; ANSWER SECTION:
    aws.amazon.com.        55    IN    A    54.239.31.69
    
    ;; Query time: 0 msec
    ;; SERVER: 127.0.0.1#53(127.0.0.1) <<<-------
    ...

Automatisation de dnsmasq

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 :

  • Script Bash AutomateDnsmasq.sh
  • Directives AutomateDnsmasq.cloudinit

Pour plus d'informations sur le script Bash AutomateDnsmasq.sh, consultez #!/bin/bash sur le site web de GithHub.

Pour plus d'informations sur les directives AutomateDnsmasq.cloudinit, consultez #cloud -config sur le site Web de GithHub

Si vous souhaitez automatiser l'installation de dnsmasq sur d'autres distributions Linux, utilisez l'un ou l'autre des fichiers pour effectuer la personnalisation nécessaire.

Les deux fichiers peuvent être exécutés sur des instances VPC car ils utilisent l'adresse alternative du serveur Amazon DNS, soit 169.254.169.253.

Pour exécuter l'un des fichiers au moment du lancement, vous devez transmettre le contenu du fichier dans le champ des données utilisateur. Vous pouvez exécuter le script Bash en tant que script autonome ou à l'aide d'une commande d'exécution d'AWS Systems Manager pour effectuer les actions sur une instance.

Pour exécuter le script Bash en tant que script autonome, procédez comme suit :

  1. 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.shchmod +x AutomateDnsmasq.sh
  2. Exécutez la commande suivante en tant qu'utilisateur root ou utilisez sudo :

    sudo ./AutomateDnsmasq.sh

Informations connexes

Adressage IP des instances Amazon EC2

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 7 mois
Aucun commentaire