ネットワーク系

【Linuxの基礎知識】dig / host / nslookupの違いとDNSトラブル調査法

インターネットに接続していると、突然「Webサイトにアクセスできない」「メールが届かない」といったトラブルに直面することはありませんか。

こうした不具合の裏側で多く関わっているのが、名前解決を担うDNS(Domain Name System)です。

では、そのDNSが正しく動作しているかを確認するにはどうすれば良いのでしょうか。Linux環境でよく利用されるのが「dig」「host」「nslookup」という3つのコマンドです。

どれもDNSの情報を調査できるツールですが、それぞれに特徴や得意分野があり、使い分けを理解していないと正確なトラブルシュートができません。

本記事では、この3つのコマンドの違いや基本的な使い方、そしてDNSトラブル調査における実践的な活用法を解説します。DNS調査を効率化したい方はぜひ参考にしてください。

dig / host / nslookupとは

DNSの動作を確認したり、トラブル調査を行う際に利用される代表的なコマンドが「dig」「host」「nslookup」です。

どれもドメイン名とIPアドレスの対応関係を調べるために使用されますが、それぞれ提供する情報や実行形式に違いがあります。

ここでは、各コマンドの役割や特徴を整理し、実際の実行例もあわせて確認します。

各コマンドの基本概要

DNS調査に利用できるコマンドにはdig、host、nslookupの3種類があります。いずれも名前解決を行う点は共通していますが、得意とする分野や出力の詳細度が異なります。

コマンド主な取得情報
digAレコード、MXレコード、権威サーバー情報、TTL、応答時間など
hostIPアドレスとドメイン名の対応
nslookup基本的なレコード情報、対話形式での問い合わせ

DNS調査に使用される3つのコマンド

    • dig(Domain Information Groper):
      権威サーバー情報やTTLなどを含む詳細なDNSクエリ結果を取得できる高機能なコマンドです。システム管理者やネットワークエンジニアに広く利用されています。

    • host:
      ドメインとIPアドレスの対応関係を簡潔に表示するシンプルなコマンドです。結果が短くわかりやすいため、日常的な確認作業に適しています。

    • nslookup:
      古くから存在するコマンドで、対話モードを備えているのが特徴です。ただし現在は非推奨の扱いを受けることが多く、RHEL系Linuxの現場ではdigの利用が推奨される傾向にあります。

導入手順と基本操作

dig、host、nslookupはRHEL系LinuxでDNS調査に利用される代表的なコマンドです。3つとも「bind-utils」パッケージに含まれているため、導入の流れは共通しています。

ただし、実行時の出力や利用用途が異なるため、ここでは各コマンドごとにインストール・確認・実行の流れを順に整理します。

digのインストール方法と使い方

digは詳細なDNS情報を取得できる高機能なコマンドです。トラブルシュートや権威サーバーの確認などに広く使われています。

インストールコマンド

digを利用するにはbind-utilsを導入します。

sudo dnf install -y bind-utils

バージョン確認

インストール後、digが正しく導入されているかを確認します。

dig -v

出力例:

DiG 9.11.36-RedHat-9.11.36-3.el9

実行例

ドメイン名を指定して実行すると、詳細なDNS情報が返ります。

dig example.com

出力例:

; <<>> DiG 9.11.36-RedHat-9.11.36-3.el9 <<>> example.com
;; ANSWER SECTION:
example.com. 3600 IN A 93.184.216.34
この出力から、AレコードとTTL(3600秒)を確認できます。

hostのインストール方法と使い方

hostはシンプルにドメインとIPアドレスの対応を確認できるコマンドです。digより出力が簡潔で、日常的な疎通確認に便利です。

インストールコマンド

hostもbind-utilsに含まれるため、digと同じコマンドで導入されます。

sudo dnf install -y bind-utils

バージョン確認

インストール後、hostのバージョンを確認します。

host -v

出力例:

host 9.11.36-RedHat-9.11.36-3.el9

実行例

対象のドメインを指定して名前解決を確認します。

host example.com

出力例:

example.com has address 93.184.216.34

このように結果が1行で表示されるため、動作確認が素早く行えます。

nslookupのインストール方法と使い方

nslookupは古くから利用されているコマンドで、対話モードを備えているのが特徴です。現在はdigが推奨される場面も多いですが、基本的な調査には今も利用可能です。

インストールコマンド

nslookupも同様にbind-utilsパッケージで利用可能になります。

sudo dnf install -y bind-utils

バージョン確認

インストール後、nslookupのバージョンを確認します。

