Durch die Nutzung von AWS re:Post stimmt du den AWS re:Post Nutzungsbedingungen

Wie mounte ich Amazon EFS mit dem EFS-DNS-Namen auf einem Linux-Computer, der mit AWS Managed Microsoft AD verbunden ist?

Lesedauer: 6 Minute
0

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?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren