Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
DNS のしくみと、部分的または断続的な DNS 障害をトラブルシューティングする方法を教えてください。
部分的または断続的に発生する DNS 障害をトラブルシューティングしたいです。
解決策
DNS の概要
DNS は、www.example.com などの覚えやすい名前を 192.0.2.1 などの数値の IP アドレスに変換し、ユーザーをインターネットアプリケーションにルーティングします。このプロセスを「DNS 解決」と呼びます。 詳細については、「DNS とは」を参照してください。
部分的、一時的、または断続的な DNS 障害のシナリオ
場合によっては、クライアントで DNS 障害が短期間または断続的に発生します。DNS の部分的な障害を引き起こす可能性がある一般的なシナリオには、次のものがあります。
レジストラでネームサーバーが正しく設定されていない
レジストラで 1 つ以上のネームサーバーの設定が誤っていることがあります。whois 検索では、ドメインのレジストラに設定されているネームサーバーを取得できます。DNS 解決中に、登録されたネームサーバーが応答しなかったり予期しない情報で応答した場合は、ローカルリゾルバーから SERVFAIL メッセージが返されます。一部のケースでは、ローカルリゾルバーが、設定ミスのない別のネームサーバーを使用してリクエストを試みる場合があります。この場合、リゾルバーは想定通りの DNS 応答を取得できます。
ローカルリゾルバーが間違ったネームサーバーを TTL 期間中にキャッシュし、誤って設定されたネームサーバーに次のクエリを送信する場合もあります。
ホストゾーンでネームサーバーが変更された
ドメインの NS レコードがホストゾーンで誤って設定されていると、部分的な DNS 障害が発生する場合があります。既存のネームサーバーが更新されたか、NS レコードの値に他のネームサーバーが追加された状態が該当します。リゾルバーが間違ったネームサーバーを使用してドメインを解決しようとすると、部分的な DNS 障害が発生する場合があります。
クライアントの DNS リゾルバーがドメインを解決できない
Linux における resolv.conf などのリゾルバー構成ファイルで、誤ったリゾルバーが設定されている場合があります。Amazon Virtual Private Cloud (Amazon VPC) の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにあるドメインを解決する際、その EC2 インスタンスは resolv.conf で定義されたネームサーバーを使用します。
Amazon 提供の DNS サーバーが DNS クエリをスロットリングしている
Amazon Provided DNS サーバーには、Elastic ネットワークインターフェイスごとに 1 秒あたり 1024 パケットの制限が適用されます。Amazon Provided DNS サーバーでは、この制限を超えるトラフィックはすべて拒否されます。DNS スロットリングが原因で、DNS が断続的にタイムアウトします。この問題を解決するには、インスタンスでキャッシュを有効にするか、アプリケーションの DNS 再試行タイマーを増やします。
インターネットからのドメイン URL は解決されるが、EC2 インスタンスからは解決されない
次の操作を実行した後は、ドメインに対する DNS クエリは、常にプライベートホストゾーンから解決されるようになります。
- ドメインと同じ名前のプライベートホストゾーンを作成します。
- VPC を AmazonProvidedDNS で設定したプライベートホストゾーンおよび VPC DHCP オプションに関連付けます。
ドメインに対してクエリされたレコードがプライベートホストゾーンに存在しない場合、DNS クエリは失敗します。なお、DNS クエリはパブリックドメインには転送されません。DNS レコードはパブリックドメインゾーンにあるため、インターネットからは解決されます。
Route 53 の DNS ファイアウォールルール設定が誤っている
次の条件のいずれかが、いずれかのドメインに当てはまる場合は、ドメインで Amazon Route 53 DNS ファイアウォールが設定されているかどうかを確認してください。
- インターネットで解決する
- パブリックリゾルバー (リゾルバーの IP は 1.1.1.1 または 8.8.8.8 ) 経由で解決する
- 仮想プライベートサーバー (VPS) からは解決されない
Route 53 リゾルバーエンドポイントの設定が誤っている
Route 53 リゾルバーのアウトバウンドエンドポイントとリゾルバールールは、特定の DNS クエリをオンプレミスの DNS サーバーに送信するように設定できます。Route 53 エンドポイント、リゾルバールール、オンプレミス DNS サーバーが正しく設定されていることを確認します。詳細については、「Route 53 リゾルバーのエンドポイントでの、DNS 解決に関する問題のトラブルシューティング方法を教えてください」を参照してください。
Linux ベースのオペレーティングシステムでの DNS 障害をトラブルシューティングする
dig コマンドを使用して、ホストの /etc/resolv.conf ファイルに設定されているクライアント DNS サーバーを検索します。
$ dig www.amazon.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> www.amazon.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13150 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.amazon.com. IN A ;; ANSWER SECTION: www.amazon.com. 41 IN A 54.239.17.6 ;; Query time: 1 msec ;; SERVER: 10.108.0.2#53(10.108.0.2) ;; WHEN: Fri Oct 21 21:43:11 2016 ;; MSG SIZE rcvd: 48
上記の例の回答セクションは、54.239.17.6 が www.amazon.com 用 HTTP サーバーの IP アドレスであることを示しています。+trace ** 変数を追加すると、dig コマンドで DNS レコードを再帰的に検索することもできます。+trace** 変数を含む dig コマンドの例を次に示します。
$ dig +trace www.amazon.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> +trace www.amazon.com ;; global options: +cmd . 518400 IN NS J.ROOT-SERVERS.NET. . 518400 IN NS K.ROOT-SERVERS.NET. . 518400 IN NS L.ROOT-SERVERS.NET. ... ;; Received 508 bytes from 10.108.0.2#53(10.108.0.2) in 31 ms com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. ... ;; Received 492 bytes from 193.0.14.129#53(193.0.14.129) in 93 ms amazon.com. 172800 IN NS pdns1.ultradns.net. amazon.com. 172800 IN NS pdns6.ultradns.co.uk. ... ;; Received 289 bytes from 192.33.14.30#53(192.33.14.30) in 201 ms www.amazon.com. 900 IN NS ns-1019.awsdns-63.net. www.amazon.com. 900 IN NS ns-1568.awsdns-04.co.uk. www.amazon.com. 900 IN NS ns-277.awsdns-34.com. ... ;; Received 170 bytes from 204.74.108.1#53(204.74.108.1) in 87 ms www.amazon.com. 60 IN A 54.239.26.128 www.amazon.com. 1800 IN NS ns-1019.awsdns-63.net. www.amazon.com. 1800 IN NS ns-1178.awsdns-19.org. ... ;; Received 186 bytes from 205.251.195.251#53(205.251.195.251) in 7 ms
ネームサーバーのみを返すクエリを実行することもできます。
$ dig -t NS www.amazon.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> -t NS www.amazon.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48631 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.amazon.com. IN NS ;; ANSWER SECTION: www.amazon.com. 490 IN NS ns-1019.awsdns-63.net. www.amazon.com. 490 IN NS ns-1178.awsdns-19.org. www.amazon.com. 490 IN NS ns-1568.awsdns-04.co.uk. www.amazon.com. 490 IN NS ns-277.awsdns-34.com. ;; Query time: 0 msec ;; SERVER: 10.108.0.2#53(10.108.0.2) ;; WHEN: Fri Oct 21 21:48:20 2016 ;; MSG SIZE rcvd: 170
上記の例では、www.amazon.com には次の 4 つの権威ネームサーバーがあります。
- ns-1019.awsdns-63.net
- ns-1178.awsdns-19.org
- ns-1568.awsdns-04.co.uk
- ns-277.awsdns-34.com
これらの 4 つのサーバーはいずれも、www.amazon.com のホスト名に関する問い合わせに対し、信頼された回答を提供します。dig コマンドを実行し、特定のネームサーバーを直接ターゲットにします。特定のドメインのすべての権威ネームサーバーが正しく応答するかどうかを確認します。
権威ネームサーバー の 1 つである ns-1019.awsdns-63.net に対して www.amazon.com に関するクエリを実行した場合の出力例を次に示します。サーバーからの応答は、www.amazon.com が 54.239.25.192 でアクセスできることを示しています。
$ dig www.amazon.com @ns-1019.awsdns-63.net.; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> www.amazon.com @ns-1019.awsdns-63.net. ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31712 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;www.amazon.com. IN A ;; ANSWER SECTION: www.amazon.com. 60 IN A 54.239.25.192 ;; AUTHORITY SECTION: www.amazon.com. 1800 IN NS ns-1019.awsdns-63.net. www.amazon.com. 1800 IN NS ns-1178.awsdns-19.org. www.amazon.com. 1800 IN NS ns-1568.awsdns-04.co.uk. ... ;; Query time: 7 msec ;; SERVER: 205.251.195.251#53(205.251.195.251) ;; WHEN: Fri Oct 21 21:50:00 2016 ;; MSG SIZE rcvd: 186
次の行は、ns-576.awsdns-08.net が amazon.com の権威ネームサーバーであることを示しています。
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0
aa フラグが表示されていることは、ネームサーバー ns-1019.awsdns-63.net がリソースレコード www.amazon.com に対して信頼された回答を提供したことを示します。
Windows ベースのオペレーティングシステムでの DNS 障害をトラブルシューティングする
nslookup ユーティリティを使用して、ホスト名に関連付けられている IP アドレスを返します。
C:\>nslookup www.amazon.comServer: ip-10-20-0-2.ec2.internal Address: 10.20.0.2 Non-authoritative answer: Name: www.amazon.com Address: 54.239.25.192
nslookup ユーティリティを使用してホスト名の権威ネームサーバーを特定するには、-type=NS フラグを使用します。
C:\>nslookup -type=NS www.amazon.comServer: ip-10-20-0-2.ec2.internal Address: 10.20.0.2 Non-authoritative answer: www.amazon.com nameserver = ns-277.awsdns-34.com www.amazon.com nameserver = ns-1019.awsdns-63.net www.amazon.com nameserver = ns-1178.awsdns-19.org ...
www.amazon.com の ns-277.awsdns-34.com が www.amazon.com へのリクエストに正しく応答しているかどうかを確認するには、次の構文を使用します。
C:\>nslookup www.amazon.com ns-277.awsdns-34.comServer: UnKnown Address: 205.251.193.21 Name: www.amazon.com Address: 54.239.25.200
- 言語
- 日本語

関連するコンテンツ
- 質問済み 10ヶ月前