Comment attribuer un serveur DNS statique à une instance EC2 qui persiste lors du redémarrage ?
Je souhaite configurer une instance Amazon Elastic Compute Cloud (Amazon EC2) avec un serveur DNS statique qui persiste lors du redémarrage.
Résolution
Par défaut, les instances EC2 que vous associez à un Amazon Virtual Private Cloud (Amazon VPC) demandent une adresse de serveur DNS au démarrage. Le protocole DHCP (Dynamic Host Configuration Protocol) envoie la requête, puis Amazon écrit la réponse DHCP avec les adresses du serveur DNS dans le fichier /etc/resolv.conf local.
Lorsque vous redémarrez l'instance, vous perdez les modifications manuelles apportées au fichier resolv.conf qui contient des adresses de serveur DNS personnalisées. Pour conserver votre serveur DNS statique lorsque vous redémarrez votre instance, mettez à jour votre configuration en fonction de votre distribution Linux.
Important : Avant de modifier votre instance, utilisez une Amazon Machine Image (AMI) pour créer une sauvegarde. Vous pouvez également utiliser un instantané Amazon Elastic Block Store (Amazon EBS) pour créer une sauvegarde. Lorsque vous modifiez les configurations réseau d'une instance, celle-ci peut devenir inaccessible.
AL2023
Amazon Linux 2023 (AL2023) utilise systemd-resolved. Pour plus d'informations, consultez systemd-resolved sur le site web d'Archlinux.
Configuration du résolveur
Modifiez le fichier /etc/systemd/resolved.conf, puis modifiez les options DNS et Domaine.
Exemple de fichier de configuration :
# /etc/systemd/resolved.conf [Resolve] DNS=8.8.8.8 Domains=~.
Vous pouvez également créer une adresse de dépôt. Par exemple, utilisez le fichier /etc/systemd/resolved.conf.d/dns_servers.conf.
Exemple de fichier de configuration :
#/etc/systemd/resolved.conf.d/dns_servers.conf [Resolve] DNS=8.8.8.8 8.8.4.4 Domains=~.
Remarque : Définissez l’option Domains=~. de manière que systemd-resolved n’utilise pas les serveurs DNS par lien définis dans la configuration par lien. L’option Domains=~. n’affecte pas les requêtes de noms de domaine qui correspondent aux domaines de recherche les plus spécifiques que vous spécifiez dans les configurations par lien. Lorsque les noms de domaine sont résolus, ils utilisent leurs serveurs DNS par lien.
Modification de l’emplacement vers lequel /etc/resolv.conf pointe
Par défaut, /etc/resolv.conf pointe vers le résolveur stub de l’hôte local. Pour changer le résolveur, recréez le fichier avec les champs mis à jour ou pointez à un autre emplacement que le résolveur stub de l’hôte local. Par exemple, pointez vers le fichier /run/systemd/resolve/resolv.conf qui contient une liste plate des serveurs utilisés par systemd-resolved.
Exemple de statut du fichier de configuration lorsque vous utilisez le cache 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)
Exemple de statut du fichier de configuration lorsque vous n'utilisez pas le cache 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
Pour tester votre configuration, exécutez les commandes suivantes :
# resolvectl status
# resolvectl query amazonaws.com
Exemples de sortie :
# 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 ou AL2
Pour configurer vos instances Amazon Linux 1 (AL1) ou Amazon Linux 2 (AL2), mettez à jour le fichier etc/dhcp/dhclient.conf ou le fichier ifcfg-eth0.conf. Si vous configurez les deux fichiers, les serveurs DNS que vous spécifiez dans le fichier ifcfg-eth0.conf sont prioritaires.
Prérequis : Définissez la valeur du paramètre PEERDNS dans le fichier ifcfg-eth0.conf sur oui. Lorsque vous définissez le paramètre PEERDNS sur non, Amazon EC2 ignore les serveurs DNS spécifiés dans les fichiers ifcfg-* ou fournis par DHCP.
Mettre à jour le fichier etc/dhcp/dhclient.conf
Procédez comme suit :
- Ouvrez le fichier /etc/dhcp/dhclient.conf existant. Vous pouvez également en créer un.
Remarque : Vous devez disposer des privilèges d'utilisateur racine pour modifier ce fichier. Utilisez sudo -i pour devenir l’utilisateur racine ou bien sudo pour implémenter toutes les commandes. - Pour remplacer les serveurs de noms de domaine, ajoutez la commande supersede au fichier :
Remarque : Remplacez 000.000.000.000 par l'adresse IP du ou des serveurs DNS que vous souhaitez que l'instance utilise.supersede domain-name-servers 000.000.000.000, 000.000.000.000; - Définissez le paramètre PEERDNS sur oui dans votre fichier de configuration par interface, tel que /etc/sysconfig/network-scripts/ifcfg-*.
- Redémarrez l’instance EC2. Le fichier resolv.conf est mis à jour au redémarrage de l’instance pour ne contenir que les serveurs DNS que vous avez spécifiés dans le fichier dhclient.
Mettre à jour le fichier ifcfj-eth0
Procédez comme suit :
-
Pour remplacer les valeurs des serveurs DNS dans le fichier /etc/dhcp/dhclient.conf, spécifiez les serveurs DNS personnalisés dans les fichiers de configuration par interface.
L’exemple suivant montre le fichier /etc/sysconfig/network-scripts/ifcfg-eth0 provenant d’une instance Amazon Linux qui inclut deux serveurs DNS personnalisés :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 -
Définissez le paramètre PEERDNS sur oui dans votre fichier de configuration par interface, tel que /etc/sysconfig/network-scripts/ifcfg-*.
Remarque : Si votre instance exécute Ubuntu 16.04 ou Red Hat Enterprise Linux (RHEL) 7.5, vous pouvez également utiliser les étapes de résolution précédentes.
Ubuntu 18.04, 20.04 et 22.04
Sur Ubuntu 18.04, le package netplan.io gère la configuration de l'interface réseau et le service systemd-resolved utilise un résolveur de stub pour gérer les requêtes DNS. L'adresse IP du résolveur stub se trouve dans le fichier /etc/resolv.conf qui est un lien symbolique vers le fichier /run/systemd/resolve/stub-resolv.conf. Si le fichier /etc/resolv.conf présente les configurations suivantes, l’instruction supersede dans /etc/dhcp/dhclient.conf risque de ne pas fonctionner comme prévu :
- Le fichier n’est pas un lien symbolique sur votre instance.
- Le fichier est un lien symbolique pointant vers un autre fichier, tel que /run/systemd/resolve/resolv.conf.
Exécutez les étapes suivantes pour remplacer les valeurs du serveur DNS :
-
Créez un fichier nommé /etc/netplan/99-custom-dns.yaml avec les données suivantes :
### 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"Remarque : Remplacez 1.1.1.1, 1.0.0.1 par l'adresse IP de votre serveur DNS. Netplan stocke généralement les fichiers de configuration dans le répertoire /etc/netplan. L'exemple précédent utilise l'interface ens5. Assurez-vous que le nom de l'interface correspond à votre interface. Pour afficher le nom de votre interface, exécutez la commande suivante :
# ip aExemple de sortie :
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 -
Pour convertir le fichier YAML Netplan en fichiers de configuration, exécutez les commandes netplan suivantes :
# netplan generate # netplan try # netplan applyRemarque : Le message « WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running » peut s'afficher. Vous pouvez ignorer ce message et passer à l'étape suivante. Si vous ne souhaitez pas voir le message AVERTISSEMENT, installez le package Open vSwitch avec DPDK. L’adresse IP du résolveur stub se trouve maintenant dans /etc/resolv.conf. Il s’agit d’un comportement normal car l'adresse IP du résolveur stub est locale à votre système d'exploitation (OS). En arrière-plan, le résolveur stub utilise les serveurs DNS que vous avez spécifiés dans le fichier 99-custom-dns.yaml.
-
Pour vérifier que le système utilise correctement les adresses IP de serveur DNS prévues, exécutez la commande suivante en fonction de votre version d'Ubuntu :
Ubuntu 18.04 :systemd-resolve --statusUbuntu 20.04 et 22.04 :
resolvectl status
RHEL 7.5
Par défaut, le service NetworkManager gère le fichier resolv.conf pour les distributions RHEL. Le service remplit ensuite le fichier avec des serveurs DNS fournis par DHCP. Pour utiliser des serveurs DNS personnalisés, bloquez NetworkManager dans le fichier resolv.conf afin que celui-ci ignore les serveurs DNS fournis par DHCP.
Suivez les étapes décrites à la section Mettre à jour le fichier etc/dhcp/dhclient.conf sous AL1 ou AL2. Ou bien, créez le fichier /etc/NetworkManager/conf.d/90-dns-none.conf avec le contenu suivant :
[main] dns=none
Redémarrez l’instance, puis créez le fichier /etc/resolv.conf manuellement.
Informations connexes
Ensembles d'options DHCP dans Amazon VPC
fichiers réseau sur le site Web d’Archlinux
resolved.conf(5) sur le site Web d’Archlinux
dhclient.conf(5) sur le site Web d’Archlinux
networkmanager.conf(5) sur le site Web d’Archlinux
- Sujets
- Compute
- Balises
- LinuxAmazon EC2
- Langue
- Français
Vidéos associées


Contenus pertinents
- demandé il y a 2 ans
- Réponse acceptéedemandé il y a 4 mois
- demandé il y a un an
- demandé il y a un an
AWS OFFICIELA mis à jour il y a 10 mois
AWS OFFICIELA mis à jour il y a un an