5
5

More than 3 years have passed since last update.

digコマンド、DNSのメモ書き

Posted at

digコマンド

digコマンドについてのメモ書きです。
digコマンドはDNSサーバに問い合わせて、ドメイン名からIPアドレなどを調査できたりします。

権威DNSサーバ(コンテンツサーバ)とキャッシュDNSサーバ

digコマンドの前に、DNSサーバについてです。

参考サイト
DNSサーバとは
奥が深いDNSサーバーとdigコマンド

権威DNSサーバ(コンテンツサーバとも呼ばれる)とキャッシュDNSサーバがある。上の参考サイトが、DNSの再帰的な名前解決についてわかりやすく説明しています。DNSの名前解決はインターネットの根幹をなすものなので、どの階層(ノード)の権威DNSコンテンツサーバは複数台稼働している。

DNSサーバを指定しない場合、macOS

ドメイン名からIPアドレスを知りたい場合、「dig ドメイン名」コマンドを実行すればいいという情報が多かったのですが、自分のmacOSだとオプションでDNSサーバを指定しないと結果を返してくれませんでした。
(VMでCentOS7を起動してみましたが、CentOS7だとDNSサーバを指定しなくても結果を返してくれました。)

$ dig yahoo.co.jp

; <<>> DiG 9.10.6 <<>> yahoo.co.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 33409
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;yahoo.co.jp.           IN  A

;; Query time: 74 msec
;; SERVER: 2404:1a8:7f01:b::3#53(2404:1a8:7f01:b::3)
;; WHEN: Mon May 11 14:58:57 JST 2020
;; MSG SIZE  rcvd: 29

結果はstatusがREFUSEDで、ANSWER SECTIONも返してくれません。

DNSサーバを指定する場合(8.8.8.8はグーグルのPublicDNS)、macOS
$ dig @8.8.8.8 yahoo.co.jp

; <<>> DiG 9.10.6 <<>> @8.8.8.8 yahoo.co.jp
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29602
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;yahoo.co.jp.           IN  A

;; ANSWER SECTION:
yahoo.co.jp.        244 IN  A   182.22.59.229
yahoo.co.jp.        244 IN  A   183.79.135.206

;; Query time: 157 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon May 11 14:58:02 JST 2020
;; MSG SIZE  rcvd: 72

結果はstatusがNOERRORで、ANSER SECTIONでAレコードを返してくれます。

DNSサーバを指定しない場合、CentOS7
$ dig yahoo.co.jp

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-1 <<>> yahoo.co.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2536
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;yahoo.co.jp.           IN  A

;; ANSWER SECTION:
yahoo.co.jp.        169 IN  A   183.79.135.206
yahoo.co.jp.        169 IN  A   182.22.59.229

;; AUTHORITY SECTION:
yahoo.co.jp.        160 IN  NS  ns02.yahoo.co.jp.
yahoo.co.jp.        160 IN  NS  ns11.yahoo.co.jp.
yahoo.co.jp.        160 IN  NS  ns12.yahoo.co.jp.
yahoo.co.jp.        160 IN  NS  ns01.yahoo.co.jp.

;; ADDITIONAL SECTION:
ns01.yahoo.co.jp.   873 IN  A   118.151.254.133
ns02.yahoo.co.jp.   741 IN  A   118.151.254.149
ns11.yahoo.co.jp.   521 IN  A   124.83.255.37
ns12.yahoo.co.jp.   132 IN  A   124.83.255.101

;; Query time: 18 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: 月  5月 11 19:42:22 JST 2020
;; MSG SIZE  rcvd: 212

DNSを指定しなくても結果を返してくれます。ANSER SECTIONだけでなく、AUTHORITY SECTION、ADDITIONAL SECTIONも返してくれます。

dig -x、CentOS7

-xオプションは逆引きです。IPアドレスから対応するホストのネームを返してくれます。

$ dig -x 183.79.135.206

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.2 <<>> -x 183.79.135.206
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51797
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;206.135.79.183.in-addr.arpa.   IN  PTR

;; ANSWER SECTION:
206.135.79.183.in-addr.arpa. 900 IN PTR f1.top.vip.kks.yahoo.co.jp.

;; AUTHORITY SECTION:
79.183.in-addr.arpa.    900 IN  NS  ns12.yahoo.co.jp.
79.183.in-addr.arpa.    900 IN  NS  ns02.yahoo.co.jp.
79.183.in-addr.arpa.    900 IN  NS  ns01.yahoo.co.jp.
79.183.in-addr.arpa.    900 IN  NS  ns11.yahoo.co.jp.

