zenn.dev
Open in
urlscan Pro
35.190.77.180
Public Scan
URL:
https://zenn.dev/koyamaso/books/cbc1f9f136634c/viewer/ee11a9
Submission: On August 16 via manual from JP — Scanned from JP
Submission: On August 16 via manual from JP — Scanned from JP
Form analysis
0 forms found in the DOMText Content
とりあえず動かす DNS Zenn とりあえず動かす DNS 87 01digコマンドを使ってみよう02DNSの全体像を把握しよう(名称編)03DNSの全体像を把握しよう(実践編)04再帰検索が出来るか確認しよう05フルサービスリゾルバを構築しよう06参照するフルサービスリゾルバを変更しよう07systemd-resolvedを使ってみよう08権威サーバを構築しよう Chapter 02 DNSの全体像を把握しよう(名称編) koyamaso 2021.06.22に更新 このチャプターの目次 1. グルーレコード(glue record) DNS(Domain Name System)とは、ホスト情報の分散型データベースです。 ドメイン名空間はUnixファイルシステムのように木構造になっており、ルートは空文字列""です。 ドメイン名は.で区切られ、区切られた文字列がノード(頂点)を表します。 ドメイン名.はルートを表します(.の右に空文字列が存在すると考えればよいです) Unixファイルシステムでは /etcのように/から始まるパスを絶対パスと呼びます。 これと同じように、.で終わるドメイン名をFQDNと呼びます。 そのノードを根とする部分木のことをドメインと呼びます。 たとえば、comドメインから見たとき、google.com.は * google * google.com. と表せます。 google.comはgoogle.com.com.になってしまうことに注意してください。 ネームサーバは、あるゾーンに対して完全な情報を格納しています。 このとき、ネームサーバはゾーンに関する権威を持っているといいます。 ルートについて権威を持っているネームサーバのことをルートサーバと呼びます。 12の独立した組織が13のルートサーバを管理しています。 https://root-servers.org/ また、ネームサーバは自身が権威を持つゾーンの一部(サブドメイン)を他のネームサーバに委任することが出来ます。これは委任するサブドメインのゾーンを切り離し、そのゾーンの権威を移譲しているとも言えます。 digコマンドを使って確認してみましょう $ dig google.com +trace ; <<>> DiG 9.16.12 <<>> google.com +trace ;; global options: +cmd . 53537 IN NS m.root-servers.net. . 53537 IN NS b.root-servers.net. . 53537 IN NS c.root-servers.net. . 53537 IN NS d.root-servers.net. . 53537 IN NS e.root-servers.net. . 53537 IN NS f.root-servers.net. . 53537 IN NS g.root-servers.net. . 53537 IN NS h.root-servers.net. . 53537 IN NS i.root-servers.net. . 53537 IN NS a.root-servers.net. . 53537 IN NS j.root-servers.net. . 53537 IN NS k.root-servers.net. . 53537 IN NS l.root-servers.net. ;; Received 239 bytes from 127.0.0.53#53(127.0.0.53) in 13 ms com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. ;; Received 1198 bytes from 192.33.4.12#53(c.root-servers.net) in 13 ms google.com. 172800 IN NS ns2.google.com. google.com. 172800 IN NS ns1.google.com. google.com. 172800 IN NS ns3.google.com. google.com. 172800 IN NS ns4.google.com. ;; Received 836 bytes from 192.5.6.30#53(a.gtld-servers.net) in 203 ms google.com. 300 IN A 172.217.24.142 ;; Received 55 bytes from 216.239.38.10#53(ns4.google.com) in 129 ms この1行で表されたデータを資源レコード(Resource Record,RR)と呼びます。 NSは資源レコードのタイプの1つです。 詳細はRFC1035 3.2.2. TYPE valuesで確認できます。 この資源レコードは「ゾーン.に対する権威を持つネームサーバの1つがm.root-servers.net.」であることを表します。 . 53537 IN NS m.root-servers.net. また、ルートサーバが[a-m].gtld-servers.net.にcomゾーンを委任していることが分かります。 com. 172800 IN NS k.gtld-servers.net. 同様にして、[a-m].gtld-servers.net.がns[1-4].google.com.にgoogle.comゾーンを委任していることも分かります。 google.com. 172800 IN NS ns2.google.com. 最後に、Aレコードがns4.google.comから返されています。 この例では、「google.com.のIPv4アドレスの1つが172.217.24.142」であることを表します。 google.com. 300 IN A 172.217.24.142 グルーレコード(GLUE RECORD) https://jprs.jp/glossary/index.php?ID=0185 より引用すると > 権威サーバー(権威DNSサーバー)が、委任先のネームサーバーの名前を応答する際に追加する情報です。具体的には、ネームサーバーの名前に対応するIPアドレスです。 > グルーレコードは、ネームサーバーの名前が委任先のドメイン名で管理されている場合にのみ必要になります。グルーレコードを追加することで、名前解決におけるループの発生を防ぎます(図1、図2)。 > グルーレコードは委任情報の一部であり、権威を持たないという点に注意してください。 「ネームサーバーの名前が委任先のドメイン名で管理されている場合」を説明します。 先程の例では、google.comゾーンをns[1-4].google.com.に委任していることが当てはまります。 google.comゾーンについて名前解決するにはns[1-4].google.com.に問い合わせる必要がある、しかしns[1-4].google.com.はgoogle.comゾーンにある、とループを形成していることが分かります。 グルーレコードを確認してみましょう ADDITIONAL SECTION:以下の資源レコードがグルーレコードです。 $dig @a.gtld-servers.net. google.com +norec ; <<>> DiG 9.16.12 <<>> @a.gtld-servers.net. google.com +norec ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27812 ;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 9 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;google.com. IN A ;; AUTHORITY SECTION: google.com. 172800 IN NS ns2.google.com. google.com. 172800 IN NS ns1.google.com. google.com. 172800 IN NS ns3.google.com. google.com. 172800 IN NS ns4.google.com. ;; ADDITIONAL SECTION: ns2.google.com. 172800 IN AAAA 2001:4860:4802:34::a ns2.google.com. 172800 IN A 216.239.34.10 ns1.google.com. 172800 IN AAAA 2001:4860:4802:32::a ns1.google.com. 172800 IN A 216.239.32.10 ns3.google.com. 172800 IN AAAA 2001:4860:4802:36::a ns3.google.com. 172800 IN A 216.239.36.10 ns4.google.com. 172800 IN AAAA 2001:4860:4802:38::a ns4.google.com. 172800 IN A 216.239.38.10 ;; Query time: 76 msec ;; SERVER: 192.5.6.30#53(192.5.6.30) ;; WHEN: Wed Apr 07 13:24:35 JST 2021 ;; MSG SIZE rcvd: 287 PREV digコマンドを使ってみよう NEXT DNSの全体像を把握しよう(実践編)