digコマンドの使い方|結果の見方とstatusの意味

digコマンドの使い方

digコマンドは、DNSサーバーに直接問い合わせて、名前解決の結果と応答の中身をそのまま表示するコマンドです。「dig ドメイン名」でAレコード、「@サーバー」で問い合わせ先、「+short」で答えだけを出せます。結果で最初に見るのはstatusとANSWERの2か所です。

この記事でわかること

  • digコマンドの基本の書き方と、よく使うオプション
  • 結果の各セクション・flags・TTLの読み方
  • NOERROR・NXDOMAIN・SERVFAIL・REFUSEDの意味と次の一手
  • 答えが0件なのにNOERRORになる場合の見分け方
  • +norecurseと+traceでDNSの切り替えを確かめる手順

一次情報: BIND 9 Documentation「Manual Pages(dig)」(参照)/RFC 1035「Domain Names – Implementation and Specification」(参照)/RFC 2308「Negative Caching of DNS Queries」(参照)/Microsoft Learn「Resolve-DnsName」(参照)※2026年10月時点

「名前が引けない」の切り分けは、監視・運用の現場で最初に任される仕事の1つです。監視の仕事からインフラエンジニアへ進む道筋は、別の記事にまとめました。

目次

digコマンドとは?DNSの応答をそのまま見るコマンド

digコマンドとは、DNSサーバーに問い合わせを送り、返ってきた応答を加工せずに表示するコマンドです。DNSのソフトとして広く使われるBINDに付いてくる道具で、名前はDomain Information Groperの頭文字から来ています。

nslookupと比べると、応答の状態やフラグ、TTL(キャッシュしてよい秒数)までそのまま見えるのが違いです。サーバー側の設定が正しいかを確かめる場面では、digが標準の道具になっています。

digコマンドを使える環境
環境使えるか入っていないときの入れ方
Mac最初から使える―
RHEL・Rocky・AlmaLinux入っていないことがあるsudo dnf install bind-utils
Ubuntu・Debian入っていないことがあるsudo apt install dnsutils
Windows標準では入っていないWSLのLinuxで使うか、PowerShellのResolve-DnsNameで代わりにする

Windowsで手軽に済ませるなら、代わりの道具はResolve-DnsNameです。Microsoftの資料のとおり、-Serverで問い合わせ先、-Typeでレコードの種類を指定できます。

digコマンドの基本の書き方とよく使うオプション

書き方は「dig @問い合わせ先 名前 レコードの種類 オプション」です。@と種類を省くと、PCに設定されたDNSサーバーへ、Aレコード(IPv4アドレス)を問い合わせます。

dig www.example.com
dig example.com MX
dig @192.0.2.53 www.example.com
dig -x 192.0.2.10
dig www.example.com +short

アドレスは説明用の値です。-xを付けると、IPアドレスから名前を引く逆引きになります。

digコマンドのよく使う書き方
やりたいこと書き方補足
答えだけを見るdig 名前 +shortアドレスだけが1行ずつ出る
応答の部分だけを見るdig 名前 +noall +answerTTLも一緒に見たいとき
レコードの種類を指定dig 名前 MX(NS・TXT・CNAME・AAAA)種類は名前の後ろに書く
問い合わせ先を指定dig @サーバー 名前権威サーバーとキャッシュの比較に使う
逆引きdig -x アドレスPTRレコードを引く
キャッシュを頼らず聞くdig @サーバー 名前 +norecurseそのサーバーが持つ情報だけを返させる
ルートから順にたどるdig 名前 +trace委任のどこで止まるかを見る
TCPで問い合わせるdig 名前 +tcpUDPが通らない経路の確認

digの結果の見方|セクションごとの意味

オプションを付けずに打つと、結果はいくつかのセクションに分かれて出ます。先頭に「;」が付いた行は説明やコメントで、付いていない行が実際のレコードです。

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41235
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;www.example.com.            IN    A

;; ANSWER SECTION:
www.example.com.     300     IN    A    192.0.2.10

