跳至内容

如何在已加入 AWS Managed Microsoft AD 的 Linux 计算机上使用 Amazon 提供的 DNS 名称挂载 Amazon EFS?

4 分钟阅读
0

我使用 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) 中。

完成以下步骤:

  1. 要确认 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.
  2. 在 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
  3. 要在 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
  4. 要检查您是否在 /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
  5. 运行以下命令检查 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 名称来挂载文件系统,则挂载将失败。

  6. 要使用 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。

要创建条件转发器规则,请完成以下步骤:

  1. 在要挂载文件系统的 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 地址。

  2. 要确认 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
  3. 要使用 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

相关信息

为 Simple AD 配置 DNS 服务器

使用 DNS 名称在 Amazon EC2 上挂载

如何查看已连接到 Amazon EFS 的 Amazon EC2 实例列表?

我要如何在托管计算环境中将 Amazon EFS 卷挂载到 Amazon Batch?

AWS 官方已更新 2 年前