Yahooを参考にDNSサーバの経路を辿ろう

# はじめに
WEBではDNSサーバによりIPアドレスを管理しています。具体的にDNSサーバの役割はわかっても、実際にどこでどのような動作をしているのかがわからなかったため今回調査しました。

# 経路
家などでブロードバンドルータを使ってインターネトにアクセスする例について考えます。経路は以下のようになります。BBルータにリクエストが流れ、契約しているISPの提供するDNSキャッシュサーバにリクエストをプロキシします。プロキシされたサーバが名前解決を行い、IPアドレスをBBルータに返し、ISPの提供するネットワークを通じて目的ホストにHTTPリクエストが送信されます。

![sample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693671/e8823bcc-d255-3cc0-866a-d0731b2e3495.png)

# DIGコマンド
DIGコマンドとは、ネームサーバに名前解決を行なってもらいさまざまな情報を取得するためのツールです。

## 動作確認
以下コマンドを入力します。#result以下が結果です。結果を確認すると、ルートネームサーバは13種類（エニーキャストにより実際は13台以上存在する。）あることがわかります。;;Received以下を見ると、2001:a7ff...と記述されています。これはISPのDNSキャッシュサーバのことです。家庭に存在するBBルータはここにリクエストをプロキシします。(whoisコマンドで情報を確認できます。)

次のJP,以下には8種類のNSレコードが存在します。;;Received以下を見ると、k.root-server.netという記述があり、k.root-server.netからこれらの情報ご返されたことがわかります。最後にyahoo.co.jpのNSレコードがあり、そのサーバからIPアドレス一覧を取得している。