;; Query time: 12 msec
;; SERVER: 192.0.2.53#53(192.0.2.53) (UDP)
digの結果の各部分と見るところ
部分中身見るところ
HEADER応答の状態statusと、ANSWERの件数
flags応答の性質aaがあるか、raがあるか
QUESTION何を聞いたか名前と種類の打ち間違い
ANSWER答え値と、左から2つ目のTTL
AUTHORITYその名前を管理するサーバー答えが無いときの手がかり
末尾(Query time・SERVER)かかった時間と回答したサーバー本当に聞きたいサーバーが答えたか

ANSWERの1行は、左から「名前・TTL・クラス・種類・値」の順です。上の例なら、www.example.comのAレコードは192.0.2.10で、あと300秒はキャッシュしてよい、という意味になります。

flagsの読み方(qr・aa・rd・ra)

flagsの並びは、応答がどんな立場から返ってきたかを表します。RFC 1035で決められたフラグで、切り分けで見るのは特にaaとraの有無です。

digのflagsに出る主な文字
文字意味読み方
qr応答である応答なら常に付く
aa権威ある回答その名前を管理するサーバー自身が答えた
rd再帰を頼んだdigは既定で付けて送る
ra再帰に応じられるキャッシュサーバーなら付く

aaが無い答えは、キャッシュサーバーが覚えていた値です。設定を変えた直後に「新しい値になっているか」を見るなら、aaの付いた答えを見る必要があります。

TTLは「あと何秒覚えておくか」

キャッシュサーバーに同じ名前を何度か聞くと、TTLの数字が少しずつ減っていきます。これは「キャッシュしてから残り何秒か」を表しているためです。

権威サーバーに聞くと、設定された元のTTLがそのまま返ります。古い値が残っているキャッシュサーバーでは、残りのTTLが0になるまで新しい値に替わりません。切り替えの完了まで待つ時間は、この数字で見積もれます。

statusの意味と、次に確かめること

statusは、問い合わせがどう終わったかを表す欄です。RFC 1035で決められた応答コードを、digが名前で表示しています。

digのstatusと切り分け
status意味次に確かめること
NOERROR(ANSWERが1以上)正常に答えが返った値が想定どおりか
NOERROR(ANSWERが0)名前はあるが、その種類のレコードが無い種類の指定違い、レコードの登録漏れ
NXDOMAINその名前自体が存在しない名前の綴り、ゾーンへの登録
SERVFAILサーバーが答えを作れなかった権威サーバーに届くか、DNSSECの検証
REFUSEDサーバーが問い合わせを断ったそのサーバーを使ってよい端末か

答えが0件のNOERRORは、RFC 2308でNODATAと呼ばれる状態です。たとえばAレコードだけを登録した名前にAAAAを聞くと、この形になります。NXDOMAINと取り違えやすいので、ANSWERの件数まで見て判断する習慣をつけておくと安全です。

statusすら出ずに「connection timed out; no servers could be reached」となるのは、DNSサーバーから返事が無い場合です。53番のポートが途中で止められていないか、問い合わせ先のアドレスが正しいかを先に見ます。

DNSの切り替えが反映されたかを確かめる手順

Webサーバーの移転などでレコードを書き換えた後は、「権威サーバーは新しい値か」「キャッシュはいつ替わるか」を分けて確かめます。digなら、この2つを別々に聞けるのが強みです。

  1. dig 名前 NS +shortで、そのドメインの権威サーバーを調べる
  2. dig @権威サーバー 名前 +norecurseで聞き、flagsにaaがあり、値が新しいかを見る
  3. dig @社内やプロバイダのDNS 名前で聞き、値と残りのTTLを見る
  4. キャッシュ側が古ければ、残りTTLの秒数が切り替わりの目安になる
  5. 権威サーバーが古いままなら、dig 名前 +traceで委任の途中を順にたどる

BINDの資料にあるとおり、+traceはルートサーバーから順に問い合わせ、委任先をたどった結果を1段ずつ表示します。どの段で古いサーバーへ案内されているかが見えるので、ドメインの登録先でNSを書き換え忘れた場合も見つけられます。

