Wie mounte ich Amazon EFS mit dem EFS-DNS-Namen auf einem Linux-Computer, der mit AWS Managed Microsoft AD verbunden ist?
Ich verwende den AWS Directory Service für AWS Managed Microsoft AD. Ich habe meine Amazon Elastic Compute Cloud (Amazon EC2) Linux-Instances der Active Directory-Domain hinzugefügt. Daher kann ich das Amazon Elastic File System (Amazon EFS) nicht mit dem EFS-DNS-Namen mounten. Wie kann ich dieses Problem lösen?
Kurzbeschreibung
Wenn Sie Ihren Linux-Computer mit AWS Managed Microsoft AD verbinden, konfigurieren Sie die Instance so, dass sie die DNS-Server für das Active Directory verwendet.
Für AWS Managed Microsoft AD werden alle DNS-Anfragen an die IP-Adresse der von Amazon bereitgestellten DNS-Server für Ihre VPC weitergeleitet. Diese DNS-Server lösen Namen auf, die in den privaten gehosteten Amazon Route 53-Zonen konfiguriert sind. Wenn Sie keine private gehosteten Zonen von Route 53 verwenden, werden die DNS-Anfragen an öffentliche DNS-Server weitergeleitet. Wenn keine private gehostete Zone für die AWS-Services vorhanden ist, werden DNS-Anfragen an öffentliche DNS-Server weitergeleitet. Das bedeutet, dass sie AWS-Services-DNS nur für öffentliche IP-Adressen auflösen können. Weitere Informationen finden Sie unter DNS konfigurieren.
Mit Amazon EFS wird der DNS-Name des Dateisystems automatisch mit der IP-Adresse des Mount-Ziels in der Availability Zone der verbundenen Amazon EC2-Instance aufgelöst. Dies ist eine private IP-Adresse, die nur innerhalb derselben VPC aufgelöst werden kann. Wenn die DNS-Server vom standardmäßigen, von VPC bereitgestellten DNS geändert werden, ist EFS nicht mehr in der Lage, die IP-Adresse aufzulösen, sodass die Bereitstellung per DNS fehlschlägt. Weitere Informationen finden Sie unter Auf Amazon EC2 mit einem DNS-Namen mounten.
Beispiel für ein Problem
In diesem Beispiel wird das AWS Managed Microsoft AD verwendet. Die bereitgestellten DNS-Server sind 172.31.28.100 und 172.31.4.147. Das EFS-Dateisystem wurde in derselben VPC mit dem Mount-Ziel 172.31.47.69 erstellt.
1. Vergewissern Sie sich mithilfe von netcat, dass die EC2-Instance eine Verbindung mit dem EFS-Mount-Ziel 172.31.47.69 herstellen kann:
$ nc -vz 172.31.47.69 2049 Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: Connected to 172.31.47.69:2049. Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
2. Auf dem EC2-Linux-Server können Sie EFS mithilfe des DNS-Namens mounten. Die Bereitstellung von EFS wird dann aufgehoben.
sudo mount -t efs -o tls fs-123456:/ efs df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 475M 0 475M 0% /dev tmpfs tmpfs 483M 0 483M 0% /dev/shm tmpfs tmpfs 483M 516K 483M 1% /run tmpfs tmpfs 483M 0 483M 0% /sys/fs/cgroup /dev/xvda1 xfs 8.0G 1.6G 6.5G 19% / tmpfs tmpfs 97M 0 7M 0% /run/user/0 tmpfs tmpfs 97M 0 97M 0% /run/user/1000 127.0.0.1:/ nfs4 8.0E 0 8.0E 0% /home/ec2-user/efs sudo umount /efs
3. Die Datei /etc/resolv.conf zeigt den von Amazon bereitgestellten DNS und Nameserver:
cat /etc/resolv.conf ; generated by /usr/sbin/dhclient-script search eu-west-2.compute.internal options timeout:2 attempts:5 nameserver 172.31.0.2
4. Integrieren Sie Microsoft AD auf dem EC2-Linux-Server und konfigurieren Sie dann die Active Directory-DNS-Server:
echo 'supersede domain-name-servers 172.31.28.100, 172.31.4.147;' | sudo tee --append /etc/dhcp/dhclient.conf echo 'supersede domain-search "rachel.com";' | sudo tee --append /etc/dhcp/dhclient.conf sudo dhclient -r sudo dhclient
5. Vergewissern Sie sich, dass die DNS-Server konfiguriert sind, indem Sie die Datei resolv.conf überprüfen:
cat /etc/resolv.conf options timeout:2 attempts:5 ; generated by /usr/sbin/dhclient-script search rachel.com. eu-west-2.compute.internal nameserver 172.31.28.100 nameserver 172.31.4.147
6. Führen Sie dig auf dem Dateisystem aus, um sicherzustellen, dass die private IP-Adresse des Mount-Ziels nicht zurückgegeben wird:
$ dig fs-123456.efs.eu-west-2.amazonaws.com ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> fs-123456.efs.eu-west-2.amazonaws.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 57378 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4000 ;; QUESTION SECTION: ;fs-123456.efs.eu-west-2.amazonaws.com. IN A
Hinweis: Die DNS-Anfrage wird in keinen A-Eintrag aufgelöst, und der Status lautet NXDOMAIN.
7. Das Mounten von EFS mit dem DNS-Namen schlägt fehl:
sudo mount -t efs -o tls fs-123456:/ efs Failed to resolve "fs-123456.efs.eu-west-2.amazonaws.com" - check that your file system ID is correct, and ensure that the VPC has an EFS mount target for this file system ID. See https://docs.aws.amazon.com/console/efs/mount-dns-name for more detail. Attempting to lookup mount target ip address using botocore. Failed to import necessary dependency botocore, please install botocore first.
Wenn Sie den von Amazon bereitgestellten Nameserver für die VPC verwenden, achten Sie darauf, dass er erfolgreich das Folgende auflöst:
dig @172.31.0.2 fs-123456.efs.eu-west-2.amazonaws.com ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> fs-123456.efs.eu-west-2.amazonaws.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24926 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4000 ;; QUESTION SECTION: ;fs-123456.efs.eu-west-2.amazonaws.com. IN A ;; ANSWER SECTION: fs-123456.efs.eu-west-2.amazonaws.com. 60 IN A 172.31.25.79
Behebung
Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhalten, vergewissern Sie sich, dass Sie die neueste AWS CLI-Version verwenden.
Konfigurieren Sie bedingte Weiterleitungen für Microsoft AD, um Anfragen an das von Amazon VPC bereitgestellte DNS weiterzuleiten. Diese Methode funktioniert auch für die Auflösung von DNS anderer AWS-Services in ihre privaten IP-Adressen, wenn Sie das von Active Directory bereitgestellte DNS verwenden.
Verwenden Sie dazu den AWS-CLI-Befehl, um eine bedingte Weiterleitungsregel zu erstellen. Dadurch werden alle Subdomains einer Domain an eine bestimmte DNS-Server-IP weitergeleitet. Sie können beispielsweise alle DNS-Anfragen für Subdomains von amazonaws.com an die private IP des von Amazon VPC bereitgestellten DNS weiterleiten.
Hinweis: Die von Amazon VPC bereitgestellte DNS-IP ist die reservierte IP-Adresse an der Basis des VPC-IPv4-Netzwerkbereichs plus zwei.
Um die Regel für die bedingte Weiterleitung zu erstellen, führen Sie den AWS-CLI-Befehl create-conditional-forwarder in der Befehlszeile der Linux-Instance aus, auf der Sie EFS mounten möchten:
aws ds create-conditional-forwarder --directory-id d-9c671fb35f --remote-domain-name amazonaws.com --dns-ip-addrs 172.31.0.2 --region eu-west-2
Verwenden Sie die folgenden Parameter:
- directory-id – Geben Sie die AD-Verzeichnis-ID ein.
- remote-domain-name – Sie können eine beliebige Domain angeben. Diese Regel wird auf alle FQDN angewendet, die dieser Domain oder diesen Subdomains entsprechen.
- dns-ip-addrs – Geben Sie die von Amazon VPC bereitgestellte DNS-IP ein.
Dies ermöglicht eine DNS-Auflösung des EFS-DNS und EFS kann jetzt mit dem DNS-Namen gemountet werden.
dig fs-123456.efs.eu-west-2.amazonaws.com ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> fs-123456.efs.eu-west-2.amazonaws.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24926 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4000 ;; QUESTION SECTION: ;fs-123456.efs.eu-west-2.amazonaws.com. IN A ;; ANSWER SECTION: fs-123456.efs.eu-west-2.amazonaws.com. 60 IN A 172.31.25.79
EFS kann jetzt mit dem DNS-Namen gemountet werden.
sudo mount -t efs -o tls fs-123456:/ efs [ec2-user@ip-172-31-35-167 ~]$ df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 475M 0 475M 0% /dev tmpfs tmpfs 483M 0 483M 0% /dev/shm tmpfs tmpfs 483M 520K 483M 1% /run tmpfs tmpfs 483M 0 483M 0% /sys/fs/cgroup /dev/xvda1 xfs 8.0G 1.6G 6.5G 19% / tmpfs tmpfs 97M 0 97M 0% /run/user/0 tmpfs tmpfs 97M 0 97M 0% /run/user/1000 127.0.0.1:/ nfs4 8.0E 0 8.0E 0% /home/ec2-user/efs
Relevante Informationen
Wie sehe ich eine Liste meiner Amazon EC2-Instances, die mit Amazon EFS verbunden sind?
Wie kann ich ein Amazon EFS-Volume in einer verwalteten Rechenumgebung auf AWS Batch mounten?
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor einem Jahr