nslookup -version

出力例:

nslookup 9.11.36-RedHat-9.11.36-3.el9

実行例

対象ドメインを指定して実行すると、利用したDNSサーバーと解決結果が表示されます。

nslookup example.com

出力例:

Server: 192.168.0.1
Address: 192.168.0.1#53

Non-authoritative answer:
Name: example.com
Address: 93.184.216.34
この結果から「問い合わせに使われたDNSサーバー」と「ドメインに対応するIPアドレス」が確認できます。

各コマンドの基本的な使い方

dig、host、nslookupは同じDNS問い合わせに利用できますが、出力の粒度や機能に違いがあります。ここでは各コマンドを独立して整理し、基本的な使い方やオプションを段階的に解説します。

digの基本的な使い方

digは最も詳細なDNS情報を確認できるコマンドです。DNSトラブルシュートの際に欠かせません。

オプション内容
+short最小限の結果のみ表示
+trace権威サーバーを順に追跡
@server指定したDNSサーバーに問い合わせ

基本表示の実行例

dig example.com

出力例:

example.com. 3600 IN A 93.184.216.34

対象を指定した表示例

対象を指定した表示例では、Aレコード以外の特定のDNSレコードを明示的に問い合わせます。

たとえば、MXレコードを指定すればメールサーバーの設定状況を確認でき、NSレコードを指定すればそのドメインを管理している権威DNSサーバーを確認できます。またTXTレコードを指定すると、SPFやDKIMなどメール関連の認証情報を取得することが可能です。

レコードタイプ用途指定例(digの場合)
Aホスト名に対応するIPv4アドレスdig example.com A
AAAAホスト名に対応するIPv6アドレスdig example.com AAAA
MXメール交換サーバー情報dig example.com MX
NS権威DNSサーバーの情報dig example.com NS
CNAME別名(エイリアス)レコードdig www.example.com CNAME
TXTテキスト情報(SPF/DKIMなど)dig example.com TXT
SOAゾーンの管理情報dig example.com SOA
ANY複数のレコードをまとめて確認
(ただし応答内容はDNSサーバーによって制限される場合あり)
dig example.com ANY

下記ようにレコードタイプを選んで問い合わせることで、必要な情報を効率よく得られます。

dig example.com MX

出力例:

example.com. 3600 IN MX 10 mail.example.com.

詳細オプションの利用

dig +trace example.com

出力例:

. 518400 IN NS a.root-servers.net. …

hostの基本的な使い方

hostは出力がシンプルで、素早く確認できるのが特徴です。

オプション内容
-t MXメール交換レコードを確認
-aすべての情報を表示

基本表示の実行例

host example.com

出力例:

example.com has address 93.184.216.34

対象を指定した表示例

対象を指定した表示例では、Aレコード以外の特定のDNSレコードを明示的に問い合わせます。

たとえば、MXレコードを指定すればメールサーバーの設定状況を確認でき、NSレコードを指定すればそのドメインを管理している権威DNSサーバーを確認できます。またTXTレコードを指定すると、SPFやDKIMなどメール関連の認証情報を取得することが可能です。

レコードタイプ用途指定例(hostの場合)
Aホスト名に対応するIPv4アドレスhost -t A example.com
AAAAホスト名に対応するIPv6アドレスhost -t AAAA example.com
MXメール交換サーバー情報host -t MX example.com
NS権威DNSサーバーの情報host -t NS example.com
CNAME別名(エイリアス)レコードhost -t CNAME www.example.com
TXTテキスト情報(SPF/DKIMなど)host -t TXT example.com
SOAゾーンの管理情報host -t SOA example.com
ANY複数のレコードをまとめて確認
(ただし応答内容はDNSサーバーによって制限される場合あり)
host -t ANY example.com

host -t MX example.com

出力例:

example.com mail is handled by 10 mail.example.com.

全体のDNS情報を確認

host -a example.com

出力例:

example.com descriptive text "v=spf1 include:_spf.example.com -all"

nslookupの基本的な使い方

nslookupは古くから利用され、対話モードで複数回の問い合わせができる点が特徴です。

オプション内容
set type=MXMXレコードを確認
server [IP]利用するDNSサーバーを指定

基本表示の実行例

nslookup example.com

出力例:

Name: example.com
Address: 93.184.216.34

対象を指定した表示例

対象を指定した表示例では、Aレコード以外の特定のDNSレコードを明示的に問い合わせます。