権威サーバーとキャッシュサーバーは、聞き分ける

権威サーバーに聞く
書き方
dig @権威サーバー 名前 +norecurse
flags
aaが付く
わかること
今の設定が新しい値になっているか
キャッシュサーバーに聞く
書き方
dig @社内のDNS 名前
flags
aaが無く、raが付く
わかること
利用者に今見えている値と、残りのTTL

図:設定の正しさは権威サーバーで、利用者への反映はキャッシュサーバーで確かめる

よくある質問

Windowsでdigを使うにはどうすればいいですか?

Windowsには標準で入っていないため、WSLで動かしたLinuxの中で使うのが手軽です。インストールせずに済ませたいときは、PowerShellの「Resolve-DnsName 名前 -Server サーバー -Type 種類」で同じ問い合わせができます。

dig +shortで何も表示されません

答えが0件だったという意味です。名前が存在しないのか、名前はあるのに指定した種類のレコードが無いのかは、+shortでは区別がつきません。+shortを外して打ち直し、statusとANSWERの件数を見てください。

「WARNING: recursion requested but not available」と出ました

再帰の問い合わせを受け付けないサーバー(多くは権威サーバー)に聞いたときの表示で、エラーではありません。そのサーバーが管理する名前なら、答えは正しく返ってくるので心配いりません。気になる場合は+norecurseを付けて聞けば、この表示は出なくなります。

digでは新しい値なのに、ブラウザでは古いサイトが開きます

PCやブラウザが、別に名前解決の結果を覚えていることがあります。hostsファイルに古い値が書かれていないかもあわせて確かめてください。PC側のキャッシュを消してから、ブラウザを開き直すと替わることが多いです。

digとnslookupは、どちらを使えばいいですか?

フラグやTTLまで見て設定を確かめるならdig、Windowsで手早く引くだけならnslookupやResolve-DnsNameが向いています。どちらも同じDNSサーバーに聞けば、返る答えは同じです。

まとめ

  • digコマンドは、DNSの応答を加工せずに見せる道具。「dig @サーバー 名前 種類」で打つ
  • 最初に見るのはstatusとANSWERの件数。値の横の数字はTTL
  • aaは権威サーバー自身の答え、raはキャッシュサーバーの印
  • 答え0件のNOERRORは「その種類のレコードが無い」。NXDOMAINとは別物
  • 切り替えの確認は、権威サーバーを+norecurseで、利用者側をキャッシュサーバーで聞き分ける

名前が正しく引けているのにつながらないなら、問題はDNSの先にあります。その場合は、相手のアドレスまで届くかをpingやtracertで、ポートまで届くかをtelnetやTest-NetConnectionで確かめていく順番になります。

DNSの設定まで自分で読めることは、運用から設計・構築の仕事へ移るときの強みです。未経験・CCNA・CCNPの段階別に、ネットワークエンジニアが使う転職エージェントを比べてまとめました。

段階別の転職エージェント比較を見る


免責事項

※本記事はBINDの公式資料・RFC・Microsoftの公式ドキュメントなどの公開情報をもとに整理したものです。コマンドの表示や挙動は、OSやソフトのバージョン・環境によって変わる場合があります。業務で使う環境では、所属先の手順と各製品の最新資料をあわせてご確認ください。


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Tanabeです。新卒でSIerに入り、ネットワークの設計から構築、運用保守、クラウド移行まで10年やってきました。その間に転職を3回、CCNPも取りました。

正直に言うと、資格を取っても年収はすぐには上がりませんでした。1回目の転職は失敗、2回目でようやく150万円上がり、3回目で今の事業会社に落ち着いた。動いてみて分かったのは、資格の有無より「現場で何を任されてきたか」で評価が決まる、ということです。

エージェントの言葉を鵜呑みにして、危うく後悔しかけた経験もあります。だからこそ、自分がやらかした失敗をそのまま書いて、同じ回り道をしなくて済むように残しています。転職を考え始めた人が、条件で損をしないための材料にしてもらえたら嬉しいです。

目次