0 / 4
名前 → IPアドレス:AとAAAA
人はgoogle.comのような名前を使うが、コンピューター同士はIPアドレスで通信する。そのため接続する前に、DNSサーバーにその名前のIPアドレスを問い合わせる。何を問い合わせるかはレコードの種類で決める。A(Address)はIPv4アドレスを、AAAAはIPv6アドレスを返す。
例:同じ名前google.comを、Aで1回、AAAAで1回問い合わせる。値は実際に照会した結果だ。
1 / 4
自分のPC → DNSサーバー:Aレコードを問い合わせる
自分のPCがgoogle.comのAレコードを問い合わせる。名前に対応するIPv4アドレスを求める問い合わせだ。
2 / 4
DNSサーバー → 自分のPC:IPv4アドレス
DNSサーバーがIPv4アドレス142.250.197.46を答える。ドットで区切った数字が4つあり、1つが8ビットなので合計32ビットだ。
3 / 4
自分のPC → DNSサーバー:AAAAレコードを問い合わせる
同じ名前を今度はAAAAで問い合わせる。AAAAはIPv6アドレスを返すレコードだ。
4 / 4
DNSサーバー → 自分のPC:IPv6アドレス
DNSサーバーがIPv6アドレスを答える。コロンで区切った16進数で書き、0だけが続く部分は::と省略する。長さは128ビットだ。IPv4アドレスの4倍の長さなので、Aを4つ並べてAAAAと呼ぶ。
1 / 4
自分のPC → DNSサーバー:Aレコードを問い合わせる
自分のPCがwww.github.comのIPv4アドレスを知るため、Aレコードを問い合わせる。
2 / 4
DNSサーバー:別名かどうか確かめる
DNSサーバーがwww.github.comを調べると、AレコードはなくCNAMEレコードがある。「この名前は別名で、正式な名前はgithub.com」という意味だ。
3 / 4
DNSサーバー:正式な名前でもう一度探す
別名だけではIPアドレスがわからない。そこでDNSサーバーが正式な名前github.comのAレコードをもう一度探し、20.200.245.247を得る。
4 / 4
DNSサーバー → 自分のPC:2行まとめて答える
DNSサーバーが別名の行とアドレスの行をまとめて返す。自分のPCは20.200.245.247に接続する。AはIPアドレスをそのまま答え、CNAMEは別の名前を答えてもう一度探させる。
1 / 4
自分のPC → DNSサーバー:PTRレコードを問い合わせる
DNSには常に名前で問い合わせる。そこでIPアドレス8.8.4.4の数字を逆順に書き、末尾に逆引き専用の名前in-addr.arpaを付けて問い合わせる。ドメイン名は右端(.com)がいちばん広い範囲だが、IPアドレスは左端がいちばん広い範囲だ。そのため数字を逆順にして順番をそろえる。
2 / 4
DNSサーバー → 自分のPC:名前
DNSサーバーが8.8.4.4の名前はdns.googleだと答える。
3 / 4
自分のPC → DNSサーバー:正引きでAを問い合わせる
今度は受け取った名前dns.googleのAレコードを問い合わせる。名前からIPアドレスを引く正引きで、PTRとは逆の向きだ。
4 / 4
DNSサーバー → 自分のPC:IPアドレス
dns.googleのIPv4アドレスとして8.8.8.8と8.8.4.4が返る。最初に問い合わせたIPが含まれているので、両方向が一致する。メールサーバーはこのように相手のIPを両方向から確かめることがある。
1 / 4
送信側メールサーバー → DNSサーバー:MXレコードを問い合わせる
送信側メールサーバーが、宛先アドレスの@の後ろのnaver.comを取り出してMXレコードを問い合わせる。
2 / 4
DNSサーバー → 送信側メールサーバー:メールサーバー名
DNSサーバーがメールサーバー名mx6.mail.naver.comを答える。前の20は優先度で、数字が小さいほど先に使う。実際の答えにはmx4・mx5も優先度20で並んでいるので、3台のどれに送ってもよい。
3 / 4
送信側メールサーバー → DNSサーバー:Aレコードを問い合わせる
MXの答えはIPアドレスではなくサーバー名だ。そこでその名前のIPアドレスをAレコードでもう一度問い合わせる。
4 / 4
DNSサーバー → 送信側メールサーバー:IPアドレス
IPアドレス202.131.24.29が返る。送信側メールサーバーはこのアドレスにメールを届ける。
1 / 4
受信側メールサーバー → DNSサーバー:TXTレコードを問い合わせる
受信側メールサーバーが、送信者アドレスのドメインnaver.comのTXTレコードを問い合わせる。
2 / 4
DNSサーバー → 受信側メールサーバー:SPFの一覧
答えのうちv=spf1で始まる行がSPFだ。ip4:の後ろがメールを送ってよいIPの範囲だ。111.91.135.0/27は先頭27ビットが同じIPで、111.91.135.0から111.91.135.31までの32個だ。実際の一覧にはこうした範囲が8つある。
3 / 4
受信側メールサーバー:1通目を確かめる
1通目は111.91.135.10から来た。一覧の111.91.135.0〜31の範囲内なので、SPFの確認を通過する。
4 / 4
受信側メールサーバー:2通目を確かめる
2通目は203.0.113.50から来た。一覧のどこにもないので、naver.comになりすましたメールだと疑う。naver.comは一覧の最後に~allを書き、「一覧の外なら疑え(soft fail)」と決めている。そのため受信側はメールを受け取ったうえで疑わしい印を付けるか、迷惑メールフォルダーに入れる。最後が-allなら拒否してもよいという意味だ。
1 / 5
自分のPC → DNSサーバー:NSレコードを問い合わせる
自分のPCがnaver.comのNSレコードを問い合わせる。
2 / 5
DNSサーバー → 自分のPC:ネームサーバーの一覧
naver.comを担当するネームサーバーとしてns1・ns2・ns3が返る。1台が止まっても答えられるように複数台を置く。
3 / 5
自分のPC → DNSサーバー:SOAレコードを問い合わせる
今度はnaver.comゾーンの代表情報をSOAレコードで問い合わせる。
4 / 5
DNSサーバー → 自分のPC:ゾーンの代表情報
SOAの答えには値が7つ順に入っている。先頭は原本を持つプライマリネームサーバーだ。次は管理者メールだ。レコードではメールアドレスもドメイン名のように書くので、@の位置にドットが入る。そのためwebmaster.naver.comの最初のドットを@に置き換えて、webmaster@naver.comと読む。シリアル番号はレコードを直すたびに上げる番号で、よく日付の後ろにその日の修正番号を付ける。
5 / 5
SOA:4つの時間の値
セカンダリネームサーバーはプライマリの原本をコピーしておいて答える。リフレッシュ間隔(6時間)ごとにシリアル番号を確かめ、番号が上がっていれば原本をコピーし直す。確認に失敗したら、リトライ間隔(30分)ごとにやり直す。有効期限(14日)を過ぎても失敗が続くと、コピーではもう答えない。最小TTL(Time To Live、3分)は、「その名前やレコードはない」という答えをほかのDNSサーバーが覚えておく最長の時間だ。