全世界でデータセンターを保有しているクラウドサービスが利用している技術にGeoDNSというものがあります。今回はこちらの技術の仕組みを調べます。
GeoDNSとは?
GeoDNSとは、DNSサーバに問い合わせたクライアントの物理的な位置に応じて、応答するIPアドレスを変える技術です。例えば、example-giodns.comというドメインの問い合わせを行った場合、クライアントの位置が日本であれば、東京データセンターのIPアドレスを応答し、クライアントの位置がアメリカ西部であれば、シアトルデータセンターのIPアドレスを応答するといった形です。
この技術によって、世界各国にデータセンターを持つクラウドサービス事業者は、全世界同一のURLを使っていたとしてもユーザーを最寄りのデータセンターに振り分けることが可能になり、遅延なくサービスを提供できるようになります。
クライアントの居場所はどのように調べる?
クライアントの居場所はグローバルIPアドレスから調べます。こちらはIP Geolocation (GeoIP)という仕組みで、どのグローバルIPアドレスがどの国・地域で使われているか、どのプロバイダが提供しているかというデータベースが様々な企業から提供されています。
なお、以下のURLでは無料でGeoIP情報を検索できます。
http://geoiplookup.net
GeoIPの仕組み
今回はGeoIPを利用しているドメインに対してnslookupを行い、その応答を解析しました。使用するドメインはOffice365のメール機能outlookで使われている「outlook.office365.com」です。以下の画像がnslookupを行った際のパケットキャプチャになります。
パケットキャプチャからoutlook.office365.comに対して、複数のCNAMEでドメインを関連付けていることが分かります。
具体的には、
1.
outlook.office365.com
→outlook.ha.office365.com
2.
outlook.ha.office365.com
→outlook.office365.com.g.office365.com
3.
outlook.office365.com.g.office365.com
→outlook-japan2.office365.com
となっていて、outlook-japan2.office365.comにIPアドレスが登録されていることが分かります。このケースの場合、「outlook.office365.com.g.office365.com」がGeoDNSの役割を担っていて、ユーザーのグローバルIPアドレスをGeoIPで位置を特定し、適切なCNAMEを応答する、という仕組みになっているようです。