たとえば、MXレコードを指定すればメールサーバーの設定状況を確認でき、NSレコードを指定すればそのドメインを管理している権威DNSサーバーを確認できます。またTXTレコードを指定すると、SPFやDKIMなどメール関連の認証情報を取得することが可能です。

レコードタイプ用途指定例(nslookupの場合)
Aホスト名に対応するIPv4アドレスnslookup -query=A example.com
AAAAホスト名に対応するIPv6アドレスnslookup -query=AAAA example.com
MXメール交換サーバー情報nslookup -query=MX example.com
NS権威DNSサーバーの情報nslookup -query=NS example.com
CNAME別名(エイリアス)レコードnslookup -query=CNAME www.example.com
TXTテキスト情報(SPF/DKIMなど)nslookup -query=TXT example.com
SOAゾーンの管理情報nslookup -query=SOA example.com
ANY複数のレコードをまとめて確認
(ただし応答内容はDNSサーバーによって制限される場合あり)
nslookup -query=ANY example.com

nslookup -query=MX example.com

出力例:

example.com MX preference = 10, mail exchanger = mail.example.com

詳細オプションの利用

nslookup example.com 8.8.8.8

出力例:

Server: 8.8.8.8
Name: example.com
Address: 93.184.216.34

応用と拡張利用

基本的なコマンド操作に慣れたら、DNS調査の結果を効率的に扱うために応用的な使い方を取り入れると便利です。ここでは、定期監視の仕組みやcronの活用、ログ管理方法、保存先ディレクトリの工夫について解説します。

定期監視とcron設定

DNSの状態は時間とともに変化するため、定期的に監視を行うことが重要です。cronを利用することで、指定した間隔で自動的にコマンドを実行し、結果を保存することが可能になります。

crontab -e

以下のように設定すれば、1時間ごとにdigでDNSの状態を確認し、結果をログファイルに保存できます。

0 * * * * dig example.com >> /var/log/dns_check.log 2>&1

調査結果のログ管理

DNS調査の結果は蓄積して比較することで異常を発見しやすくなります。ログファイルを日付ごとに分けて保存しておくと、過去の状態と照合してトラブルの発生タイミングを特定できます。

dig example.com >> /var/log/dns/$(date +\%Y\%m\%d).log

このようにすることで、毎日新しいログファイルが作成され、過去のデータを残しながら継続的に監視できます。

保存先ディレクトリの工夫

ログや調査結果を長期間扱う場合、保存先ディレクトリの構成を工夫することで管理が容易になります。例えば「年/月/日」の階層を作成して整理すると、対象期間の調査結果をすぐに見つけられます。

mkdir -p /var/log/dns/$(date +\%Y)/$(date +\%m)/
dig example.com >> /var/log/dns/$(date +\%Y)/$(date +\%m)/dns_$(date +\%d).log

このように階層を分けて保存することで、長期間の監視結果も体系的に整理でき、障害対応や調査時に役立ちます。

実践的な活用例

dig、host、nslookupといったDNSコマンドは、基礎的な使い方だけではなく、トラブルシュートや特定のユースケース、さらには他のツールと組み合わせることで実務に大きく役立ちます。ここでは、現場での具体的な活用方法について整理します。

DNSトラブルシュート手順

名前解決ができない、メールが届かないといった障害調査では、まずDNSを切り分ける必要があります。digを使えば詳細な応答が確認でき、原因の絞り込みが容易になります。

dig example.com

出力例:

; <<>> DiG 9.11.36-RedHat-9.11.36-3.el9 <<>> example.com
;; ANSWER SECTION:
example.com. 3600 IN A 93.184.216.34

この結果から、Aレコードが返っているかどうかを確認します。応答がなければ、別のDNSサーバーに問い合わせる、もしくはネットワーク側に問題がある可能性を疑うべきです。

特定ケースでの利用例

DNSはサービスごとに異なるレコードタイプを利用するため、ケースごとに適切な問い合わせを行うことが重要です。メールの配送障害であればMXレコードを、SPFやDKIMの問題であればTXTレコードを調査します。

dig example.com MX

出力例:

example.com. 3600 IN MX 10 mail.example.com.

このようにMXを確認すれば、メール配送先が正しく設定されているかが分かります。

他ツールとの組み合わせ

DNSコマンド単体では名前解決の成否や設定状況は確認できますが、実務では他ツールと併用することで調査の精度を高められます。例えば、pingやtracerouteと組み合わせることでネットワーク疎通の有無を確認し、nslookupで結果を補完するといった使い方です。

ping mail.example.com

出力例:

