DigはLinuxのシンプルで強力なツールで、特定のリモートサーバに関するドメインネームシステム(DNS)の情報を調べます。tcpdumpとは異なり、マシンがどのようにネームサーバーと相互作用しているかについての洞察を得ることができます。このチュートリアルでは、Ubuntu で dig ユーティリティを使用する方法の基本を学び、DNS がどのように機能するかを理解するために dig ユーティリティを使用する方法を学びます。

DNS とは何か、dig はどのように動作するのか?

その核心は、DNS はマシンが人間が読めるドメイン名を適切な IP アドレスにシームレスに変換することを可能にするシステムであることです。その点で、DNSは電話帳に似ていて、マシンのアドレスを覚えやすいラベルと一緒にリストアップしています。

DNSは電話帳のようなものです。 ドメインネームシステムは、階層化されたネームサーバーにドメインレコードを保存し、ユーザーがドメイン名を解決しようとするたびにネームサーバーがそのレコードをアナウンスすることで機能します。

たとえば、「maketecheasier.com」にアクセスすると、コンピューターはまず既知のネームサーバーに接続し、探しているドメインのIPアドレスを知っているかどうかをサーバーに問い合わせます。お客様のコンピューターが適切なアドレスを知ると、その情報を使って MakeTechEasier ウェブサイトに接続します。

dig` ユーティリティは、あなたのコンピュータがどのようにネームサーバーと通信しているかを示すことで、このプロセスの仮面を剥がします。最初の接続から名前解決までにかかるすべてのステップにラベルを付けて表示します。このため、digは、サーバーの潜在的なDNSの問題を理解するのに役に立ちます。

Linuxにdnsutilsをインストールする

digコマンドは、ほとんどのLinuxディストリビューションにプリインストールされています。もし、システムにない場合は、digコマンドにアクセスするためにdnsutils` パッケージをインストールする必要があります。

UbuntuとDebianシステムでは、コマンドを使ってインストールしてください。

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に似ていて、マシンがドメインに接続するたびに、そのマシンが通過するすべてのホップを調べます。

例えば、以下のコマンドを実行すると、あなたのマシンが “maketecheasier.com” を読み込むまでのすべてのホップをトレースします。

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 の違いはなんですか?

dignslookup` はどちらも DNS サーバーに問い合わせをするコマンドラインツールです。両者の主な違いは、digの方がより多くのオプションを持つ強力なツールであるということです。Nslookupはよりシンプルに使えますが、それほど多くの機能はありません。しかし、ほとんどの基本的なDNSクエリでは、どちらのツールでも問題なく動作します。

画像クレジット:Unsplash。すべての変更とスクリーンショットはRamces Redによるものです。

Akira
Akiraは情熱的なゲーマーであり、製品レビュアーです。ゲームをしていないときは、最新のゲーミングアクセサリーを試したり、製品のレビューをしていることが多い。彼の分かりやすいスタイルは、ゲーマーが自分のニーズに最も適した製品を簡単に判断できるようにするものです。また、技術的な問題にも精通しており、その解決方法も知っている。