CloudFrontがEDNS-Client-Subnetをサポートしたので試してみた

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Amazon CloudFrontがEDNS-Client-Subnetをサポートしました。

EDNS-Client-Subnetの説明については、上記のAmazon Web Servicesブログに詳しく載っていますのでここでは割愛し、どんな動きになるのか試してみた結果をお伝えします。

edns-client-subnetオプションが使えるdigをセットアップする

edns-client-subnet用のbindのパッチが公開されていますので、EC2をAmazon LinuxでLaunchし、このパッチを適用したbindをインストールします。

# yum install -y gcc patch
# wget wilmer.gaa.st/edns-client-subnet/bind-9.9.3-dig-edns-client-subnet-iana.diff
# wget www.mirrorservice.org/sites/ftp.isc.org/isc/bind9/9.9.3/bind-9.9.3.tar.gz
# tar xzvf bind-9.9.3.tar.gz
# cp bind-9.9.3-dig-edns-client-subnet-iana.diff bind-9.9.3
# cd bind-9.9.3/
# patch -p0 < bind-9.9.3-dig-edns-client-subnet-iana.diff 
# ./configure --without-openssl
# make
# make install
[/bash]
<h2 id="toc-dig">digしてみる</h2>
<p>name serverにGoogle DNSを指定し、<tt>+client</tt>オプションで米国のIPアドレスを付与して、cloudfrontのFQDNをdigしてみます。</p>

<p>次に、日本国内のIPアドレスを<tt>+client</tt>オプションで付与してdigしてみます。</p>

<p>もう一回。今度はオランダです。</p>

<p>ANSWER SECTIONで戻ってきているAレコードが違うものになっています。試しに日本国内(弊社)からtracerouteで試したところ、</p>
<ul>
<li>日本 = 7ホップ</li>
<li>オランダ = 12ホップ</li>
<li>米国 = 15ホップ</li>
</ul>
<p>でした。確かに近いAレコードが返ってきている、と言えそうです。</p>
<p>例えば、弊社の上位プロバイダのDNS経由で名前解決したときも、Google DNS(8.8.8.8)で名前解決したときも、ほぼ同様のAレコード群が返ってきます。この事からもEDNS-Client-Subnetが有効に動作していることが確認出来ます。</p>

$ host dy3mycrtq15xf.cloudfront.net
dy3mycrtq15xf.cloudfront.net has address 54.230.115.14
dy3mycrtq15xf.cloudfront.net has address 54.230.112.237
dy3mycrtq15xf.cloudfront.net has address 54.240.164.176
dy3mycrtq15xf.cloudfront.net has address 54.230.115.200
dy3mycrtq15xf.cloudfront.net has address 54.230.113.180
dy3mycrtq15xf.cloudfront.net has address 54.230.114.98
dy3mycrtq15xf.cloudfront.net has address 54.230.115.10
dy3mycrtq15xf.cloudfront.net has address 54.230.115.55

$ host dy3mycrtq15xf.cloudfront.net 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:

dy3mycrtq15xf.cloudfront.net has address 54.230.112.42
dy3mycrtq15xf.cloudfront.net has address 54.230.112.237
dy3mycrtq15xf.cloudfront.net has address 54.240.164.182
dy3mycrtq15xf.cloudfront.net has address 54.230.112.21
dy3mycrtq15xf.cloudfront.net has address 54.230.114.119
dy3mycrtq15xf.cloudfront.net has address 54.230.112.29
dy3mycrtq15xf.cloudfront.net has address 54.240.164.76
dy3mycrtq15xf.cloudfront.net has address 54.230.114.213

まとめ

Amazon Web Services ブログにも書いてありましたが、昨今Google DNSなどの地理的に分散されたパブリックDNSサービスを利用される方が増えています。そういった利用者を最適なエッジロケーションに誘導することが出来るようになるので、Webサイト提供者にとっても、利用者にとっても、良い機能拡張だと思います。