;; ADDITIONAL SECTION:
ns01.yahoo.co.jp.   828 IN  A   118.151.254.133
ns02.yahoo.co.jp.   401 IN  A   118.151.254.149
ns11.yahoo.co.jp.   341 IN  A   124.83.255.37
ns12.yahoo.co.jp.   123 IN  A   124.83.255.101

;; Query time: 22 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: 月  5月 11 19:42:57 JST 2020
;; MSG SIZE  rcvd: 236

ホストのネームだけ知りたければ、hostやnslookupでもできます。
dig -xコマンドのANSWER SECTIONと同じ結果です。

$ host 183.79.135.206
206.135.79.183.in-addr.arpa domain name pointer f1.top.vip.kks.yahoo.co.jp.

$ nslookup 183.79.135.206
206.135.79.183.in-addr.arpa name = f1.top.vip.kks.yahoo.co.jp.

Authoritative answers can be found from:
79.183.in-addr.arpa nameserver = ns02.yahoo.co.jp.
79.183.in-addr.arpa nameserver = ns12.yahoo.co.jp.
79.183.in-addr.arpa nameserver = ns01.yahoo.co.jp.
79.183.in-addr.arpa nameserver = ns11.yahoo.co.jp.
ns01.yahoo.co.jp    internet address = 118.151.254.133
ns02.yahoo.co.jp    internet address = 118.151.254.149
ns11.yahoo.co.jp    internet address = 124.83.255.37
ns12.yahoo.co.jp    internet address = 124.83.255.101

hostの-aオプションはAllです。ネームサーバ(NSレコード)の情報なども返してくれます。
NSレコードには、ドメインの権威DNSサーバのホスト名が登録されています。

$ host -a 183.79.135.206
Trying "206.135.79.183.in-addr.arpa"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44100
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;206.135.79.183.in-addr.arpa.   IN  PTR

;; ANSWER SECTION:
206.135.79.183.in-addr.arpa. 900 IN PTR f1.top.vip.kks.yahoo.co.jp.

;; AUTHORITY SECTION:
79.183.in-addr.arpa.    194 IN  NS  ns11.yahoo.co.jp.
79.183.in-addr.arpa.    194 IN  NS  ns12.yahoo.co.jp.
79.183.in-addr.arpa.    194 IN  NS  ns02.yahoo.co.jp.
79.183.in-addr.arpa.    194 IN  NS  ns01.yahoo.co.jp.

;; ADDITIONAL SECTION:
ns01.yahoo.co.jp.   286 IN  A   118.151.254.133
ns02.yahoo.co.jp.   99  IN  A   118.151.254.149
ns11.yahoo.co.jp.   33  IN  A   124.83.255.37
ns12.yahoo.co.jp.   286 IN  A   124.83.255.101

-t NSオプションでも、ドメインのNSレコードを返してくれます。-tはタイプの指定です。

参考サイト
6.1 NSレコードを取得する方法(-t NS)

$  dig -t NS yahoo.co.jp

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.2 <<>> -t NS yahoo.co.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22882
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;yahoo.co.jp.           IN  NS

;; ANSWER SECTION:
yahoo.co.jp.        663 IN  NS  ns12.yahoo.co.jp.
yahoo.co.jp.        663 IN  NS  ns11.yahoo.co.jp.
yahoo.co.jp.        663 IN  NS  ns01.yahoo.co.jp.
yahoo.co.jp.        663 IN  NS  ns02.yahoo.co.jp.

;; ADDITIONAL SECTION:
ns01.yahoo.co.jp.   749 IN  A   118.151.254.133
ns02.yahoo.co.jp.   268 IN  A   118.151.254.149
ns11.yahoo.co.jp.   787 IN  A   124.83.255.37
ns12.yahoo.co.jp.   787 IN  A   124.83.255.101

;; Query time: 6 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: 火  5月 12 09:58:18 JST 2020
;; MSG SIZE  rcvd: 180

dig ANY

digコマンドでANYを指定すると、Aレコードだけでなく、NS、MX、SOA、TXTレコードなども一緒に返してくれます。下の実行結果はレコードが多いので、一部のみ抜粋しています。

$  dig ANY yahoo.co.jp @8.8.8.8

; <<>> DiG 9.10.6 <<>> ANY yahoo.co.jp @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43608
;; flags: qr rd ra; QUERY: 1, ANSWER: 17, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;yahoo.co.jp.           IN  ANY

