Amazon Route 53 のレイテンシーベースルーティングにより、クライアントから遠く離れた AWS リージョンにあるサーバーが返されます。たとえば、米国のユーザーが私のウェブサイトにアクセスしようとすると、Route 53 は欧州にあるサーバーの IP アドレスを返します。クライアントが、遠く離れた AWS リージョンにルーティングされるのを防ぐにはどうすればよいですか?

Route 53 は、以下が該当する場合に、DNS クエリの場所に基づいて、最もレイテンシーが低い AWS リージョンに解決します。

Route 53 は以下に基づいてレイテンシーを計算します。

  • Route 53 の権威ネームサーバーにクエリを送信する再帰的な DNS リゾルバーの送信元 IP。
  • 再帰クエリを行うクライアントの送信元 IP (DNS リゾルバーが拡張 EDNS0-Client-Subnet をサポートしている場合)。

Route 53 のネームサーバーは、デフォルトで EDNS0-Client-Subnet をサポートします。再帰的な DNS リゾルバーが EDNS0-Client-Subnet をサポートしている場合、DNS リゾルバーはクライアントの IP アドレスの切り捨てたバージョンを Route 53 に送信します。次に、Route 53 はその切り捨てられた IP アドレスを使用して、最もレイテンシーが低い AWS リージョンを決定します。

レイテンシーが最も低い AWS リージョンは、DNS リゾルバーに物理的に最も近いリージョンではない場合があります。クライアントが DNS リゾルバーと同じ場所に存在しない場合や、リゾルバーの IP アドレスに異なるロケーション情報が含まれている場合は、最適なリージョンにルーティングされないことがあります。

以下のステップを使用して、レイテンシーベースの不要なルーティング動作をトラブルシューティングします。

1.特定の AWS リージョンの 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

2.DNS リゾルバーが、出力を使用して Anycast をサポートしていることを確認します。​毎回の出力で同じ 1 つの IP アドレスが返される場合、DNS リゾルバーは Anycast をサポートしていません。コマンドを実行するたびに毎回 IP アドレスが変わる場合、DNS リゾルバーは Anycast をサポートしています。

DNS リゾルバーが Anycast をサポートしている場合、DNS リゾルバーのエッジロケーションは複数あります。ユーザーのエッジロケーションは、最適なレイテンシーに基づいて選択されるため、最適な場所のリゾルバー IP アドレスではないことがあります。

3.クライアント IP アドレスを確認します。クライアントマシンから、ブラウザで次の URL にアクセスしてクライアント IP アドレスを表示します: https://checkip.amazonaws.com/

または、curl を使用します:

curl https://checkip.amazonaws.com/

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

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

dig +nocl TXT o-o.myaddr.l.google.com @<DNS Resolver>

Windows では nslookup を使用します。

nslookup -type=txt o-o.myaddr.l.google.com <DNS Resolver>

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

6.レスポンスの TTL 値が 60 秒であることを確認します。TTL 値が 60 秒でない場合、レスポンスはキャッシュされたレスポンスです。レスポンスの TTL 値が 60 秒になるまで dig または nslookup コマンドを繰り返します。

7.Route 53 DNS チェックツールにアクセスできる場合は、特定の DNS リゾルバー IPアドレスまたはクライアント IP アドレスからのクエリをシミュレートします。以下のクエリを使用して、Route 53 が返すレイテンシーリソースレコードセットを検索します。

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

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

注意: このツールは、Route 53 のレイテンシー測定データベースに対して直接クエリを実行し、AWS リージョンとインターネットネットワーク間の事前に計算されたレイテンシーを確認します。ツールは DNS クエリを実際にインターネットで送信したり、DNS リゾルバーに送信したりはしません。シミュレーションツールは、DNS リゾルバーが EDNS0-Client-Subnet をサポートしているかどうかは確認しません。シミュレーションツールの結果と実際の DNS クエリは異なる場合があります。

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

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

注意: インターネット上のホスト間のレイテンシーは、ネットワーク接続やルーティングの変更に伴って、時間の経過と共に変わる場合があります。

9.EDNS0-Client-Subnet をサポートするクライアントの場合、クライアント DNS クエリの終了ポイントをクライアントと地理的に近い場所に変更してください。リゾルバーが EDNS0-Client-Subnet をサポートしている場合、クライアント DNS クエリはクライアントの場所とは異なる場所で終了する可能性があり、予期しないルーティング動作が生じることがあります。

EDNS0-Client-Subnet をサポートしないクライアントの場合は、クライアントが使用する DNS リゾルバーをクライアントと地理的に近い場所にある別の再帰的な DNS リゾルバーに変更してください。リゾルバーが EDNS0-Client-Subnet をサポートしていない場合、クライアント DNS クエリはクライアントとは地理的に異なる場所の DNS リゾルバーを使用する可能性があり、予期しないルーティン動作が生じることがあります。

10.(オプション) DNS リゾルバーが EDNS0-Client-Subnet をサポートしていない場合は、EDNS0-Client-Subnet をサポートするパブリックの再帰的な DNS リゾルバーに切り替えます。次に、Route 53 の古いレイテンシールーティングのレスポンス結果と新しい結果を比較します。たとえば、現在 EDNS0-Client-Subnet をサポートするパブリック DNS リゾルバーとしては、GoogleDNS (8.8.8.8 および 8.8.4.4)、OpenDNS (208.67.222.222 および 208.67.220.220) の 2 つがあります。

トラブルシューティング例

会社には、2 つの Elastic Load Balancer のレイテンシーベースのルーティングレコードがバージニア (us-east-1) とアイルランド (eu-west-1) にあります。米国のユーザーは欧州にある会社の DNS リゾルバーを使用するか、VPN を介して欧州の会社オフィスに接続します。

会社の DNS リゾルバーが EDNS0-Client-Subnet データ (切り詰められたクライアント IP アドレス情報) を権威ネームサーバーに送信できない場合、Route 53 は欧州の DNS リゾルバー IP アドレスがクエリの送信元であるとみなします。次に Route 53 はレイテンシーデータベースでルックアップを実行し、アイルランドのロードバランサーのレイテンシーが最も低いと間違って判断します。

一方、会社の DNS リゾルバーが EDNS0-Client-Subnet データを送信できる場合、Route 53 は米国の切り詰められたクライアント IP を DNS クエリの送信元とみなします。次に Route 53 はレイテンシーデータベースでルックアップを実行し、バージニアのロードバランサーのレイテンシーが最も低いと正しく判断します。


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2017 年 09 月 06 日

更新日: 2018 年 11 月 20 日