DNS関連の作業を行うときに知っておきたい用語や仕組みなどを整理します。また、digコマンドを利用した調査方法(ドメイン解決, TTLの確認など)についても取り上げます。
目次
DNS関連用語
名前解決
- ドメイン名からIPアドレスを求めること。
- 名前解決に関連するファイル。
/etc/hosts
- ドメインとIPの対応を記述して、DNS無しで名前解決する。
/etc/resolv.conf
- DNSのIPを指定して、DNSに問い合わせて名前解決する。
$ cat /etc/resolv.conf | grep nameserver
nameserver 10.0.0.2
「正引き」と「逆引き」
- 正引き:ホスト名(ドメイン名)から対応するIPアドレスを導き出す。
- 逆引き:IPアドレスから対応するホスト名(ドメイン名)を導き出す。
DNSサーバーの種類
( リゾルバと権威サーバー )
リゾルバ
キャッシュDNSサーバー
フルサービスリゾルバ
とも呼ばれる。- ゾーン情報を管理しない。
- 権威サーバーに問い合わせて名前解決をする。
- 権威サーバーから取得した情報をキャッシュとして保存できる。
- 保存期間は、権威サーバーで指定されたTTLを最大値とする。
権威サーバー
DNSコンテンツサーバー
とも呼ばれる。- ゾーン情報を管理する。
リゾルバにキャッシュとして情報が残っている場合、2~7
の問い合わせは行われません。
ドメイン種類
上記図でTLD, 2LDと表記されいます。例えば、www.google.com
の場合以下のようになります。
- TLD(Top Level Domain):
com
- 2LD(Second Level Domain):
google
レコード種類
代表的なレコードタイプを示します。
レコード種類 | 概要 |
---|---|
SOA | ゾーン(ドメイン)情報を記載 |
NS | ドメインのDNSサーバーを指定 |
A | ホスト名に対応するIPアドレスを指定 |
PTR | IPアドレスに対応するホスト名を指定 |
CNAME | ホスト名の別名(エイリアス)を指定 |
MX | ドメインのメールサーバーを指定 |
TXT | テキスト情報を指定SPF や DKIM で利用 |
digコマンドで確認
ドメインのIPアドレスを確認
( Aレコード )
- リゾルバ(
10.0.0.2
)に問い合わせています。 ANSWER SECTION
に問い合わせ結果が表示されています。- TTLは
60秒
になっています。 google.com
に対応するIPアドレス(172.217.25.110
)が表示されています。
- TTLは
dig 対象ドメイン
$ dig google.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.58.amzn1 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57744
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 60 IN A 172.217.25.110
;; Query time: 1 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Sun Oct 20 09:08:56 2019
;; MSG SIZE rcvd: 44
ドメインのDNSサーバーを確認
( NSレコード )
デフォルトでAレコードが取得されます。NSレコードを取得した場合、明示的にレコードタイプを指定します。
dig 対象ドメイン レコードタイプ
$ dig google.com ns
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.58.amzn1 <<>> google.com ns
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25938
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN NS
;; ANSWER SECTION:
google.com. 60 IN NS ns4.google.com.
google.com. 60 IN NS ns1.google.com.
google.com. 60 IN NS ns2.google.com.
google.com. 60 IN NS ns3.google.com.
;; Query time: 2 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Sun Oct 20 09:15:18 2019
;; MSG SIZE rcvd: 100
レコードタイプに any
を指定すると、全ての情報を取得できます。
DNSサーバーを指定して確認
問い合わせるDNSサーバーを指定することができます。
dig @DNSサーバー 対象ドメイン
権威サーバー( ns1.google.com
)から問い合わせみます。
$ dig @ns1.google.com. google.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.58.amzn1 <<>> @ns1.google.com. google.com
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7600
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 300 IN A 172.217.161.78
;; Query time: 70 msec
;; SERVER: 216.239.32.10#53(216.239.32.10)
;; WHEN: Sun Oct 20 09:19:23 2019
;; MSG SIZE rcvd: 44
ルートサーバーから確認
+trace
オプションを利用すると、ルートサーバーから順に、名前解決に使用された各サーバーの結果を表示します。
$ dig +trace google.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.58.amzn1 <<>> +trace google.com
;; global options: +cmd
. 518400 IN NS E.ROOT-SERVERS.NET.
. 518400 IN NS F.ROOT-SERVERS.NET.
. 518400 IN NS G.ROOT-SERVERS.NET.
. 518400 IN NS H.ROOT-SERVERS.NET.
. 518400 IN NS I.ROOT-SERVERS.NET.
. 518400 IN NS J.ROOT-SERVERS.NET.
. 518400 IN NS K.ROOT-SERVERS.NET.
. 518400 IN NS L.ROOT-SERVERS.NET.
. 518400 IN NS M.ROOT-SERVERS.NET.
. 518400 IN NS A.ROOT-SERVERS.NET.
. 518400 IN NS B.ROOT-SERVERS.NET.
. 518400 IN NS C.ROOT-SERVERS.NET.
. 518400 IN NS D.ROOT-SERVERS.NET.
;; Received 508 bytes from 10.0.0.2#53(10.0.0.2) in 6 ms
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
;; Received 488 bytes from 192.58.128.30#53(192.58.128.30) in 8 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 276 bytes from 192.48.79.30#53(192.48.79.30) in 172 ms
google.com. 300 IN A 172.217.161.78
;; Received 44 bytes from 216.239.38.10#53(216.239.38.10) in 127 ms