digコマンドでDNSを調査する方法|AレコードからDNSSECまで実務で使う引き方コマンド

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドA-E, ネットワーク, ネットワーク管理コマンド > digコマンドでDNSを調査する方法|AレコードからDNSSECまで実務で使う引き方コマンド
「digの出力が多すぎて、どこを読み取ればいいか分からない」
「ドメイン移管やDNS切り替えで、実際の伝播状況をどう確認すればいい?」
DNSのトラブル対応では、digコマンドで正引き・逆引き・権威サーバーの状態を素早く確認できるかが勝負を分けます。

この記事では、digコマンドについて、基本的な正引き・逆引きから、レコードタイプ指定(A/MX/TXT/NS/CNAME)、権威DNSサーバーへの直接問い合わせ、+short+traceといった実務でよく使うオプション、DNS伝播の確認、そしてnslookupとの違いまで解説します。
【この記事でわかること】
・digはBIND由来のDNS問い合わせコマンドで、DNS調査における事実上の標準ツール
+shortで結果だけ、+traceでルートからの経路、@DNSサーバーで直接問い合わせができる
・レコードタイプ(A/AAAA/MX/TXT/NS/CNAME/SOA)を切り替えて、あらゆるDNS情報を取得可能

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

digとは?BIND由来のDNS調査コマンド

dig(Domain Information Groper)は、BIND(DNSサーバー実装)に付属するDNS問い合わせツールです。正引き・逆引き・各種レコードの取得・権威サーバーへの直接問い合わせまで、DNS関連の調査はほぼすべてdig1本でこなせます。

以前はnslookupが使われていましたが、digのほうが出力が詳細でスクリプト連携もしやすく、RHEL7以降はdigが推奨コマンドになっています。

パッケージ:bind-utils(RHEL系)/dnsutils(Debian系)
インストール:sudo dnf install bind-utilsまたはsudo apt install dnsutils

基本的な使い方

1. ドメイン名からIPアドレスを引く(正引き)

最も基本的な使い方です。何も指定しないとAレコード(IPv4アドレス)を引きます。

# 正引き(Aレコード) dig www.example.com

2. 結果だけを簡潔に表示する(+short)

スクリプトで結果だけ欲しい場合は+shortが便利です。

# IPアドレスだけを表示 dig +short www.example.com

3. IPアドレスからドメイン名を引く(逆引き)

-xを付けるとPTRレコードを引きます。

# 逆引き dig -x 93.184.216.34

4. レコードタイプを指定する

MX(メール)、NS(権威サーバー)、TXT(SPFやDKIM)、CNAMEなど、必要なレコードタイプを指定します。

# メールサーバーを調べる dig example.com MX # 権威ネームサーバーを調べる dig example.com NS # TXTレコード(SPF・DKIM・ドメイン認証など) dig example.com TXT # SOAレコード(ゾーンの管理情報) dig example.com SOA

応用・実務Tips

特定のDNSサーバーに直接問い合わせる(@)

@DNSサーバーを指定すると、そのDNSサーバーに直接問い合わせできます。DNS伝播の確認や権威サーバーの動作確認で必須のテクニックです。

# Google Public DNSに問い合わせる dig @8.8.8.8 www.example.com # 権威ネームサーバーに直接問い合わせる dig @ns1.example.com www.example.com

ルートから順に権威を追う(+trace)

+traceはルートサーバーから順に辿って、最終的な権威サーバーの回答に到達するまでの経路を表示します。委任の問題を切り分けるのに強力です。

# ルートから辿って権威に到達するまでを表示 dig +trace www.example.com

キャッシュの影響を排除する

公開DNS側のキャッシュではなく、常に権威に直接聞きたい場合は、NSレコードを先に調べてから@で権威を指定します。

# 権威を調べてから直接問い合わせる dig example.com NS +short dig @ns1.example.com www.example.com

DNS伝播を確認する

ドメイン移管やDNS切り替え時は、複数のリゾルバで同じ問い合わせを行い、結果が揃うかを確認します。

# 主要リゾルバに問い合わせて結果を比較 dig @8.8.8.8 www.example.com +short dig @1.1.1.1 www.example.com +short dig @208.67.222.222 www.example.com +short

クエリ時間を確認する

dig出力の末尾にあるQuery timeの値で、DNSの応答速度を確認できます。遅い場合はリゾルバや経路を疑います。

出力の読み方

dig出力は4つのセクションに分かれています。