;; ANSWER SECTION:
yahoo.co.jp.        699 IN  SOA yahoo.co.jp. postmaster.yahoo.co.jp. 2005110010 1800 900 86400 900
yahoo.co.jp.        699 IN  CAA 0 issue "globalsign.com"
yahoo.co.jp.        699 IN  CAA 0 issue "cybertrust.ne.jp"
yahoo.co.jp.        699 IN  MX  10 mx5.mail.yahoo.co.jp.
yahoo.co.jp.        699 IN  MX  10 mx2.mail.yahoo.co.jp.
yahoo.co.jp.        699 IN  TXT "google-site-verification=GvbYgNin-mY73VbS4IJK2D8nI3tHEf2NpRdy76VYqBU"
yahoo.co.jp.        699 IN  TXT "v=spf1 include:spf.yahoo.co.jp ~all"
yahoo.co.jp.        699 IN  NS  ns11.yahoo.co.jp.
yahoo.co.jp.        699 IN  NS  ns12.yahoo.co.jp.
yahoo.co.jp.        99  IN  A   183.79.135.206
yahoo.co.jp.        99  IN  A   182.22.59.229
dig +short

+shortオプションを指定すると、AレコードのIPアドレスのみを返してくれます。

$ dig yahoo.co.jp +short @1.1.1.1
182.22.59.229
183.79.135.206

#逆引き
$ dig -x 182.22.59.229 +short @1.1.1.1
f1.top.vip.ssk.yahoo.co.jp.
DNSキャッシュサーバ情報の取得と指定

+short +identifyオプションで使っているDNSキャッシュサーバ情報のIPアドレスを返してくれる。

参考サイト
9 DNS応答を返すキャッシュDNSサーバの調べ方(+short +identify)
DNSキャッシュサーバ 【 DNS cache server 】
->問い合わせ結果は一定期間保存され、期間内に同じ問い合わせが来た時には外部サーバへ新たに問い合わせることはせず自ら返答する。これにより上位DNSサーバの負担が軽減され、利用者への応答時間も短縮される。

$ dig yahoo.co.jp +short +identify
182.22.59.229 from server 10.0.2.3 in 15 ms.
183.79.135.206 from server 10.0.2.3 in 15 ms.

+short +identifyオプションを指定しないでも最後に返してくれるね。SERVER: 10.0.2.3#53(10.0.2.3)

$ dig yahoo.co.jp
~省略
;; Query time: 6 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: 火  5月 12 10:50:11 JST 2020
;; MSG SIZE  rcvd: 212

$ dig yahoo.co.jp +short +identify @1.1.1.1
182.22.59.229 from server 1.1.1.1 in 5 ms.
183.79.135.206 from server 1.1.1.1 in 5 ms.

また、DNSキャッシュサーバを指定する場合、@オプションで指定する。

$ dig yahoo.co.jp @1.1.1.1
~省略
;; Query time: 5 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: 火  5月 12 10:51:37 JST 2020
;; MSG SIZE  rcvd: 83
DNSルートサーバ(ルートネームサーバ)情報の取得、CentOS7

オプションを何も指定しないと、13あるDNSルートサーバの情報が取得できます。

$ dig

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.2 <<>>
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27196
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 14

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;.              IN  NS

;; ANSWER SECTION:
.           17485   IN  NS  i.root-servers.net.
.           17485   IN  NS  c.root-servers.net.
.           17485   IN  NS  m.root-servers.net.
以下省略
他によく使うdigコマンド

他によく使う、もしくは使う機会がありそうなdigコマンドのメモです。コマンドのみ、実行結果省略です。環境はCentos7。

#+trace。ルートネームサーバから再帰的な解決の様子がトレースできる。
$ dig yahoo.co.jp +trace

# +multiline, 出力結果の整形
$ dig yahoo.co.jp  +multiline

# SOAレコードを取得
$ dig -t SOA yahoo.co.jp

#-hオプション。オプション一覧と簡単な使い方のヘルプ。
$ dig -h


digコマンド参考サイト

CMAN,nslookup(dig)テスト【DNSサーバ接続確認】
->ウェブサービス。digなどを実行してくれる。
【 dig 】コマンド――ドメイン名からIPアドレスを調べる
奥が深いDNSサーバーとdigコマンド
digコマンドの使い方

https、ssl化の参考サイト

自分で発行したサーバー証明書(オレオレ証明書)をブラウザに登録する方法
->ローカル環境でオレオレ証明書を使ってhttpsアクセスする際、ブラウザの警告をなくす方法。実際にこのあたりはやらないからいいかな、、、

その他の参考サイト

curlコマンドでapiを叩く

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5