Route 53 の位置情報ルーティング問題をトラブルシューティングするにはどうすればよいですか?

最終更新日 : 2021 年 5 月 26 日

DNS クエリは、別の AWS リージョンにあるウェブサーバーの IP アドレスを返します。例えば、米国のユーザーは、ヨーロッパにあるウェブサーバーの IP アドレスにルーティングされます。Amazon Route 53 の位置情報ルーティングの問題のトラブルシューティングと解決方法を教えてください。

簡単な説明

Route 53 の位置情報ルーティングの問題は、次の原因で発生します。

  • 位置情報ルーティング設定にデフォルトの場所がありません
  • EDNS0 の edns-Client サブネット拡張をサポートしていない DNS リゾルバー (ユーザーの場所の特定が不正確になります)
  • 地理的に多様な DNS リゾルバー
  • グローバルに伝播されていないリソースレコードの DNS 変更

解決方法

1.    Route 53 ホストゾーンのリソースレコードがユースケースに正しく構成されていること、およびデフォルトのリソースレコードセットがあることを確認してください。Route 53 コンソールから、 Route 53 ホストゾーン設定で指定されたデフォルトの場所を確認します。

次のサンプル出力について考えてみましょう。

>> dig images.example.com
            
; <<>> DiG
9.8.2rc1-RedHat-9.8.2-0.37.rc1.45.amzn1 <<>> images.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,
id: 51385
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1,
ADDITIONAL: 0

;; QUESTION SECTION
;images.example.com.                   IN            A

;; AUTHORITY SECTION:
images.example.com.      60          IN           SOA        ns-1875.awsdns-42.co.uk.awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400

;; Query time: 65 msec
;; SERVER: 172.31.0.2#53(172.31.0.2)
;; WHEN: Tue Feb  7 22:02:30 2017
;; MSG SIZE  rcvd: 124

ジオロケーションルーティング構成にデフォルトの場所が指定されていない場合、DNS 応答は rcode フィールドに対して NOERROR を返します。この場合、[回答] セクションには結果はありません。この問題を修正するには、位置情報ルーティング設定にデフォルトの場所を追加します。

2.    DNS リゾルバーの IP アドレス範囲を確認するには、11 秒間、次のコマンドを 5 回または 6 回実行します。毎回、必ず出力を書き留めます。

Linux または macOS では dig を使用します。

for i in {1..10}; do dig +short resolver-identity.cloudfront.net; sleep 11; done;

Windows では nslookup を使用します。

nslookup resolver-identity.cloudfront.net

3.    以下のいずれかのコマンドを使用して、DNS リゾルバーが EDNS0-Client-Subnet をサポートしているかどうかを確認します。必ず出力を書き留めます。

Linux または macOS では dig を使用します。

dig +nocl TXT o-o.myaddr.l.google.com

Windows では nslookup を使用します。

nslookup -type=txt o-o.myaddr.l.google.com

出力の Answer セクションで返された最初の TXT レコードを確認します。最初の TXT レコードの値は、DNS リゾルバーの IP アドレスです。2 番目の TXT レコードがない場合、DNS リゾルバーは EDNS0-Client-Subnet をサポートしません。2 番目の TXT レコードがある場合、DNS リゾルバーは EDNS0-Client-Subnet をサポートします。リゾルバーは切り捨てられたクライアントサブネットの IP アドレス (/24 または /32) を提供し、 Route 53 の権威ネームサーバーに送信します。

4.    チェックツールの Route 53 テストレコードセットを使用して、特定の要求に対して返されるリソースレコードを決定します。詳細については、「チェックツールを使用する」を参照してください。Amazon Route 53 が DNS クエリに応答する方法を確認してください

DNS リゾルバーが EDNS0-Client-Subnet をサポートしていない場合は、ツールの値として DNS リゾルバー IP アドレスを指定します。

DNS リゾルバーが EDNS0-Client-Subnet をサポートしている場合は、ツールの値として EDNS0 クライアントサブネット IP アドレス を指定します。その他のオプションを選択し、サブネットマスクを指定します。リゾルバー IP アドレスを指定しないでください。

