digコマンド

Linux
OLYMPUS DIGITAL CAMERA
この記事は約7分で読めます。

dig(Domain Information Groper) は、DNSサーバに直接問い合わせを行うためのコマンドです。

Linuxでは標準的なDNS調査ツールで、 “nslookup” よりも詳細な情報を得られます。

DNS

インターネット上で、データの送り先住所(IPアドレス)の問い合わせに答えてくれるシステム。

これを担当するDNSサーバーは、担当ドメイン内のドメイン名とIPアドレスの対応表を所持しています。

この問い合わせ作業は、ブラウザでサイトに接続する直前に必須の作業であり、DNSサーバーはインターネットの根幹を担当するサーバー群です。

ドメイン名→IPアドレスの変換作業のことを “名前解決” と呼びます。(他の日本語には見られない、独特な表現です)

DNSサーバーの種類

同じような ” DNS” がついた名前なのでややこしいのですが、DNSサーバーには①権威DNSサーバーと②DNSリゾルバの2つがあります。

単に “DNSサーバー” の呼称であれば上記の両者の総称を指す場合と、文脈によっては権威DNSサーバーのみを指す場合があります。

権威DNSサーバー

ドメイン管理者が管理するサーバー。ネームサーバーとも呼ばれます。

例えるとお役所の戸籍係で、戸籍の原本を所持・公開します。

自分のレベルのドメインの情報を持ち、問い合わせに対し自分の持つ情報を返します。

冗長化目的で複数のサーバー(プライマリDNS、セカンダリDNS)がありますが、サーバー間で単一の情報が同期されています。

DNSリゾルバ

リゾルバという名称の他に、キャッシュサーバー、再帰サーバーとも呼ばれます。

例えると、戸籍調査の民間代行業者です。(つまり興信所とか探偵事務所とか、そんな感じ)

サーバーは自分の手持ちの情報(キャッシュ)で答えられる問い合わせにはその場で答えます。

そして手元にない場合にはお役所(権威サーバー)に順に(再帰的に)問い合わせて正しい情報を取得してきて回答します。

対比表

権威サーバーリゾルバ
名称・別名権威(DNS)サーバー
ネームサーバー
(DNSサーバー:文脈による)
(DNS)リゾルバ
キャッシュ(DNS)サーバー
再帰(DNS)サーバー
例えると役所の戸籍係戸籍調査の代行業者
種類プライマリDNS
セカンダリDNS
公開リゾルバ(オープンリゾルバ)
非公開のリゾルバ(内部からの問合せにのみ応答)
管理者担当ドメインの管理者各ネットワーク管理者
SOA所持不所持
フラグ(後述)aara
再帰的名前解決なしあり
サーバー側ソフトBIND / NSD / Knot
PowerDNS Authoritative
BIND / Unbound
PowerDNS Recuesor

公開リゾルバのうち優秀なものを見つけ出してくれるツールもあります。

基本構文

digコマンドの基本構文です

出力の解釈

下記は本サイトのドメインを問い合わせた結果です。

dig

以下、これを順に解釈します。

ヘッダ部

1行目

digのバージョン情報

2行目

digの内部デフォルト設定 (+cmd はヘッダ情報を表示するモード)

3行目

Got answer: DNSサーバから応答を受信したことを示す

4行目

HEADER セクション(重要)

opcode: QUERY 通常問い合わせ
status: NOERROR エラーなし
    NXDOMAIN ドメイン不存在
     SERVFAIL サーバ失敗
    REFUSED 拒否
id: xxxxx トランザクションID

5行目

flags部とカウント部からなります。

🔹flags部

フラグ意味
qr応答(Query Response)
rd再帰要求(Recursion Desired)
ra再帰可能(Recursion Available)
aa権威応答(Authoritative Answer)
tcパケット切断(Truncated)

🔹カウント部

項目意味
QUERY質問数
ANSWER回答数
AUTHORITY権威情報数
ADDITIONAL追加情報数

続く各セクション

以下の各セクションが並びます。(出力結果によっては表示されないセクションもあります)

セクション意味備考
QUESTION何を問い合わせたか上記例では、ドメイン(joenoji325.com)に、IN(internet)で、A(IPv4)を問い合わせた(次項で詳述)
ANSWER直接の回答次項で詳述
AUTHORITY権威DNS情報SOA情報表示(後述)(上記例にはこのセクションはありません)
ADDITIONAL補助情報NSのIPなど(上記例にはこのセクションはありません)
Query time応答時間上記例では40mSec
SERVER応答したDNSサーバ上記例では192.168.11.1(ポート53)であり、我が家のルータ(に付帯したDNSリゾルバ機能)が応答元です
WHEN問い合わせ日時上記例では、2026/2/21 16:09:03
MSG SIZEDNSパケットサイズ上記例では59

ANSWER SECTION

“;; ANSWER SECTION:”  の部分が問合わせの回答部分です。これについて解説します。

回答は下記の順に並んでいます

TTL(Time To Life)とは “DNS情報の賞味期限” であり、権威サーバーが発行する “リゾルバがキャッシュしても良い時間” です(単位:秒)
例では3600秒=1時間:1時間以内の再度の問合せにはこの情報を再利用するということ

レコードタイプ

上記問合せ例ではレコードタイプを何も指定していないので、デフォルトの “A” のレコードが返答がされています。

レコードタイプにはいくつかの種類があって他のレコードタイプを指定して問い合わせることも出来ます。

レコードタイプ意味
AIPv4アドレス
AAAAIPv6アドレス
MXメールサーバ
NSネームサーバ
TXTテキスト情報(SPF・DMARCなどの情報)
SOAゾーン管理情報
CNAME別名
PTR逆引き

この中でも特にSOAが重要です。

SOA(Start of Authority)について

SOAレコードは、「このゾーンを誰がどう管理しているか」を定義するレコードであり、ゾーンごとに必ず1つ存在します。

SOAレコードを指定した問合せ

下記例では、問合せ先を公開リゾルバ(8.8.8.8)に指定して問い合わせています。

SOA
出力の解釈(ANSWER SECTIONの部分)

※ hostmaster.example.com は、hostmaster@example.com を意味(最初のドットが @に相当します)

ゾーンとドメインの違い
 ゾーン = DNSサーバーが管理する範囲(運用単位):1ゾーンは1つのSOAを持つ
 ドメイン = 名前空間(論理的なツリー構造)
小規模環境では同一範囲ですが、大規模ではサブドメインでゾーンが分割され、両者は一致しなくなります。

別記)5つのパラメータ
パラメータ意味
① serial(ゾーンバージョン番号)ゾーンファイルの「更新番号」:セカンダリDNSはこの番号で更新判断します。
② refresh(再取得間隔)→ セカンダリDNSが何秒ごとにプライマリへ確認するか
③ retry(再試行間隔)→ refresh時に失敗した場合、どれくらいで再試行するか
④ expire(有効期限)→ プライマリに長期間接続できなかった場合この秒数経過でゾーン無効
⑤ minimum(ネガティブTTL)NXDOMAIN(ドメイン不存在)をキャッシュする時間

まとめ

普段はインターネットの道案内として裏方の仕事をしているDNSサーバーに対して、直接問合せを行うコマンド “dig” についてでした。

オプションなど、まだもう少し書き足りない事項もあるので、続編を投稿しようと思います。

コメント

タイトルとURLをコピーしました