DNS 名とカスタム DNS サーバーを使用して、Amazon Elastic File System をマウントする方法を教えてください。

最終更新日: 2020 年 4 月 7 日

カスタムドメインネームシステム (DNS) サーバーを使用しています。DNS 名を使用して Amazon Elastic File System (Amazon EFS) をマウントするにはどうしたらよいですか?

簡単な説明

Amazon EFS ファイルシステムを Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにマウントする際、ファイルシステムに DNS 名を使用できます。そのためには、次の条件が満たされている必要があります。

  • 接続する EC2 インスタンスは Virtual Private Cloud (VPC) 内に置かれ、カスタム DNS サーバーが使用できるように設定される必要があります。詳細については「DHCP オプションセット」をご参照ください。
  • DNS 解決DNS ホスト名 などの DNS 設定は、カスタム VPC で有効になっています。詳細については「VPC の DNS サポートを表示および更新する」をご参照ください。

注: Amazon EFS ファイルシステムは Linux EC2 インスタンスにのみマウントできます。

解決方法

Windows DNS サーバーの使用

1.    VPC コンソールの左側ナビゲーションペインで [お使いの VPC] をクリックし、目的の VPC を選択してから、[概要] タブを開きます。IPv4 CIDR アドレスを記録します。

2.    EC2–VPC では、Amazon DNS サーバーは VPC ネットワーク範囲のベースに 2 を加えた位置にあります (たとえば、CIDR 172.31.0.0/16 の場合は 172.31.0.2) 。詳細については「Amazon DNS サーバー」をご参照ください。

3.    dnscmd コマンドに、パラメータ /zoneadd/forwarder、および、ステップ 1 で記録した IP アドレスを使用して、Windows DNS サーバーに条件付きフォワーダーを追加します。この例での IP アドレスは 172.31.0.2 です。これは、アドレスが 172.31.0.0/16 のサブネットに対し 2 番目に有効な IPv4 アドレスです。

C:\Windows\system32> dnscmd  /ZoneAdd amazonaws.com /forwarder 172.31.0.2

条件付きフォワーダーは、amazonaws.com ドメインから Windows VPC DNS サーバーへの DNS リクエストを処理します。これにより、EC2 インスタンスからの DNS クエリが Amazon DNS サーバーに転送され、Amazon EFS DNS 名に変換できるようになります。または、カスタム DNS サーバーでゾーン転送を設定することもできますが、アベイラビリティーゾーン間のトラフィックに注意してください。

4.    nslookup コマンドと、ご自身の EFS ファイルシステム ID を使用して、Windows DNS サーバーが DNS クエリを解決していることを確認します。Windows DNS サーバーで次のコマンドを実行します。

C:\Windows\system32>nslookup file-system-id.efs.aws-region.amazonaws.com

注: Amazon EFS ファイルシステム ID を確認するには、Amazon EFS コンソールを開きます。次に、左側ナビゲーションペインで File systems をクリックします。

dnsmasq の使用 – Amazon Linux AMI および Amazon Linux 2 の場合

注: カスタム DNS サーバーを使用している Amazon EFS に接続する、すべての EC2 インスタンスに対して、次のステップを実行します。

1.    dnsmasq サーバーをインストールします。

sudo yum install -y dnsmasq

2.    dnsmasqを実行する専用のシステムユーザーを作成します。

sudo groupadd -r dnsmasq
sudo useradd -r -g dnsmasq dnsmasq

注: dnsmasq は通常 root ユーザーとして実行されますが、起動後に別のユーザーに変更された場合、root 権限は失われます (デフォルトでは、ユーザーは「nobody」です)。

3.    (オプション) 以前の設定内容をバックアップするには、mv コマンドを使用して dnsmasq.conf ファイルのコピーを作成します。

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

4.    テキストエディタ (例えば vim) を使用して、設定ファイルを開きます。

sudo vim /etc/dnsmasq.conf

5.    /etc/dnsmasq.conf ファイルを次のように編集します。

listen-address=127.0.0.1
port=53
bind-interfaces
user=dnsmasq
group=dnsmasq
pid-file=/var/run/dnsmasq.pid
server=/amazonaws.com/169.254.169.253

# Name resolution options
resolv-file=/etc/resolv.dnsmasq
cache-size=500
neg-ttl=60
domain-needed
bogus-priv

注: Amazon DNS サーバーの (すべての VPC に共通な) IP アドレス 169.254.169.253、もしくは、VPC の CIDR ブロックに基づく DNS サーバーの IP アドレスのどちらかが使用できます。

6.    /etc/resolv.dnsmasq ファイルを作成します。カスタムの domain-name-servers には、DHCP オプションセットで指定している値を設定します。

sudo bash -c "echo 'nameserver x.x.x.x' >> /etc/resolv.dnsmasq"

DHCP オプションセットで指定されているすべての DNS サーバーに対して、前述のコマンドを実行します。前の例での x.x.x.x は、DHCP オプションセットに記載されている DNS の 1 つを表しています。

7.    DNS サーバー名を確認します。

# cat /etc/resolv.dnsmasq
nameserver x.x.x.x   
nameserver y.y.y.y

8.    resolv.conf ファイルに DNS サーバー名 127.0.0.1 を入力します。

# cat /etc/resolv.conf
options timeout:2 attempts:5
; generated by /usr/sbin/dhclient-script
search ec2.internal <on-prem-domain-name i.e example.com>
nameserver 127.0.0.1

9.    カスタマイズされた ネームサーバー エントリを保持するように、dhclient.conf を修正します。

sudo bash -c "echo 'supersede domain-name-servers 127.0.0.1;' >> /etc/dhcp/dhclient.conf"

注: 前出のステップは完了する必要があります。完了していない場合、インスタンスが再起動される際に、dhclientresolv.conf の値を上書きする場合があります。DNS リゾルバーとして 127.0.0.1 (dnsmasq) を使用します。詳細については、「プライベート Amazon EC2 インスタンスが Amazon Linux、Ubuntu、または RHEL で実行中です。再起動中も持続する EC2 インスタンスに静的 DNS サーバーを割り当てる方法を教えてください。」をご参照ください。

10.    ステップ 8 で行った変更を確認します。

# cat /etc/dhcp/dhclient.conf
timeout 300;
supersede domain-name-servers 127.0.0.1;

注: resolv.confにある DNS のフェイルバックエントリを取得する場合は、次の例に示すように 127.0.0.1 の後にフェイルバック DNS サーバーアドレスを追加します。

# cat /etc/dhcp/dhclient.conf
timeout 300;
supersede domain-name-servers 127.0.0.1, x.x.x.x, y.y.y.y;

11.    dnsmasq サーバーを再起動します。次のコマンドを使用して、サービスをブート起動します。

Amazon Linux AMI

sudo service dnsmasq restart
sudo chkconfig dnsmasq on

Amazon Linux 2

sudo systemctl restart dnsmasq.service
sudo systemctl enable dnsmasq.service

12.    dig コマンドを使用して、dnsmasq が正しく動作していることを確認します。

dig amazonaws.com
dig example.com

想定通りの DNS 解決が得られれば、dnsmasq キャッシュは正常に動作しています。

13.    dhclient コマンドを実行するか、インスタンスを再起動して、変更内容を適用します。

sudo dhclient

- または -

sudo reboot

14.    dig または nslookup を使用して DNS クエリを実行し、インスタンスが DNS キャッシュを使用していることを確認します。

dig amazonaws.com (AWS Specific Domain)
dig example.com (Custom domain)

詳細については「 マウントに関する追加の考慮事項」をご参照ください。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合