5.    (オプション) チェックツールにアクセスできない場合は、dig を使用して Route 53 の権威ネームサーバーに EDNS0-Client-Subnet をサポートするでホストゾーンについて問い合わせを行います。出力を使用して、ソース IP アドレスから最もレイテンシーが低い AWS リージョンを決定します。

dig geo.example.com +subnet=<Client IP>/24 @ns-xx.awsdns-xxx.com +short

6.    Route 53 は、EDNS0edns-client-Subnet 拡張をサポートしています。再帰名またはローカルネームサーバーは、クライアントのソース IP サブネットで DNS ルックアップを行うために、DNS クエリに edns-client-subnet を追加します。このデータが要求とともに渡されない場合、 Route 53は DNS リゾルバーの送信元 IP アドレスを使用してクライアントの場所を概算します。次に、 Route 53 は、リゾルバーの場所の DNS レコードを使用してジオロケーションクエリに応答します。EDNS データが Route 53 に渡されず、クライアントが地理的に多様な再帰ネームサーバを使用している場合、DNS クエリに不正なリソースレコードを提供する最適な場所とは言えません。

この構成を修正するには、 edns-client-subnet をサポートする再帰的な DNS サーバーを変更します。 DNS 解決を実行し、出力を共有します。再帰的な DNS サーバーが EDNS クライアントサブネットをサポートしていない場合は、サポートしているサブネットを使用してみてください。例えば、オプションには、Google DNS、OpenDNS、および Amazon DNS サーバーをサポートする EDNS が含まれます。EC2-Classic では、Amazon DNS サーバーは 172.16.0.23 にあります。EC2-VPC の場合、Amazon DNS サーバーは VPC ネットワーク範囲と2つのベースに配置されます。

7.     MaxMind の Web サイト上の GeoIP データベース、または任意の GeoIP データベースを使用して、クライアントサブネット IP アドレスの地理的位置を確認します。DNS リゾルバがクライアントのパブリック IP アドレスに地理的に近いことを確認します。

8.    OpenDNS サイトの CacheCheck などのツールを使用して、DNS 伝播に関する問題を確認します。

9.    (オプション)地理ベースのルーティングレコードが Route 53 ヘルスチェックに関連付けられているかどうか、および (エイリアスレコードに対して) Evaluate Target Health が有効になっているかどうかを確認します。一方または両方が true の場合、 Route 53 はレイテンシーが最も低い正常なエンドポイントを返します。

Route 53 コンソールで Route 53 ヘルスチェックのステータスを確認します。ターゲットヘルスの評価( ETH )が有効になっている場合は、レコードエンドポイントのヘルスステータスを確認します。Route 53 は、少なくとも 1 つのバックエンドインスタンスが正常であれば、ETH が有効になっている Classic Load Balancer のエンドポイントが正常であるとみなします。Application Load Balancer および Network Load Balancer の場合、ターゲットを持つすべてのターゲットグループには、正常とみなされる正常なターゲットが少なくとも 1 つ含まれている必要があります。登録済みのターゲットを持たないターゲットグループは、異常とみなされます。いずれかのターゲットグループに不健全なターゲットしか含まれていない場合、ロードバランサーは異常であるとみなされます。

例えば、米国、北米、およびすべての場所 ([場所] がデフォルト) の米国内のテキサス州のレコードがあるとします。クエリがテキサスから発信され、テキサスのエンドポイントが正常でない場合、 Route 53 は、正常なエンドポイントを持つレコードが見つかるまで、米国、北米、およびすべての場所のレコードがその順序でチェックされます。米国レコードが正常であれば、 Route 53 はこのエンドポイントを返します。それ以外の場合、 Route 53 はデフォルトレコードを返します。すべてのロケーションのレコードを含む、適用可能なすべてのレコードが正常でない場合、 Route 53 は、最小の地理的リージョンのレコードの値を使用して DNS クエリに応答します。

注: エイリアスされた位置情報リソースレコードへの変更は、反映されるまで最大 60 秒かかります。