如何在與 AWS Managed Microsoft AD 連線的 Linux 電腦上使用 Amazon 提供的 DNS 名稱來掛載 Amazon EFS?

4 分的閱讀內容
0

我使用適用於 Microsoft Active Directory 的 AWS Directory Service。我已將 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. 若要整合 AWS Managed Microsoft AD 並在 EC2 Linux 伺服器上設定 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 Command Line Interface (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 位址加二。

若要建立條件轉寄站規則,請完成下列步驟:

  1. 在要掛載檔案系統的 Linux EC2 執行個體上執行 create-conditional-forwarder AWS CLI 命令:

    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-address,輸入 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 磁碟區掛載至 AWS Batch?

AWS 官方
AWS 官方已更新 4 個月前