Comment monter Amazon EFS à l'aide d'un nom de domaine complet sur une machine Linux associée à AWS Managed Microsoft AD ?

Dernière mise à jour : 12/03/2021

J'utilise AWS Directory Service pour Microsoft Active Directory. J'ai associé mes instances Amazon Elastic Compute Cloud (Amazon EC2) Linux au domaine Active Directory. Je ne peux pas monter le Amazon Elastic File System (Amazon EFS) à l'aide du nom de domaine complet (FQDN) de mon instance EC2 Linux. Comment résoudre ce problème ?

Brève description

Pour associer votre machine Linux à AWS Managed Microsoft AD, configurez votre instance afin qu'elle utilise les serveurs DNS de votre Active Directory. Cette configuration signifie que toutes les requêtes DNS provenant de vos instances EC2 Linux sont routées vers les serveurs DNS Active Directory.

Lorsque vous utilisez Microsoft AD, toutes les requêtes DNS sont transférées à l'adresse IP des serveurs DNS fournis par Amazon pour votre VPC. Ces serveurs DNS résolvent les noms configurés dans vos zones hébergées privées Amazon Route 53 (Route 53). Si vous n'utilisez pas de zones hébergées privées Route 53, vos demandes DNS sont transférées aux serveurs DNS publics. Si aucune zone hébergée privée n'existe pour vos services AWS, les demandes DNS sont transférées aux serveurs DNS publics. Cela signifie qu'ils ne peuvent résoudre que des noms de domaine complets des services AWS sur des adresses IP publiques. Pour plus d'informations, consultez Configuration des DNS.

Cela signifie que le nom de domaine complet Amazon EFS n'est résolu que sur des adresses IP privées. Si vous utilisez Microsoft AD, vous ne pouvez pas monter EFS à l'aide du nom de domaine complet.

Exemple de problème

Cet exemple utilise AWS Managed Microsoft AD. Les serveurs DNS fournis sont 10.30.32.80 et 10.20.34.122. Le système de fichiers EFS a été créé dans le même VPC que la cible de montage 10.20.0.178.

1. À l'aide de netcat, vérifiez que l'instance EC2 peut établir une connexion avec la cible de montage EFS 10.20.0.178 :

nc -vz 10.20.0.178 2049
Connection to 10.20.0.178 2049 port [tcp/nfs] succeeded!

2. Sur le serveur Linux EX2, intégrez Microsoft AD, puis configurez les serveurs DNS Active Directory :

echo 'supersede domain-name-servers 10.20.32.80, 10.20.34.122;' | sudo tee --append /etc/dhcp/dhclient.conf
echo 'supersede domain-search "nikkisDNS.com";' | sudo tee --append /etc/dhcp/dhclient.conf
sudo dhclient -r
sudo dhclient

3. Vérifiez que les serveurs DNS sont configurés en vérifiant le fichier resolv.conf :

cat /etc/resolv.conf
options timeout:2 attempts:5
; generated by /sbin/dhclient-script
search nikkisDNS.com.
nameserver 10.20.32.80
nameserver 10.20.34.122

4. Exécutez dig sur le système de fichiers pour vérifier que l'adresse IP privée de la cible de montage n'est pas renvoyée :

dig fs-ca591a02.efs.eu-west-1.amazonaws.com 

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.64.amzn1 <<>> fs-ca591a02.efs.eu-west-1.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 33320
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;fs-ca591a02.efs.eu-west-1.amazonaws.com. IN A

;; AUTHORITY SECTION:
eu-west-1.amazonaws.com. 299	IN	SOA	dns-external-master.amazon.com. hostmaster.amazon.com. 1312 180 60 2592000 7229

Remarque : la requête DNS n'est résolue sur aucun enregistrement A et l'état indique NXDOMAIN.

Si vous utilisez le serveur de noms fourni par Amazon pour le VPC, notez qu'il résout correctement :

dig @10.20.0.2 fs-ca591a02.efs.eu-west-2.amazonaws.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.64.amzn1 <<>> fs-ca591a02.efs.eu-west-1.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29705
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;fs-ca591a02.efs.eu-west-1.amazonaws.com. IN A

;; ANSWER SECTION:
fs-ca591a02.efs.eu-west-1.amazonaws.com. 60 IN A 10.20.0.178

Solution

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente d'AWS CLI.

Configurez des redirecteurs conditionnels pour votre Microsoft AD afin de transférer les demandes vers le DNS fourni par Amazon VPC. Cette méthode fonctionne également pour résoudre d'autres noms de domaine complets des services AWS sur leurs adresses IP privées, si vous utilisez le DNS fourni par Active Directory.

Pour ce faire, configurez une règle de redirecteur conditionnel. Cela transmet tous les sous-domaines d'un domaine à une adresse IP de serveur DNS spécifique. Par exemple, vous pouvez transférer toutes les demandes DNS pour les sous-domaines d'amazonaws.com à l'adresse IP privée du DNS fourni par Amazon VPC.

Remarque : l'adresse IP du DNS fourni par Amazon VPC est l'adresse IP réservée à la base de la plage réseau IPv4 du VPC plus deux.

Pour créer la règle de redirecteur conditionnel, exécutez la commande AWS CLI create-conditional-forwarder :

aws ds create-conditional-forwarder --directory-id d-93673d4d5a --remote-domain-name amazonaws.com --dns-ip-addrs 10.20.0.2 --region eu-west-1

Utilisez les paramètres suivants :

  • directory-id : entrez l'ID du répertoire AD.
  • remote-domain-name : vous pouvez spécifier n'importe quel domaine. Cette règle est appliquée à tous les noms de domaine complets correspondant à ce ou ces sous-domaines.
  • dns-ip-addrs : entrez l'adresse IP DNS fournie par Amazon VPC.

Cela permet la résolution DNS du nom de domaine complet EFS, puis le montage du système de fichiers EFS à l'aide du nom de domaine complet.

dig fs-ca591a02.efs.eu-west-2.amazonaws.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.64.amzn1 <<>> fs-ca591a02.efs.eu-west-1.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29705
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;fs-ca591a02.efs.eu-west-1.amazonaws.com. IN A

;; ANSWER SECTION:
fs-ca591a02.efs.eu-west-1.amazonaws.com. 60 IN A 10.20.0.178