PING mail.example.com (93.184.216.50) 56(84) bytes of data.
64 bytes from 93.184.216.50: icmp_seq=1 ttl=57 time=11.3 ms

このようにDNS解決と疎通確認を組み合わせることで、問題が「名前解決なのか」「ネットワーク経路なのか」を迅速に切り分けることができます。

利用時の注意点

dig、host、nslookupはいずれも便利なコマンドですが、利用方法を誤るとシステムに不要な負荷をかけたり、ログが肥大化して管理が難しくなる場合があります。ここでは、実務で特に注意すべき点を整理します。

ログ容量の管理方法

DNS調査の結果をログとして保存する運用は有効ですが、長期間の蓄積により容量が急増することがあります。特にcronで定期的にコマンドを実行する場合は、ローテーション設定や古いログの削除が必要です。

logrotate /etc/logrotate.d/dns_check

このようにlogrotateを組み合わせれば、ログファイルを日次や週次で自動的にローテーションし、不要なデータを残さずに済みます。

性能負荷と影響範囲

DNSサーバーに対して短時間に大量のクエリを投げると、サーバーやネットワークに負荷を与える可能性があります。特にANYクエリは複数のレコードを一度に返すため、応答が大きくなりやすく注意が必要です。

dig example.com ANY

出力例:

example.com. 3600 IN A 93.184.216.34
example.com. 3600 IN MX 10 mail.example.com.
example.com. 3600 IN TXT "v=spf1 include:_spf.example.com -all"

このような結果が大量に返ると、調査の目的を超えてサーバーに余計な負荷を与えることになりかねません。

運用で起こりやすい落とし穴

運用では、DNSキャッシュの影響により調査結果が実際の設定と異なって見えることがあります。そのため、キャッシュを持たない権威サーバーに直接問い合わせる、または複数のDNSサーバーを指定して確認することが重要です。

dig @8.8.8.8 example.com

出力例:

;; SERVER: 8.8.8.8#53(8.8.8.8)
;; ANSWER SECTION:
example.com. 3600 IN A 93.184.216.34

このように特定のサーバーを指定することで、キャッシュや経路依存による誤解を防ぎ、より正確な結果を得ることができます。

まとめ

dig、host、nslookupはいずれもDNS調査を行うための基本コマンドであり、それぞれに特徴と適した利用シーンがあります。digは詳細で柔軟な調査に、hostはシンプルな確認作業に、nslookupは古い環境や対話モードでの操作に適しています。

これらのコマンドを正しく使い分けることで、ドメインの名前解決やメール配送トラブル、セキュリティ設定の確認など、幅広い場面で役立ちます。また、MXやNS、TXTといったレコードを個別に指定して調査する方法や、ANYクエリを用いた一括確認の仕組みを理解しておくと、障害対応のスピードを大きく向上させられます。

一方で、ANYクエリは必ずしも全情報を返すわけではなく、ログ肥大や性能負荷のリスクもあるため注意が必要です。必要に応じてログを整理し、権威サーバーへの直接問い合わせを行うことで、より正確で効率的な調査が可能になります。

最終的に重要なのは、単なるコマンド操作に留まらず「なぜその情報を取得するのか」を理解することです。日常的な監視やトラブルシュートにこれらのコマンドを取り入れることで、安定したシステム運用につなげることができます。

次のおすすめ記事

実践環境を整える

ここまで学んだ知識を実際に試すには、Linuxを動かす環境が必要です。手軽に始めるならVPSを利用するのがおすすめです。
VPS徹底比較!ConoHa・さくら・Xserverの選び方



VPSを利用してLinux環境を準備したら、実際の設定は下記の記事が参考になります。
VPSに開発環境を自動構築する方法|Apache+Tomcat+PostgreSQL

よく読まれている記事

1

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか? 無料で使えるだけでなく、高い柔軟 ...

2

Linux環境でよく目にする「Vim」という名前。サーバーにログインしたら突然Vimが開いてしまい、「どうやって入力するの?」「保存や終了ができない!」と困った経験をした人も多いのではないでしょうか。 ...

3

ネットワーク技術は現代のITインフラにおいて不可欠な要素となっています。しかし、ネットワークを深く理解するためには、その基本となる「プロトコル」と「レイヤ」の概念をしっかり把握することが重要です。 こ ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

5

Javaは世界中で広く使われているプログラミング言語であり、特に業務システムやWebアプリケーションの開発において欠かせない存在です。本記事では、初心者向けにJavaの基礎知識を網羅し、環境構築から基 ...

-ネットワーク系