facebook.com の名前解決を、少し追ってみた。


権威 DNSwhois と dig で調べると、こんな感じ。
ns4.facebook.com 69.171.245.32
ns3.facebook.com 66.220.151.20
ns5.facebook.com 66.220.145.65


googlefacebook の URL を調べると、日本版は ja-jp.facebook.com となっている。
そのまま dig で引くと…

;; ANSWER SECTION:
ja-jp.facebook.com. 2038 IN CNAME star.facebook.com.
star.facebook.com. 13 IN A 69.171.229.76

こんな感じで CNAME を使っている。


この IP アドレス…なんか怖い。
一つしか使ってないのか?
そんなことはない。


dig を trace 付きで実行してみると…

ja-jp.facebook.com. 3600 IN CNAME star.facebook.com.
star.facebook.com. 1800 IN NS glb2.facebook.com.
star.facebook.com. 1800 IN NS glb1.facebook.com.


ja-jp というホストは star というホストの CNAME で、その CNAME 自体は2種類の DNS で管理されている…と出てくる。


じゃ、この 2 種類の DNS に対する IPアドレスは?
そのまま引くと、こんな感じ。

URL IPアドレス
glb1.facebook.com. 69.171.239.10
glb2.facebook.com. 69.171.255.10

この IP アドレスに対して star.facebook.com を引いてみる。
dig @69.171.239.10 star.facebook.com. +short
dig @69.171.239.10 star.facebook.com. +short
dig @69.171.239.10 star.facebook.com. +short



こんな感じで何回も引くと、IPアドレスがころころ変わる。

69.171.224.39
69.171.224.55
69.171.224.87
69.171.228.72
69.171.228.76
69.171.229.72
69.171.229.76
69.171.234.23
69.171.234.39
69.171.234.71

あんまり負荷をかけすぎても迷惑をかけることになるので、ちょっとだけ…
自分の手元に返ってきた IP アドレスは、上記のリストになる。
たぶん、もっと多いんだろうな。
最初は、なんでDNSラウンドロビンを使わないんだろう…と思ったけど、大量に IP アドレスを利用しているんなら納得。


でも、この実装って、どうやっているんだろう?
BIND とかを使うなら、前提として IP アドレスの分だけ DNS サーバが必要になる気がする。
ロードバランサで、クエリを複数の DNS に投げれば返ってくる答えを変えられる。
でも、あまりにも大量すぎて実感がわかない。
専用のアプライアンスがあるんかな?