国別にアクセスを振り分けたい

Last-modified: Sun, 31 Dec 2017 21:33:12 JST (292d)

サーバへのアクセスを国別で分けたいことがあります。
やり方としてはIP割当先を調べて、.htaccessなどで振り分けるなどがありますが、IPの割り当ては適宜変わるので、都度メンテナンスをする必要があります。
ここでは、Route53のGeolocation Routing機能を使って、国別に返すレコードを変えることで振り分けます。
勿論IPの割り当てをベースとしているので完全ではない点に注意です。
(そもそも場所とIPは対になっていないし)
また、DNSベースですので、どこぞのキャッシュDNSがIPをキャッシュしたり、hostsに書かれていたりすると無力です。

それでは、ここでは、中国からのアクセスのみS3上にホストしたページを返し、それ以外はサーバのレコードを返す設定をします。

  • ドメインは別途取得済みでDNSはRoute53を参照している設定済みとします。

デフォルトレコードの作成

  1. Route53のGeolocation Routingを使用するには、まずデフォルトのレコードを作成する必要があります。
    Create Record Setをクリックします。
    r53-19.jpg
  2. まずは動作確認のため、普通にAレコードを設定します。
    r53-20.jpg
  3. 見ることができました。
    r53-21.jpg
  4. 次に、先ほど設定したレコードを選択し、下のほうにあるRouting PolicyからGeolocationを選択。LocationにDefaultを選択し、SIDに適当な名前をセットします。
    r53-24.jpg
  5. 次に中国用レコードを作成します。ここでは、S3バケットで静的コンテンツを配信したいを参照し、先ほどと同じホスト名の公開バケット作成済みとします。
    Route53の画面よりAliasにチェックを入れます。すると、Alias Targetから先ほどのS3がプルダウンで出てきますので選択します。
    ここで出てこない場合、S3が正しく設定されていません。
    勿論別サーバへ飛ばしたい場合はS3ではなくIP指定でも構いません。
    r53-22.jpg
  6. 下のほうへスクロールすると、Routing Policyとあるので、Geolocationを選択。LocationにChinaを指定し、SIDに適当な名前をセットします。
    r53-23.jpg
  7. これで、中国用レコードが作成されます。
    注意点として、必ず先にデフォルトレコードを作成しないと、DNSレコードが重複しているエラーが出て作成できません。
    r53-25.jpg
  8. 最後に動作テストをします。実際に中国のIPからアクセスできれば確実なのですが、そうもいかないので、Route53のテスト機能を使います。
    Test Record Setをクリックします。
    r53-26.jpg
  9. Typeに先ほど作成したAレコードを選択。ResolverIPaddressに適当な中国のIPを入れますと、S3のIPが返ってくることがわかります。
    r53-27.jpg
  10. では中国以外のIPを入れると、ちゃんとサーバのIPが返ってくることが確認できます。
    r53-28.jpg

Counter: 331, today: 2, yesterday: 1

このページの参照回数は、331です。