前回はDNSのレコードについて書きましたが、正直説明だけ読んでもいまいちピンとこないかも知れませんが、実際にコマンドを用いてレコードを問い合わせたほうが少し実感がわいてくると思います。
そこで今回は、DNSでは欠かせないツールであるdigとnslookupについて、簡単な使い方を学んでいきたいと思います。
dig
digは「domain information groper」の略で、主にUNIX系のOSでレコードを問い合わせるのに使用されます。
なお、digが見つからない場合は以下を実行しインストールする必要があります。
# CentOSの場合 > yum install bind-utils # Ubuntuの場合 > apt install dnsutils
以下でdigのhelpを表示します。
> dig -h Usage: dig [@global-server] [domain] [q-type] [q-class] {q-opt} {global-d-opt} host [@local-server] {local-d-opt} [ host [@local-server] {local-d-opt} [...]]
レコードを問い合わせる
まずは単純にドメイン名だけを入力するとAレコードが返ってきます。
> dig www.google.com ... ;; ANSWER SECTION: www.google.com. 251 IN A 172.217.26.100 ...
他にも出力されていますが、上記ではANSWER SECTIONだけを抜粋しています
CNAMEレコードがある場合はその上に表示されます。
上記のwww.google.comのドメインにおいてはTTLが251秒、レコードクラスがIN、レコード名がA、そしてIPアドレスが172.217.26.100と返答しています。
レコードクラスは問い合わせを行うネットワーククラスで、通常はInternetを指すINを指定し、デフォルト値もINとなっています。
なお、ネットワーククラスにANYを指定すると全てのネットワーククラスが問い合わせ対象になります。
TTLはTime To Live(生存時間)の略で、問い合わせの依頼を受けたDNSサーバがキャッシュとして保存しておく時間を意味し、上記時間が経過すると、そのデータは無効となります。
Aレコード以外を指定する場合はドメイン名の後に問い合わせをしたいレコードタイプを入力します。
> dig google.com MX ... ;; ANSWER SECTION: google.com. 263 IN MX 50 alt4.aspmx.l.google.com. google.com. 263 IN MX 10 aspmx.l.google.com. google.com. 263 IN MX 40 alt3.aspmx.l.google.com. google.com. 263 IN MX 30 alt2.aspmx.l.google.com. google.com. 263 IN MX 20 alt1.aspmx.l.google.com. ...
上記ではメールサーバの問い合わせを行っています。
複数のサーバのデータがあり、MXの後に数字が記載されていますが、これがプリファレンス値となり、この値が小さいほど優先順位が高く設定されています。
またレコードタイプをANYとするとそのドメインに関する全ての情報が返ってきます。
さらにレコードタイプにAXFRを指定するとドメインの権威サーバへ直接問い合わせることができますが、これについてはゾーン転送が許可されているホストから実行しないと情報が得られません。
逆引きを行う
本来逆引き用のレコードの記法に則れば、前回説明したように以下のようなコマンドを実行します。
# 192.168.1.1の場合 > dig 1.1.168.192.in-addr.arpa PTR
しかし、これだと入力が面倒なので、digでは"-x"オプションの後にIPアドレスを入力することで簡単に逆引きを行うことができます。
> dig -x 192.168.1.1
バッチ処理
digコマンドに"-f"オプションをつけるとバッチ処理を行うことができ、複数のドメインやレコードを参照する際にはとても便利です。
まず処理を行う前にバッチファイルを作成します。
# dig.bat www.google.com google.com NS google.com MX % コメント
上記の"%"で始まる文字列はコメントとして扱われます。
そして、以下コマンドで問い合わせを自動化できます。
> dig -f dig.bat
以上がdigコマンドの基本的な使い方になります。
次回はWindowsのコマンドであるnslookupについて学んでいきます。