HEADER:ステータスやフラグ(status: NOERRORが正常、NXDOMAINはドメインが存在しない)
QUESTION SECTION:問い合わせ内容
ANSWER SECTION:回答(ここが一番重要)
AUTHORITY SECTION:権威ネームサーバー
ADDITIONAL SECTION:補足情報(権威NSのIPなど)

DNSSEC署名を確認する(+dnssec・DS・DNSKEY)

DNSSEC(DNS Security Extensions)は、DNS応答にデジタル署名を付加して改ざんを検出する仕組みです。金融機関や政府機関のドメインで有効になっているケースが増えており、「署名はあるか」「検証チェーンは繋がっているか」をdigで手軽に確認できます。

1. RRSIG(署名レコード)を含む応答を取得する(+dnssec)

+dnssecオプションを付けると、通常の応答に加えてRRSIG(Resource Record Signature)が返ってきます。adフラグ(Authentic Data)がHEADERに立っていれば、リゾルバがDNSSEC検証済みであることを示します。

# DNSSECの署名情報を含めて問い合わせる dig +dnssec www.example.com # 出力例(adフラグに注目) # ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345 # ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, ... # ↑ "ad" フラグがあればリゾルバがDNSSEC検証済み

2. DSレコードで委任署名を確認する

DSレコード(Delegation Signer)は親ゾーンが子ゾーンの公開鍵ハッシュを保持するレコードで、DNSSECの信頼チェーンを形成します。DSレコードが存在すれば、そのドメインでDNSSECが有効になっていることを確認できます。

# DSレコードを取得する(親ゾーンのDNSSEC有効確認) dig example.com DS # 8.8.8.8(DNSSEC対応リゾルバ)経由で問い合わせる dig @8.8.8.8 example.com DS +short

3. DNSKEYで公開鍵を確認する

DNSKEYレコードにはゾーンの公開鍵が格納されています。DSレコードのハッシュ値とDNSKEYが一致することで信頼チェーンが検証されます。

# DNSKEYレコードを取得する dig example.com DNSKEY # +shortで鍵のビット数のみを確認 dig +short example.com DNSKEY

4. DNSSEC未対応ドメインとの違い

DSレコードが返らない(status: NOERRORだがANSWER: 0)場合は、そのドメインでDNSSECが有効化されていないことを意味します。HEADERのadフラグが立っていない場合も同様です。

# DNSSEC有効化の確認(adフラグ有無で判定) dig +dnssec example.com A | grep "flags:" # adフラグあり → DNSSEC検証済み # adフラグなし → DNSSECなし、または検証未実施

トラブルシュート・エラー対処

「connection timed out; no servers could be reached」が出る場合

指定したDNSサーバーに到達できていません。/etc/resolv.confの設定やファイアウォール(UDP/53、TCP/53)を確認してください。

# /etc/resolv.confの内容 cat /etc/resolv.conf # DNSサーバーへの疎通確認 ping -c 2 8.8.8.8

「status: NXDOMAIN」が返る場合

問い合わせたドメインが存在しません。スペルミスか、まだ登録されていない可能性があります。権威サーバーに直接問い合わせて確認しましょう。

「dig: command not found」が出る場合

bind-utils(または dnsutils)が入っていません。インストールしてください。

# RHEL/CentOS/AlmaLinux/Rocky sudo dnf install -y bind-utils # Debian/Ubuntu sudo apt install -y dnsutils

キャッシュDNSと権威DNSで結果が異なる場合

DNS切り替え直後はキャッシュが古い値を保持している可能性があります。権威に直接問い合わせて最新値を確認し、TTLが切れるまで待つのが基本です。

本記事のまとめ

やりたいこと コマンド
正引き(Aレコード) dig www.example.com
結果だけを表示 dig +short www.example.com
逆引き dig -x 93.184.216.34
MXレコードを調べる dig example.com MX
NSレコードを調べる dig example.com NS
TXTレコードを調べる dig example.com TXT
特定DNSサーバーに直接問い合わせ dig @8.8.8.8 www.example.com
ルートから権威まで辿る dig +trace www.example.com
DNSSEC署名を含めて問い合わせ dig +dnssec www.example.com
DSレコード(DNSSEC有効確認) dig example.com DS
DNSKEYレコードを確認 dig example.com DNSKEY

DNSトラブルを一人で切り分けられる、本物のLinuxエンジニアになりませんか?

DNSは「動いて当たり前」と思われがちですが、実は障害原因の3割がDNS起因と言われる領域です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。