ユーザーが私のウェブサイトにアクセスすると、Amazon Route 53 のレイテンシーベースルーティングにより、遠く離れたリージョンにあるサーバーの IP アドレスが返されます。たとえば、米国のユーザーが私のウェブサイトにアクセスしようとすると、Route 53 から欧州にあるサーバーのレコードが返されます。ユーザーが最適でないリージョンにルーティングされる問題のトラブルシューティング方法を教えてください。

複数の AWS リージョンのエンドポイントを同じリソースレコードに関連付けてレイテンシーベースルーティングポリシーを使用すると、Route 53 は DNS クエリの場所に基づいてレイテンシーが最も低いリージョンをルーティング先として解決します。

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

  • Route 53 の権威ネームサーバーにクエリを送信する再帰的な DNS リゾルバーの送信元 IP。
  • 再帰クエリを行うクライアントの送信元 IP (DNS リゾルバーが拡張 EDNS0-Client-Subnet をサポートしている場合のみ)。
    注意: Route 53 のネームサーバーは、デフォルトで EDNS0-Client-Subnet をサポートします。EDNS0-Client-Subnet をサポートする再帰的な DNS リゾルバーから Route 53 に切り詰められた IP アドレスが送信されると、Route 53 はこのクライアント IP アドレスを使用してレイテンシーが最も低いリージョンを判断します。

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

DNS リゾルバーの IP と Anycast サポートを確認する

特定のリージョンのリゾルバーで使用されている 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

注意: 毎回の出力で同じ 1 つの IP アドレスが返される場合、DNS リゾルバーは Anycast をサポートしていません。コマンドを実行するたびに毎回 IP アドレスが変わる場合、DNS リゾルバーは Anycast をサポートしています。DNS リゾルバーが Anycast をサポートしている場合、DNS リゾルバーのエッジロケーションは複数あります。ユーザーのエッジロケーションは、最適なレイテンシーに基づいて選択されるため、最適な場所のリゾルバー IP アドレスではないことがあります。

クライアント IP アドレスを確認する

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

または、AWS コマンドラインインターフェイス (AWS CLI) で curl を使用します。

curl http://checkip.amazonaws.com/

DNS リゾルバーが EDNS0-Client-Subnet をサポートしているかどうかを確認する

先に進む前に、DNS リゾルバーが前述した Anycast をサポートしていることを確認します。次に、以下のコマンドを使用して 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>

クエリの出力で、Answer セクションで返される最初の TXT レコードは Anycast をアドバタイズしている最も近い DNS サーバーです。

  • 2 番目の TXT レコードがない場合、DNS リゾルバーは EDNS0-Client-Subnet をサポートしていません。
  • 2 番目の TXT レコードがある場合、DNS リゾルバーは EDNS0-Client-Subnet をサポートしています。リゾルバーは切り詰められたクライアントサブネット (/24 または /32) を返し、次にこのサブネットを Route 53 の権威ネームサーバーに送信します。

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

DNS リゾルバーまたはクライアント IP アドレスからのクエリをシミュレートする

Route 53 DNS チェックツールを使用して、特定の DNS リゾルバーまたはクライアント 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 クエリは異なる場合があります。

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

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

EDNS0-Client-Subnet をサポートするクライアント

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

クライアント DNS クエリの終了場所をクライアントと地理的に近い場所に変更してください。

EDNS0-Client-Subnet をサポートしないクライアント

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

クライアントが使用する DNS リゾルバーをクライアントと地理的に近い場所にある別の再帰的な DNS リゾルバーに変更してください。

オプション: DNS リゾルバーが EDNS0-Client-Subnet をサポートしていないために Route 53 でユーザーが最適でないリージョンにルーティングされる場合は、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 つの 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-08-15