DNS とは何か、dig はどのように動作するのか?
その核心は、DNS はマシンが人間が読めるドメイン名を適切な IP アドレスにシームレスに変換することを可能にするシステムであることです。その点で、DNSは電話帳に似ていて、マシンのアドレスを覚えやすいラベルと一緒にリストアップしています。
DNSは電話帳のようなものです。 ドメインネームシステムは、階層化されたネームサーバーにドメインレコードを保存し、ユーザーがドメイン名を解決しようとするたびにネームサーバーがそのレコードをアナウンスすることで機能します。 たとえば、「maketecheasier.com」にアクセスすると、コンピューターはまず既知のネームサーバーに接続し、探しているドメインのIPアドレスを知っているかどうかをサーバーに問い合わせます。お客様のコンピューターが適切なアドレスを知ると、その情報を使って MakeTechEasier ウェブサイトに接続します。 dig` ユーティリティは、あなたのコンピュータがどのようにネームサーバーと通信しているかを示すことで、このプロセスの仮面を剥がします。最初の接続から名前解決までにかかるすべてのステップにラベルを付けて表示します。このため、digは、サーバーの潜在的なDNSの問題を理解するのに役に立ちます。Linuxにdnsutilsをインストールする
digコマンドは、ほとんどのLinuxディストリビューションにプリインストールされています。もし、システムにない場合は、
digコマンドにアクセスするために
dnsutils` パッケージをインストールする必要があります。
sudo apt install dnsutils
Fedoraの場合
sudo yum install bind-utils
Arch Linuxとその派生版では
sudo pacman -S bind-tools
Linux で dig を使って DNS サーバーに問い合わせる
Linux で dig を使ってできる最も基本的な操作のひとつは、ウェブアドレスの A レコードを問い合わせることです。Aレコードはドメイン名の主要なIPv4アドレスを含んでおり、ウェブブラウザがウェブサイトにアクセスしようとするときに照会するものです。
digを使用してAレコードを照会するには、次のコマンドを実行します。dig maketecheasier.com
このコマンドは、digがドメインを解決するために行ったアクションを示す長い文字列を表示します。ほとんどの場合、この文字列は、ヘッダー、質問、回答、ネームサーバーの4つのセクションに分割することができます。
ヘッダー部には、実行したコマンドの簡単な概要が表示されます。opcode “の値は、digが行ったアクションを示しています。一方、“status “の値は、クエリの全体的な結果を表示しています。 質問セクションは、digを通じて行ったクエリのリストを表示します。最初の列には、完全なドメイン名の後に、クエリーのクラスとDNSレコードのタイプが表示されます。 回答セクションは、クエリーの結果を示しています。最初の列には、完全なドメイン名と、その「Time To Live」値が含まれています。3番目と4番目の列は、クエリのクラスとDNSレコードの種類を示し、5番目の列は結果を表示します。 nameserverセクションには、このコマンドに使用されたdigのDNSサーバーの詳細が含まれています。QUERY TIME」は、サーバーがクエリーを処理するのに要した時間です。SERVER “の値はネームサーバーのIPアドレスで、“MSG SIZE “はクエリのサイズをバイトで示します。
もし、ウェブサイトのIPアドレスを素早く見つけたいだけなら、+short
オプションを含めると、IPアドレスだけを返すようになります。
dig +short maketecheasier.com
カスタムDNSレコードタイプのクエリ
A のクエリ以外に、他の DNS タイプの検索にも dig を使用することができます。以下のコマンドを実行することで、ドメインにIPv6レコードがあるかどうかを確認できます。
dig maketecheasier.com aaaa
カスタムDNSタイプのクエリは、侵入テスト中に偵察作業を行う場合にも便利です。たとえば、 dig
を使って、あるドメイン名がメールサーバーでも使われているかどうかを確認することができます。
dig maketecheasier.com mx
最後に、dig
はドメインのアップストリームサービスについて知る上でも非常に有用です。CNAME “と “NS “レコードの両方が、サーバーと使用しているネームサーバーについての詳細を表示します。
dig maketecheasier.com cname
dig maketecheasier.com ns
ヒント:様々なブラウザでDNS over HTTPSを有効にする方法を学ぶことができます。
Linux でのカスタム Dig クエリ
デフォルトでは、dig
はネームサーバーに接続し、ドメイン名の詳細を問い合わせることで動作します。しかし、このプログラムは、DNSの問題を解決するのに役立つ多くの追加機能を提供します。
digの最も便利な機能の1つは +trace
です。tracerouteに似ていて、マシンがドメインに接続するたびに、そのマシンが通過するすべてのホップを調べます。
dig maketecheasier.com +trace
また、dig が特定のドメイン名を調査するために使用するネームサーバーをカスタマイズすることもできます。これは、ネームサーバーを持っていて、それが正しく動作しているかどうかをチェックしたい場合に便利です。
カスタムのネームサーバーを強制的に設定するには、以下のコマンドを実行します。dig maketecheasier.com A @168.138.12.137
最後に、dig は Bash スクリプトで動作させることができる非常に柔軟なプログラムでもあります。これを行うには、クエリの結果のみを表示するように dig を強制します。
dig maketecheasier.com +noall +answer +nocomments mx
注意: システムのDNSキャッシュの問題により、取得した結果が正しく更新されたものでないことがあります。これを修正するには、LinuxシステムのDNSキャッシュをフラッシュしてください。
ディグクエリーの一括処理
個々のドメイン名の処理とは別に、dig を使って複数のウェブアドレスを解決することも可能です。これは、あなたがネットワークエンジニアで、一度に複数のドメインについてチェックしたい場合に特に便利です。
例えば、次のコマンドは、“maketecheasier.com “のNSレコードと “yetanotherpleromaserver.xyz “のAレコードの両方を探します。dig +qr maketecheasier.com ns yetanotherpleromaserver.xyz a
f` オプションを使用すると、dig に外部ファイルから命令を取得するように指示することもできます。しかし、このファイルは “dig query” 形式でのみ記述する必要があります。それを承知で、以下の行を考えてみてください。
maketecheasier.com mx
maketecheasier.com ns
-x maketecheasier.com
これをテキストファイルに保存して dig -f textfile
を実行すると、“maketecheasier.com” ドメインに対して MX, NS, 逆引きクエリーが実行されます。
Frequently Asked Questions
dig をローカルネットワーク上で使うことはできますか?
はい。ほとんどの場合、これらのクエリはローカルの DNS サーバーでのみ解決されます。これは、内部に DNS サーバがあり、それがネットワーク上で認識されているかどうかを確認したい 場合に役立ちます。
dig を使ってウェブサイトや Linux サーバをハックすることは可能ですか?
dig は非常に便利なツールですが、侵入テスト者のツールキットのほんの一部に過ぎません。その主な役割は、マシンとそのドメイン名が DNS サーバーとどのように相互作用するかを理解するのを助けることです。もし、サーバーへの侵入が心配なら、Linuxサーバーの安全確保をチェックしてみてください。
私の ISP は IPv6 をサポートしていません。私は、純粋に IPv4 で dig を実行することができますか?
dig を IPv4 のみ、もしくは IPv6 のみのモードで実行することは可能です。これを行うには、dig コマンドに -4
または -6
オプションを追加する必要があります。例えば、dig -4 +qr maketecheasier.com mx
と実行すると、dig はクエリーで IPv4 のみを使用するように強制されます。
dig と nslookup の違いはなんですか?
digと
nslookup` はどちらも DNS サーバーに問い合わせをするコマンドラインツールです。両者の主な違いは、digの方がより多くのオプションを持つ強力なツールであるということです。Nslookupはよりシンプルに使えますが、それほど多くの機能はありません。しかし、ほとんどの基本的なDNSクエリでは、どちらのツールでも問題なく動作します。