如何在已加入 AWS Managed Microsoft AD 的 Linux 计算机上使用 Amazon 提供的 DNS 名称挂载 Amazon EFS?
我使用 AWS Directory Service for Microsoft Active Directory。我将我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例加入了 Active Directory 域。现在,我无法使用 EFS DNS 名称来挂载 Amazon Elastic File System (Amazon EFS)。
简短描述
AWS Managed Microsoft AD 会将所有 DNS 请求转发到 Amazon 为您的 Amazon Virtual Private Cloud (Amazon VPC) 提供的 DNS 服务器的 IP 地址。这些 DNS 服务器将解析您在 Amazon Route 53 私有托管区中配置的名称。如果您不使用 Route 53 私有托管区,则 AWS Managed Microsoft AD 会将您的 DNS 请求转发到公共 DNS 服务器。因此,DNS 请求将仅解析到公共 IP 地址。
Amazon EFS 文件系统域名会自动解析到同一 VPC 中挂载目标的 IP 地址。当您从 Amazon 提供的默认 DNS 更改 DNS 服务器时,文件系统将无法解析 IP 地址,且 DNS 挂载将失败。
解决方法
配置您的 DNS 服务器
以下示例使用 AWS Managed Microsoft AD。DNS 服务器为 172.31.28.100 和 172.31.4.147。文件系统与挂载目标 172.31.47.69 位于同一虚拟私有云 (VPC) 中。
完成以下步骤:
-
要确认 Linux EC2 实例是否可以连接到 Amazon EFS 挂载目标 IP 地址 172.31.47.69,请运行以下命令:
nc -vz 172.31.47.69 2049Ncat: 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. -
在 EC2 Linux 服务器上,使用 DNS 名称挂载文件系统:
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在 EC2 Linux 服务器上,/etc/resolv.conf 文件将显示 Amazon 提供的 DNS 和名称服务器:
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 -
要在 EC2 Linux 服务器上集成 AWS Managed Microsoft AD 并配置 Active Directory DNS 服务器,请运行以下命令:
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 -
要检查您是否在 /etc/resolv.conf 文件中配置了正确的 DNS 服务器,请运行以下命令:
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 -
运行以下命令检查 EFS DNS 名称是否返回 NXDOMAIN:
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**注意:**在前面的输出中,DNS 请求未解析到 A 记录,且状态为 NXDOMAIN。如果您使用 DNS 名称来挂载文件系统,则挂载将失败。
-
要使用 DNS 来挂载您的文件系统,请确认 DNS 名称可解析到 Amazon 为 VPC 提供的名称服务器:
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
创建条件转发器规则
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
要挂载您的文件系统,请为您的 AWS Managed Microsoft AD 配置条件转发器,以将 DNS 请求转发到 Amazon 提供的 DNS。然后,当您使用 Active Directory 提供的 DNS 时,您可以将来自 AWS 服务的 DNS 请求解析到私有 IP 地址。
**注意:**Amazon 提供的 DNS IP 地址是 VPC IPv4 网络范围起始处的预留 IP 地址加 2。
要创建条件转发器规则,请完成以下步骤:
-
在要挂载文件系统的 Linux EC2 实例上运行 AWS CLI 命令 create-conditional-forwarder:
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使用以下参数:
对于 directory-id,输入您的 Active Directory ID。
对于 remote-domain-name,指定任意域。该规则适用于与您的域或子域匹配的所有完全限定域名 (FQDN)。
对于 dns-ip-addrs,输入 Amazon 提供的 DNS IP 地址。 -
要确认 DNS 解析是否解析到 EFS 挂载目标的 IP 地址,请运行 dig 命令。输出将与以下内容类似,并显示了文件系统 DNS 的 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 -
要使用 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
