Como faço para montar o Amazon EFS usando o nome EFS DNS em uma máquina Linux que está associada ao AWS Managed Microsoft AD?

7 minuto de leitura
0

Estou usando o AWS Directory Service para o AWS Managed Microsoft AD. Juntei minhas instâncias Linux do Amazon Elastic Compute Cloud (Amazon EC2) ao domínio do Active Directory. Como resultado, não consigo montar o Amazon Elastic File System (Amazon EFS) usando o nome DNS do EFS. Como posso resolver esse problema?

Breve descrição

Ao unir sua máquina Linux ao AWS Managed Microsoft AD, você configura sua instância para usar os servidores DNS do seu Active Directory.

Para o AWS Managed Microsoft AD, todas as solicitações de DNS são encaminhadas para o endereço IP dos servidores DNS fornecidos pela Amazon para sua VPC. Esses servidores DNS resolvem nomes que estão configurados em suas zonas hospedadas privadas do Amazon Route 53. Se você não estiver usando zonas hospedadas privadas do Route 53, suas solicitações de DNS serão encaminhadas para servidores DNS públicos. Se não existir uma zona hospedada privada para seus serviços da AWS, as solicitações de DNS serão encaminhadas para servidores DNS públicos. Isso significa que eles só podem resolver o DNS dos serviços da AWS para endereços IP públicos. Para mais informações, consulte Configurar o DNS.

Com o Amazon EFS, o nome DNS do sistema de arquivos é automaticamente resolvido para o endereço IP do destino de montagem na zona de disponibilidade da instância conectada do Amazon EC2. Esse é um endereço IP privado, que só pode ser resolvido na mesma VPC. Ao alterar os servidores DNS do DNS padrão fornecido pelo VPC, o EFS não consegue mais resolver o endereço IP, portanto, a montagem por DNS falha. Para mais informações, consulte Montagem no Amazon EC2 com um nome DNS.

Exemplo de problema

Este exemplo usa o AWS Managed Microsoft AD. Os servidores DNS fornecidos são 172.31.28.100 e 172.31.4.147. O sistema de arquivos EFS foi criado na mesma VPC com o destino de montagem 172.31.47.69.

1.    Usando o netcat, confirme se a instância do EC2 pode estabelecer uma conexão com o destino de montagem 172.31.47.69 do EFS:

$ 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.    No servidor Linux do EC2, você pode montar o EFS usando o nome DNS. O EFS é então desmontado.

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.    O arquivo /etc/resolv.conf mostra o DNS e o nameserver fornecidos pela Amazon:

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.    No servidor Linux do EC2, integre o Microsoft AD e, em seguida, configure os servidores DNS do Active Directory:

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.    Confirme se os servidores DNS estão configurados verificando o arquivo resolv.conf:

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.    Execute dig no sistema de arquivos para ver se o IP privado de destino da montagem não foi retornado:

$ 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

Observação: a solicitação de DNS não é resolvida para nenhum registro A e o status mostra NXDOMAIN.

7.    A montagem do EFS usando o nome DNS falha:

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.

Se você usa o servidor de nomes fornecido pela Amazon para o VPC, observe que ele resolve com êxito:

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

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.

Configure encaminhadores condicionais para seu Microsoft AD para encaminhar solicitações para o DNS fornecido pelo Amazon VPC. Esse método também funciona para resolver o DNS de outros serviços da AWS em seus endereços IP privados, se você usar o DNS fornecido pelo Active Directory.

Para fazer isso, use o comando da CLI da AWS para criar uma regra de encaminhamento condicional. Isso encaminha todos os subdomínios de um domínio para um IP de servidor DNS específico. Por exemplo, você pode encaminhar todas as solicitações de DNS para subdomínios de amazonaws.com para o IP privado do DNS fornecido pela Amazon VPC.

Observação: o IP DNS fornecido pela Amazon VPC é o endereço IP reservado na base do intervalo de rede IPv4 do VPC mais dois.

Para criar a regra do encaminhador condicional, execute o comando create-conditional-forwarder da AWS CLI na linha de comando da instância Linux na qual você deseja montar o EFS:

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

Use os seguintes parâmetros:

  • directory-id - insira o ID do diretório AD.
  • remote-domain-name - Você pode especificar qualquer domínio. Essa regra é aplicada a todos os FQDN correspondentes a esse domínio ou subdomínios.
  • dns-ip-addrs - Insira o IP DNS fornecido pela Amazon VPC.

Isso permite a resolução de DNS do EFS DNS e o EFS agora pode ser montado com o nome DNS.

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

O EFS agora pode ser montado usando o nome DNS.

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

Informações relacionadas

Como vejo uma lista das minhas instâncias do Amazon EC2 que estão conectadas ao Amazon EFS?

Como posso montar um volume do Amazon EFS no AWS Batch em um ambiente computacional gerenciado?

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos