###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を叩く