新人研修の
講師をしてます。今日は_ネットワークはなぜつながるのか_を eXtreme Reading をナニ。
ping
IP アドレスの話の中で、実は IP アドレスって 32bit の数値で (IPv4 の場合)、この数値でも通信できたりなんかするんだよねー、と言いつつブラウザで試験してみたら通信できず。昔はできたはずなのに、と言いつつ ping では通信可能なことを確認。
ってソレを tweet したら_16 進でも可能_との RT があったので、わはははと言いつつ試してみたらできた。これはこれは、って思いつつ wiki でまとめを作らせてたら、8 進でもできまっせ、との RT を発見。別途 iputils-ping パケジのソースをげとして中身を見てみる予定。
dig
root-servers.net から順にネイムサーバを探していくというリゾルバの動作を確認中に、co.jp. とか ac.jp. なネイムサーバが無い事が判明。いつ仕様が変更になったのかなぁ。って、もしかするとそーゆー仕様、って理解自体がダウトであった可能性もあるな。
とりあえず . の ns を探して
$ dig . ns ; <<>> DiG 9.5.1-P3 <<>> . ns ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36990 ;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 14 ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 312986 IN NS g.root-servers.net. . 312986 IN NS i.root-servers.net. . 312986 IN NS k.root-servers.net. . 312986 IN NS l.root-servers.net. . 312986 IN NS h.root-servers.net. . 312986 IN NS j.root-servers.net. . 312986 IN NS b.root-servers.net. . 312986 IN NS f.root-servers.net. . 312986 IN NS c.root-servers.net. . 312986 IN NS e.root-servers.net. . 312986 IN NS a.root-servers.net. . 312986 IN NS d.root-servers.net. . 312986 IN NS m.root-servers.net. ;; ADDITIONAL SECTION: a.root-servers.net. 349305 IN A 198.41.0.4 a.root-servers.net. 150055 IN AAAA 2001:503:ba3e::2:30 b.root-servers.net. 461589 IN A 192.228.79.201 c.root-servers.net. 352162 IN A 192.33.4.12 d.root-servers.net. 590163 IN A 128.8.10.90 e.root-servers.net. 415853 IN A 192.203.230.10 f.root-servers.net. 95080 IN A 192.5.5.241 f.root-servers.net. 267647 IN AAAA 2001:500:2f::f g.root-servers.net. 584158 IN A 192.112.36.4 h.root-servers.net. 95100 IN A 128.63.2.53 h.root-servers.net. 325876 IN AAAA 2001:500:1::803f:235 i.root-servers.net. 432143 IN A 192.36.148.17 j.root-servers.net. 583422 IN A 192.58.128.30 j.root-servers.net. 584158 IN AAAA 2001:503:c27::2:30 ;; Query time: 74 msec ;; SERVER: 192.168.10.1#53(192.168.10.1) ;; WHEN: Fri Apr 16 20:47:54 2010 ;; MSG SIZE rcvd: 500 $
で、jp. の NS を探す。
$ dig @198.41.0.4 jp. ns ; <<>> DiG 9.5.1-P3 <<>> @198.41.0.4 jp. ns ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18346 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 7, ADDITIONAL: 13 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;jp. IN NS ;; AUTHORITY SECTION: jp. 172800 IN NS a.dns.jp. jp. 172800 IN NS c.dns.jp. jp. 172800 IN NS e.dns.jp. jp. 172800 IN NS d.dns.jp. jp. 172800 IN NS f.dns.jp. jp. 172800 IN NS g.dns.jp. jp. 172800 IN NS b.dns.jp. ;; ADDITIONAL SECTION: a.dns.jp. 172800 IN A 203.119.1.1 a.dns.jp. 172800 IN AAAA 2001:dc4::1 b.dns.jp. 172800 IN A 202.12.30.131 b.dns.jp. 172800 IN AAAA 2001:dc2::1 c.dns.jp. 172800 IN A 204.74.112.245 c.dns.jp. 172800 IN AAAA 2001:502:d399::245 d.dns.jp. 172800 IN A 210.138.175.244 d.dns.jp. 172800 IN AAAA 2001:240::53 e.dns.jp. 172800 IN A 192.50.43.53 e.dns.jp. 172800 IN AAAA 2001:200:c000::35 f.dns.jp. 172800 IN A 150.100.2.3 f.dns.jp. 172800 IN AAAA 2001:2f8:0:100::153 g.dns.jp. 172800 IN A 203.119.40.1 ;; Query time: 117 msec ;; SERVER: 198.41.0.4#53(198.41.0.4) ;; WHEN: Fri Apr 16 20:50:28 2010 ;; MSG SIZE rcvd: 416 $
ここで、co.jp. の NS を探そうとすると以下。
$ dig @203.119.1.1 co.jp. ns ; <<>> DiG 9.5.1-P3 <<>> @203.119.1.1 co.jp. ns ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4198 ;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;co.jp. IN NS ;; AUTHORITY SECTION: jp. 900 IN SOA z.dns.jp. root.dns.jp. 1271418301 3600 900 604800 900 ;; Query time: 52 msec ;; SERVER: 203.119.1.1#53(203.119.1.1) ;; WHEN: Fri Apr 16 20:51:07 2010 ;; MSG SIZE rcvd: 70 $
むむ。と言いつつこうすると引ける。
$ dig @203.119.1.1 google.co.jp. ns ; <<>> DiG 9.5.1-P3 <<>> @203.119.1.1 google.co.jp. ns ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39604 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;google.co.jp. IN NS ;; AUTHORITY SECTION: google.co.jp. 86400 IN NS ns4.google.com. google.co.jp. 86400 IN NS ns2.google.com. google.co.jp. 86400 IN NS ns1.google.com. google.co.jp. 86400 IN NS ns3.google.com. ;; Query time: 63 msec ;; SERVER: 203.119.1.1#53(203.119.1.1) ;; WHEN: Fri Apr 16 20:51:29 2010 ;; MSG SIZE rcvd: 112 $
これって jp. な NS がそれぞれの組織の NS な情報を持ってる、という事なんでしょうね。以前は co.jp. とか ac.jp. とかなレベルのドメインの NS が居たって思ってたんですが気のせいだったのかなぁ。
仕様が変わったらリゾルバ側の実装も変えないと、と思ったんですが、jp. な NS にドメインの NS のクエリを投げてて cache を持ってたらそれを戻す実装になってたのだとするとインパクトは皆無だな、と思いつつな帰宅の途だった訳です。