Google Public DNSについて調べてみた

2009/12/4-1

Google Public DNSが発表されていました。 「Official Google Blog: Introducing Google Public DNS

本当は書籍執筆〆切に追われていて首が回ってないはずなのですが、あまりに面白そうなので思わず調べてしまいました。

これって、DNSキャッシュのクラウド化なのだろうと思います。

利点は?

利点は「パフォーマンス向上」と「セキュリティ向上」の2つがあるようです。

パフォーマンス

Performance Benefits
http://code.google.com/intl/ja/speed/public-dns/docs/performance.html

原稿〆切がヤバくて、ざっと流し読みをしただけなのであまり自信がありませんが、どうも世界規模で運用して、世界的にQueryが多い所を優先的にキャッシュ更新しておくので、非常に効率が良くなるという感じの話だと思いました。

最後の方にあった一文が印象的でした。

Google Public DNS is hosted in data centers worldwide, and uses anycast routing to send users to the geographically closest data center.

恐らく「世界中」というのがポイントなのだろうと思います。 今の、国内ISPレベルでのDNSキャッシュだと、そのDNSを利用する人々の間でのキャッシュであり、例えばヨーロッパのWebサイトなどを見る時にはキャッシュミスすることが多いと思われます。

GoogleがWebでのキャッシュ技術(というかCDN)をDNSキャッシュに応用して、世界規模でDNSキャッシュを持つようになったらどうなるか?という壮大なプロジェクトなのかも知れません。

DNSを通じてCDNも???

Performance Benefitsの所に以下のような一文もあります。

That is, if a content provider hosts mirrored sites around the world, that provider's nameservers will return the IP address in closest proximity to the DNS resolver.

これって、世界規模でGoogle以外のCDN対応も出来ちゃうと言ってますよね??? もしかして、そのうちAkamaiを超えてしまうのでしょうか???

セキュリティ

こちらもざっと流し読みです。 間違いがあったらご指摘頂ければ幸いです。

Security Benefits
http://code.google.com/intl/ja/speed/public-dns/docs/security.html

セキュリティに関してはDNSキャッシュポイズニングとDoSに関してが書いてあります。 主にカミンスキーアタック関連のキャッシュ毒入れネタと、DNSアンプリファイアー(特にEDNS0)の「少ない労力で倍々にトラフィック増やして攻撃」の話題が書いてあります。

Google Public DNSは主にプリフェッチをするから、セキュリティ的にも以下のメリットがあるぜ!とも書いてあります。

  • Strictly prioritize prefetch traffic above user traffic, thereby rate-limiting traffic to nameservers.
  • Partition caches according to the type of traffic, preventing attackers from writing garbage entries to the prefetch cache; and preventing the prefetch system from reading poisoned delegations from the user cache.
  • Keep enough popular names in the cache to satisfy most user queries, continuing to serve users even when under attack.

Adding entropy to requests, Removing duplicate queries, Rate-limiting queriesという手法でDNSのセキュリティを守ってるようです。

凄いなぁと思ったのが次の一文です。 これって、24-48時間の間なんですかね?

Google Public DNS, never allows more than a single outstanding request for the same query name, query type, and destination IP address.

プライバシー

「Googleがpublic DNSを!」という話を聞くとどうしても「これでWeb以外のQueryも全部ゲットだぜ!」という連想をしてしまう下賎な私ですが、そのような問い合わせに対する回答も事前に用意されていました。

Google Public DNS : Your Privacy : http://code.google.com/intl/ja/speed/public-dns/privacy.html

それによると、ログにはtemporaryとpermanentの2種類があり、個人情報と結びつくようなIPアドレス情報などは24-48時間で消去されるようです。 これらを24-48時間保持するのは主にDDoSなどを防ぐためとのことでした。