```
dig yahoo.co.jp + trace

# result
; <<>> DiG 9.10.6 <<>> yahoo.co.jp +trace
;; global options: +cmd
.			63895	IN	NS	f.root-servers.net.
.			63895	IN	NS	l.root-servers.net.
.			63895	IN	NS	g.root-servers.net.
.			63895	IN	NS	h.root-servers.net.
.			63895	IN	NS	i.root-servers.net.
.			63895	IN	NS	d.root-servers.net.
.			63895	IN	NS	b.root-servers.net.
.			63895	IN	NS	c.root-servers.net.
.			63895	IN	NS	m.root-servers.net.
.			63895	IN	NS	a.root-servers.net.
.			63895	IN	NS	j.root-servers.net.
.			63895	IN	NS	k.root-servers.net.
.			63895	IN	NS	e.root-servers.net.
;; Received 695 bytes from 2001:a7ff:5f01::a#53(2001:a7ff:5f01::a) in 39 ms

jp.			172800	IN	NS	a.dns.jp.
jp.			172800	IN	NS	b.dns.jp.
jp.			172800	IN	NS	c.dns.jp.
jp.			172800	IN	NS	d.dns.jp.
jp.			172800	IN	NS	e.dns.jp.
jp.			172800	IN	NS	f.dns.jp.
jp.			172800	IN	NS	g.dns.jp.
jp.			172800	IN	NS	h.dns.jp.
jp.			86400	IN	DS	22111 8 2 E5A43534B9BEAFBF35D6C6B3EAA1E9AE7FE2B4D8961252126FD67B51 72322286
jp.			86400	IN	RRSIG	DS 8 1 86400 20240621170000 20240608160000 5613 . SzzicLaiaogjMr4z8lJVRVr3zBzD8/v++P+2XEeXUJcjdKKAKNv5Fndx B+As0QhreSW/Aw7lgZrQWI2s4eCl7e/bJqMD80bosrHwmcbaLX2pD+MD LTFfns05vYHr+u9ITxL3hlYGfxziiXrkYqmGIT+k8kCNnfcVlkvwJs8c lR7lzpP5vgSZwaatnRrw3KtfEHUvek2MD54ZDE/BC5eU2Ai7uOVvHTJ0 8v2T3X6/Zql8Nk4Hc71i2YQ1EVgLgY+lVG4OIvZsDpwpJnSo51v6jN2y zJ/J+lsDalW1YYQ/X6MxBaDmg5jSjyGE6jFF1ZwPfhc4wW3Ho+ayEg27 qMOYGQ==
;; Received 831 bytes from 2001:7fd::1#53(k.root-servers.net) in 14 ms

yahoo.co.jp.		86400	IN	NS	ns12.yahoo.co.jp.
yahoo.co.jp.		86400	IN	NS	ns02.yahoo.co.jp.
yahoo.co.jp.		86400	IN	NS	ns01.yahoo.co.jp.
yahoo.co.jp.		86400	IN	NS	ns11.yahoo.co.jp.
K8D2HBB9BVGEH428NRIO4QRIUB51NDG0.jp. 900 IN NSEC3 1 1 0 - K8DJ2S43IBDJ8QSPIAHOJJSSIAQQKBFT  TXT RRSIG
K8D2HBB9BVGEH428NRIO4QRIUB51NDG0.jp. 900 IN RRSIG NSEC3 8 2 900 20240708174502 20240608174502 51420 jp. VR0oehE7cjO5gzJxYVKW3s26PzCmE5IMsgo7eNOHJOxEw20kXueImxO0 gwIV6BnJH4aVQyZOggfWE5AvA5gaduFfFMluXGZWaVmp43WlfN7Ng0FV Nwz9iK77zuE7rkIndhq6JQ8PFW8uF8N7P0/SY4z6UvRo7pzAo8q4oY/S NEs=
HG8MCG11TQ1P86S8GAF7PJ1ABF86IMQU.jp. 900 IN NSEC3 1 1 0 - HGE83BO7UA9T9BUGIKS4BSGEISVOK7T9  NS DS RRSIG
HG8MCG11TQ1P86S8GAF7PJ1ABF86IMQU.jp. 900 IN RRSIG NSEC3 8 2 900 20240708174502 20240608174502 51420 jp. HFqSMWqTgVedg113puHph6cKCaLPYKgoLn3k1g2zXYpWN++b7CjXt35A fFgoKlEdXShQBa1qeSYdQ7Z8kxQIoU3D3Di3lIX8hNzNdl/dXEdBjaWC iLjNa5UXrmIDobrI+dRWsFA2jqjf0/E2V5BocOdyXNBf2uOqS4mscLD4 fC4=
;; Received 662 bytes from 161.232.72.25#53(h.dns.jp) in 179 ms

yahoo.co.jp.		300	IN	A	183.79.219.124
yahoo.co.jp.		300	IN	A	182.22.24.124
yahoo.co.jp.		300	IN	A	182.22.16.251
yahoo.co.jp.		300	IN	A	182.22.16.123
yahoo.co.jp.		300	IN	A	183.79.250.123
yahoo.co.jp.		300	IN	A	183.79.250.251
yahoo.co.jp.		300	IN	A	182.22.24.252
yahoo.co.jp.		300	IN	A	182.22.25.252
yahoo.co.jp.		300	IN	A	182.22.28.252
yahoo.co.jp.		300	IN	A	182.22.31.252
yahoo.co.jp.		300	IN	A	183.79.217.124
yahoo.co.jp.		300	IN	A	182.22.25.124
yahoo.co.jp.		300	IN	A	183.79.219.252
yahoo.co.jp.		300	IN	A	183.79.249.252
yahoo.co.jp.		300	IN	A	183.79.249.124
yahoo.co.jp.		300	IN	A	183.79.248.124
yahoo.co.jp.		300	IN	A	183.79.248.252
yahoo.co.jp.		300	IN	A	182.22.31.124
yahoo.co.jp.		900	IN	NS	ns11.yahoo.co.jp.
yahoo.co.jp.		900	IN	NS	ns02.yahoo.co.jp.
yahoo.co.jp.		900	IN	NS	ns01.yahoo.co.jp.
yahoo.co.jp.		900	IN	NS	ns12.yahoo.co.jp.
;; Received 468 bytes from 124.83.255.101#53(ns12.yahoo.co.jp) in 5 ms
```

# おまけ
下記のようにwhoisコマンドで設定されていたDNSキャッシュサーバの情報を確認するとフレッツ光と出てきたので、実際にBBルータがDNSキャッシュサーバの役割を担っているわけではないことがわかりますね。

```
whois 2001:a7ff:5f01::a

#result(一部だけ)
inet6num:       2001:a000::/21
netname:        FLETS-WEST-CIDR-BLK-JP
```

# 参考文献
* https://flets.com/square/sq_dns.html
* https://www.secuavail.com/kb/windows-linux/linux-dig-dns/