30代後半、未経験からIT業界のエンジニア転職へ挑戦している、kobakichiです。
今回もいつもお世話になっている、Envader
を利用してLinuxコマンドを実践しながら学びました。
今回は検索する時に必ず使うドメイン名
とIPアドレス
の名前解決
をするためのコマンドnslookup
について、実践しながら学びました。
Envader
とは?という方のためにリンクを貼っておきますので、ご参考までに。
参考にさせていただいた記事一覧
はじめに
今回はDNS
(ドメインネームシステム)についてのシナリオを実践しましたが、こちらの解説が非常に細かくされていて、非常に勉強になりました。
私自身の振り返り(アウトプット)にこの記事を書いていますが、より正確で細かい情報を知りたい時にはこちらのシナリオを読むとかなり勉強になると思います。
私も分からなくなった時には、このシナリオの記事を読ませて頂こうと思いました。
nslookupコマンド
nslookup
コマンドは、DNS(Domain Name System)サーバに、コマンドで入力したドメイン名の名前解決を問い合わせるコマンド。
コマンドの実行方法には、非対話モード
と対話モード
があります。
また、名前解決には正引き
と逆引き
の両方ができるようです。
専門的な言葉がいくつか出てきたので、自分の学習のため言語化してみよう。
名前解決とは
ドメイン名をIPアドレスに変換する仕組みのこと。(正引き)
IPアドレスをドメイン名に変換する仕組みもある。(逆引き)
私たちは普段、どこかのWebサイトを見に行く時に、ブラウザでURLを入力しています。
例えで説明すると、Envaderのドメイン(https://envader.plus/
)とブラウザに入力すると、ブラウザがDNSサーバへ(envader.plus
)に紐付いているIPアドレスを教えて〜。と問い合わせをします。
問い合わせを受けたDNSサーバは複数のDNSサーバへ問い合わせをして、(envader.plus
)に紐付いているIPアドレスは(215.23.45.33
)です。とIPアドレスをブラウザに教えてあげます。
IPアドレスを教えてもらったブラウザは、教わったIPアドレス宛にリクエストを送り、レスポンスが返ってきて(envader.plus
)の画面が見れるようになります。
コンピューターは(envader.plus
)だけでは理解ができないため、(envader.plus
)を(215.23.45.33)
のようなIPアドレスへ変換する必要があるんですね。
正引き 逆引き
名前解決の方法のこと。
それぞれ、名前解決をする順番が逆になる。
正引き
...ドメイン名(envader.plus
)からIPアドレス(215.23.45.33
)に変換を行うこと。
逆引き
...IPアドレス(215.23.45.33
)からドメイン名(envader.plus
)に変換を行うこと。
ごちゃごちゃになりそうですが、この順番が違うことは頭に入れておこうと思います。
非対話モード
nslookup
コマンドの使い方の一つ。
基本の書き方
nslookup ドメイン名/IPアドレス DNSサーバのIPアドレス
# DNDサーバのアドレスは省略しても良い
試してみる。
# 8.8.8.8のDNSサーバへ問い合わせている
envader@172-19-1-2:~$ nslookup envader.plus
Server: 8.8.8.8
Address: 8.8.8.8#53
# 名前解決の結果
Non-authoritative answer:
Name: envader.plus
Address: 216.239.34.21
Name: envader.plus
Address: 216.239.38.21
Name: envader.plus
Address: 216.239.32.21
Name: envader.plus
Address: 216.239.36.21
8.8.8.8
のDNSサーバへenvader.plus
のドメインの名前解決の問い合わせをして、下のIPアドレス216.239.34.21
などが返ってきています。
このような使い方が非対話モードの使い方です。
対話モード
先ほどの非対話モードとは逆で、nslookup
コマンドと対話的にコマンドを実行します。
基本の書き方
nslookup
# または
nslookup - DNSサーバのIPアドレス
このようにすると、対話モードになります。
実際にやってみる。
# 対話モードでコマンドを実行
envader@172-19-1-2:~$ nslookup
> envader.plus
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: envader.plus
Address: 216.239.32.21
Name: envader.plus
Address: 216.239.38.21
Name: envader.plus
Address: 216.239.36.21
Name: envader.plus
Address: 216.239.34.21
非対話モードと同じように見えますが、nslookup
と叩いた後に>が出現して、そこから名前解決したいドメイン名やIPアドレスを入力します。
DNSサーバー 8.8.8.8
このサーバーのアドレスですが、Google Public DNS
と言って、Googleが世界中のインターネットの利用者に提供している無料のDNSサービスなのです。
自分のPCなどのDNSサーバーの設定を8.8.8.8
に設定することで、高速に名前解決を行うことができるとかできないとか。
気になる方は一度試してみるのも良いかもしれませんね。
digコマンド
dig
コマンドも、nslookup
と同じように名前解決ができるコマンド。
何が違うのか?ですが、nslookup
ではDNSサーバーのレスポンスを見やすく加工しているそうなのですが、dig
コマンドでは加工せず、ほとんどそのままの形式で表示してくれます。
envader@172-19-1-2:~$ dig raretech.site
; <<>> DiG 9.10.3-P4-Debian <<>> raretech.site
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56387
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;raretech.site. IN A
;; ANSWER SECTION:
raretech.site. 60 IN A 13.226.78.77
raretech.site. 60 IN A 13.226.78.95
raretech.site. 60 IN A 13.226.78.42
raretech.site. 60 IN A 13.226.78.102
;; Query time: 10 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Apr 04 19:09:56 UTC 2022
;; MSG SIZE rcvd: 106
ヘッダー情報やらレコード情報やらたくさん表示されています。
これらの情報は、ネームサーバーの挙動を知る、と言った時に非常に重要な情報となるようです。
実際に良く分かっていない
LinuxディストリビューションのCentOSでは、CentOS7からはこのdig
コマンドが推奨されているそうです。
DNSレコード
dig
コマンドで出てきたA
の所の意味が、Aレコードと呼ばれるDNSレコードの一つになります。
以下DNSレコードの種類
レコード名 | 役割 |
---|---|
A | ドメイン名に対応するIPアドレス(IPv4)を指定する行 |
AAAA | ドメイン名に対応するIPアドレス(IPv6)を指定する行 |
PTR | IPアドレスに対応するドメイン名を指定する行 |
CNAME | ドメイン名の別名を指定する行 |
SOA | ゾーンに関する様々な情報を記述する行 |
NS | ゾーン管理の委託先のサーバーを指定する行 |
MX | ドメイン宛のメールのメールサーバーを指定する行 |
TXT | テキスト情報を指定する行 |
などなど。
色々な種類のレコードがあって、覚えるのが大変ですね。
これらをゾーンファイルと呼ばれる設定ファイルに記述して、DNSレコードの設定をするようなのですが、これを間違って設定してしまうと、名前解決が正しく行われずにWebサイトを閲覧できない!と言った状況になってしまうそうなので、設定する際には注意が必要です。
まとめ
nslookup
dig
コマンドを使った名前解決の方法を学びました。
今回Envader
を利用して学習しましたが、シナリオの解説が本当に詳細に書かれていて分かりやすかったので、学習したい方は一度見てみることをお勧めします。
最後まで読んでいただきありがとうございました。