permanentに保持するのは主に統計情報のようです。 Webサイトには、保持し続けるログとして以下の情報が明記されていました。

  • Request domain name, e.g. www.google.com
  • Request type, e.g. A (which stands for IPv4 record), AAAA (IPv6 record), NX, TXT, etc.
  • Transport protocol on which the request arrived, i.e. TCP or UDP
  • Client's AS (autonomous system or ISP), e.g. AS15169
  • User's geolocation information: i.e. geocode, region ID, city ID, and metro code
  • Response code sent, e.g. SUCCESS, SERVFAIL, NXDOMAIN, etc.
  • Whether the request hit our frontend cache
  • Whether the request hit a cache elsewhere in the system (but not in the frontend)
  • Absolute arrival time in seconds
  • Total time taken to process the request end-to-end, in seconds
  • Name of the Google machine that processed this request, e.g. machine101
  • Google target IP to which this request was addressed, e.g. one of our anycast IP addresses (no relation to the user's IP)

8.8.8.8???

8から開始するクラスAのIPアドレスは確かGoogle所有じゃなかったと思って、radbで調べてみました。

Level3から8.8.8.0/24と8.8.4.0/24を購入?してるようです。



route:      8.8.8.0/24
descr:      Google
origin:     AS15169
notify:     noc@google.com
mnt-by:     MAINT-AS15169
changed:    noc@google.com 20091103
source:     RADB

route:         8.0.0.0/9
descr:         Proxy-registered route object
origin:        AS3356
remarks:       auto-generated route object
remarks:       this next line gives the robot something to recognize
remarks:       L'enfer, c'est les autres
remarks:       
remarks:       This route object is for a Level 3 customer route
remarks:       which is being exported under this origin AS.
remarks:       
remarks:       This route object was created because no existing
remarks:       route object with the same origin was found, and
remarks:       since some Level 3 peers filter based on these objects
remarks:       this route may be rejected if this object is not created.
remarks:       
remarks:       Please contact routing@Level3.net if you have any
remarks:       questions regarding this object.
mnt-by:        LEVEL3-MNT
changed:       roy@Level3.net 20060203
source:        LEVEL3


あと、8.8.4.0/24 は 8.8.8.0/24 同様に次のような感じでした。



route:      8.8.4.0/24
descr:      Google
origin:     AS15169
notify:     noc@google.com
mnt-by:     MAINT-AS15169
changed:    noc@google.com 20091109
source:     RADB

route:         8.0.0.0/9
descr:         Proxy-registered route object
origin:        AS3356
remarks:       auto-generated route object
remarks:       this next line gives the robot something to recognize
remarks:       L'enfer, c'est les autres
remarks:       
remarks:       This route object is for a Level 3 customer route
remarks:       which is being exported under this origin AS.
remarks:       
remarks:       This route object was created because no existing
remarks:       route object with the same origin was found, and
remarks:       since some Level 3 peers filter based on these objects
remarks:       this route may be rejected if this object is not created.
remarks:       
remarks:       Please contact routing@Level3.net if you have any
remarks:       questions regarding this object.
mnt-by:        LEVEL3-MNT
changed:       roy@Level3.net 20060203
source:        LEVEL3


traceroute

まず最初に日本国内の別々の2カ所からpingやtracerouteをしてみました。 別々の2カ所は、それぞれ別ASですが、tracerouteをしたASの次のASがGoogleが所有しているAS15169でした。 ASレベルでは両方とも「Googleが隣に居る」状態ですね。

で、pingやtracerouteの結果なのですが、どうも8.8.8.8は太平洋は超えてない気がしました。

8.8.8.8(逆引きは google-public-dns-a.google.com)に対してpingをすると40msec〜70msecぐらいで応答が帰ってきます。 太平洋を超えていて100msec以下とはあまり思えません。 ただ、国内にあるのかどうかは知りません。

何か、次の結果を見るとアジア地域では台湾にありそうな気がします。

その他、世界中からtracerouteしてみました

Looking Glassを使って世界各地から8.8.8.8をTracerouteしてみました。 世界中から高速に応答してますね。 凄いですね。。。


Abovenet(アメリカ)

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 40 byte packets
 1  so-2-1-0.mpr2.ams5.nl.above.net (64.125.31.254)  0.706 ms  0.587 ms  0.564 ms
 2  so-2-0-0.mpr1.lhr2.uk.above.net (64.125.27.177)  6.351 ms  7.230 ms  7.294 ms
 3  xe-1-1-0.mpr1.lhr1.uk.above.net (64.125.27.150)  5.981 ms  58.400 ms  13.661 ms
 4  72.14.217.93 (72.14.217.93)  108.082 ms  6.054 ms  6.133 ms
 5  209.85.252.76 (209.85.252.76)  6.284 ms  6.355 ms  6.277 ms
 6  72.14.232.134 (72.14.232.134)  13.153 ms 66.249.95.170 (66.249.95.170)  14.117 ms 72.14.232.134 (72.14.232.134)  13.079 ms
 7  209.85.251.231 (209.85.251.231)  13.231 ms  13.222 ms 72.14.236.191 (72.14.236.191)  36.229 ms
 8  209.85.243.73 (209.85.243.73)  13.376 ms 209.85.243.81 (209.85.243.81)  18.063 ms 209.85.243.73 (209.85.243.73)  28.517 ms
 9  google-public-dns-a.google.com (8.8.8.8)  12.375 ms  14.095 ms  16.414 ms


DIX-IE(日本)

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 38 byte packets
 1  jp-gw.apnic.net (202.12.28.190)  0.306 ms  0.265 ms  0.324 ms
 2  as15169.dix-ie.jp (202.249.2.189)  0.500 ms  0.527 ms  1.579 ms
 3  209.85.241.64 (209.85.241.64)  0.743 ms 209.85.241.68 (209.85.241.68)  1.087 ms  0.958 ms
 4  209.85.250.86 (209.85.250.86)  33.468 ms 209.85.250.90 (209.85.250.90)  31.208 ms 209.85.250.86 (209.85.250.86)  31.661 ms
 5  209.85.250.101 (209.85.250.101)  32.213 ms 209.85.243.23 (209.85.243.23)  32.076 ms 209.85.243.21 (209.85.243.21)  32.058 ms
 6  209.85.241.154 (209.85.241.154)  42.708 ms 209.85.241.158 (209.85.241.158)  35.213 ms  37.185 ms
 7  google-public-dns-a.google.com (8.8.8.8)  32.223 ms  32.291 ms  32.071 ms


PTTmetro(ブラジル)

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 38 byte packets
 1  ar03.registro.br (200.160.7.129)  1.892 ms  2.373 ms  1.056 ms
 2  ar01.agr.registro.br (200.160.0.145)  0.740 ms  1.139 ms  1.195 ms
 3  ge-0-1-0.0.gw03.registro.br (200.160.0.243)  0.366 ms  0.392 ms  0.325 ms
 4  as15169.sp.ptt.br (200.219.130.55)  0.741 ms  0.646 ms  0.706 ms
 5  209.85.249.232 (209.85.249.232)  0.870 ms 209.85.250.246 (209.85.250.246)  1.569 ms  1.127 ms
 6  72.14.233.89 (72.14.233.89)  1.494 ms 72.14.233.91 (72.14.233.91)  1.608 ms 72.14.233.95 (72.14.233.95)  1.583 ms
 7  64.233.175.58 (64.233.175.58)  1.466 ms 64.233.175.62 (64.233.175.62)  7.037 ms 64.233.175.58 (64.233.175.58)  3.504 ms
 8  google-public-dns-a.google.com (8.8.8.8)  1.482 ms  1.464 ms  1.454 ms


MSK-IX(Moscow IX,ロジア)

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 38 byte packets
 1  194.190.133.33 (194.190.133.33)  0.472 ms  0.442 ms  0.507 ms
 2  msk-ix-gw2.google.com (193.232.246.232)  1.071 ms  1.145 ms  1.161 ms
 3  72.14.239.254 (72.14.239.254)  37.924 ms  38.172 ms  38.013 ms
 4  72.14.236.251 (72.14.236.251)  52.963 ms  103.694 ms  53.006 ms
 5  72.14.232.203 (72.14.232.203)  52.928 ms  52.792 ms 72.14.232.201 (72.14.232.201)  52.445 ms
 6  72.14.233.210 (72.14.233.210)  52.958 ms 72.14.233.206 (72.14.233.206)  60.755 ms  56.971 ms
 7  google-public-dns-a.google.com (8.8.8.8)  53.166 ms  52.867 ms  53.048 ms


Netnod-IX(スウェーデン)

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 38 byte packets
 1  rrc-gw.sth.netnod.se (194.146.105.181)  0.285 ms  0.239 ms  0.173 ms
 2  10ge-2-1.outer-c-gw.sth.netnod.se (77.72.228.13)  0.237 ms  0.204 ms  0.265 ms
 3  htg0-core-1.gigabiteth0-0-0.swip.net (194.68.123.21)  0.363 ms  0.290 ms  0.349 ms
 4  kst-core-1.tengigabiteth8-0-0.swip.net (130.244.218.154)  0.491 ms  0.518 ms  0.577 ms
 5  avk-core-2.tengigabiteth4-1.swip.net (130.244.39.10)  0.614 ms  0.602 ms  0.661 ms
 6  some.stockholm.router.google.com (130.244.200.46)  1.864 ms  0.687 ms  0.622 ms
 7  209.85.252.186 (209.85.252.186)  0.740 ms  0.783 ms  0.778 ms
 8  209.85.254.153 (209.85.254.153)  28.716 ms  28.722 ms 209.85.248.132 (209.85.248.132)  29.021 ms
 9  64.233.174.55 (64.233.174.55)  29.588 ms 64.233.174.53 (64.233.174.53)  28.499 ms 64.233.174.29 (64.233.174.29) 28.400 ms
10  209.85.255.249 (209.85.255.249)  29.468 ms 209.85.255.245 (209.85.255.245)  39.127 ms 209.85.250.5 (209.85.250.5) 34.776 ms
11  google-public-dns-a.google.com (8.8.8.8)  29.468 ms  29.509 ms  29.310 ms


APOL (Asia Pasific OnLine, 台湾)

1 211-76-96-253.ebix.net.tw (211.76.96.253) 0.363 ms 0.331 ms
2 72.14.196.13 (72.14.196.13) 0.576 ms 0.545 ms
3 209.85.243.30 (209.85.243.30) 1.765 ms 209.85.243.26 (209.85.243.26) 0.572 ms
4 209.85.250.101 (209.85.250.101) 1.632 ms 209.85.250.103 (209.85.250.103) 1.714 ms
5 209.85.241.162 (209.85.241.162) 2.964 ms 209.85.241.158 (209.85.241.158) 3.591 ms 
6 google-public-dns-a.google.com (8.8.8.8) 1.972 ms 2.139 ms 

余談ですが、このtraceroute結果って、Google AS内はどれも凄いバリバリのECMP(Equal Cost Multi Path)ですね。。。

個人的な感想

どこまで高速化するかは、ちょっとわかりません。

ただ、見た感じでは世界中にDNS専用CDNを張り巡らしているように思えるので、日本(というか自分と同じISP内で同じDNSを使っているグループ)から滅多にQueryが飛ばないような名前解決をする場合には早いのかも知れません。

これって、要はGoogleが持っているWebでのCDN技術+世界規模の超巨大バックボーンネットワークを駆使して世界最大DNSを作っちゃったんですよね???

次世代インターネットアーキテクチャ系の研究がここ数年色々出現していますが、そういう研究が実際に実を結ぶ前にGoogleそのものがインターネットの大部分になっちゃうんじゃなかろうか?とさえ思ってしまう今日この頃です。 ある意味、インターネット全体のSingle Point of Failure化なのかも知れませんが、でも、それだけ凄いということですよね。。。 いや、本当に凄いと思いました。

関連

追記

Googleの未発表Public DNS?「4.3.2.1」

追記2

Google Public DNS解説と個人的妄想

追記3 (2011年9月)

2011年9月16日現在、Google Public DNSは日本国内にもあるようです。

今はGoogle Public DNSが日本国内にあるらしい

最近のエントリ

過去記事

過去記事一覧

IPv6基礎検定

YouTubeチャンネルやってます!