Windows/Linux

DIGを使用したDNSサーバの確認方法について

この記事は投稿日から2年以上経過しています。

当記事では、初学者を想定したDNSサーバの解説やDIGコマンドを利用したDNSサーバに対して正引き及び逆引きにてドメイン名やIPアドレスを調べる方法等を紹介します。

若手エンジニア志望者を募集!支度金あり

※DNSサーバについて知ってる!という方は「DIGとは」まで読み飛ばしてください。

DNSサーバについて

DNSサーバとはドメイン(弊社だと、secuavail.com)とIPアドレスを紐づけるものです。PCやスマートフォン(以下、DNSクライアントといいます。)のブラウザでURL(ドメイン)を入力するとWebサイトが表示されます。ですが、実際すぐURLからWebサイトが呼び出されているわけではありません。当記事では、Linux上でDIGコマンドを使用してどのようにURLからWebサイトへアクセスしているのか仕組みを解説します。

DNSサーバは大きく以下の3つに分かれます。

  • ルートサーバ
    DNSサーバの最上位に位置するのが「ルートサーバ」で世界に13機あるといわれていますが、実際には13個のIPアドレスそれぞれ複数のサーバがあり、エニーキャストルーティングを使用して負荷分散を図っています。
  • 権威DNSサーバ
    ルートサーバの他に、NSサーバがあり、.jpや.comなどのTLD(トップレベルドメイン)の権威サーバ、.comや.neなどSLD(セカンドレベルドメイン)の権威サーバなどがあり、階層構造になってあります。
  • キャッシュDNSサーバ
    DNSクライアントからドメイン名に関する問い合わせを受け、ルートサーバはじめとする複数の権威DNSサーバに対して繰り返し問い合わせを行い、結果をDNSクライアントに返します。短期間に同じ問い合わせをサーバルートサーバに送らないよう問い合わせ結果をキャッシュしています。代表的なものにgoogle社の8.8.8.8やCloudflare社の1.1.1.1などのDNSキャッシュサーバがあります。

図で説明すると以下のようになります。

  1. DNSクライアントからキャッシュDNSサーバに対してドメイン名に関する問い合わせを行います。
  2. キャッシュDNSサーバはまず、自身のキャッシュに該当するIPアドレスが存在するか確認します。IPアドレス情報がない場合はルートサーバに対して問い合わせを行います。
  3. ルートサーバからキャッシュDNSサーバへ.comを管理するTLDの権威DNSサーバに問い合わせるよう回答が行われます。
  4. キャッシュDNSサーバから.comを管理するTLDの権威DNSサーバに対して問い合わせを行います。
  5. .comを管理するTLDの権威DNSサーバからsecuavail.comを管理するSLDの権威DNSサーバに問い合わせるよう回答が行われます。
  6. キャッシュDNSサーバからsecuavail.comを管理する3LDの権威DNSサーバに対して問い合わせを行います。
  7. secuavail.comを管理する3LDの権威DNSサーバからsecuavail.comのIPアドレスである「18.180.167.106」がキャッシュDNSサーバへ回答が行われます。
    ※キャッシュDNSサーバはsecuavail.com=18.180.167.106 という情報をキャッシュし以降はキャッシュDNSサーバからDNSクライアントへ回答します。
  8. キャッシュDNSサーバからDNSクライアントへIPアドレスの回答が行われます。
  9. DNSクライアントはキャッシュDNSサーバから回答のあったIPアドレスを元にWebページを持つサーバへアクセスを行います。

上記の流れを踏まえて実際にDIGコマンドを使用してDNSサーバに対して問い合わせを行ってみます。

DIGとは

ネットワーク管理のためのコマンドラインツールで「Domain Information Groper」の略でDNSサーバに問い合わせを行いサーバから様々な情報収集するためのコマンドです。

今回使用するAlmaLinuxのバージョンは下記のとおりです。

AlmaLinux release 8.7 (Stone Smilodon)

  • DIGのインストール
    # yum install bind-utils


    バージョンを確認します。

DIGの基本的な使い方

今回は、www.secuavail.comを例にしてコマンドの使い方と表示内容を説明します。「dig -h」でヘルプを出すと色々なオプションが出てきますがここでは基本的なものを紹介していきます。

構 文

# dig[@server]domain[query-type][query-class][+-][query-option]

DNSレコード

  • Aレコード:IPv4でホスト名とIPアドレスの関連付けをします。
  • AAAAレコード:IPv6でホスト名とIPアドレスの関連付けをします。
  • PTRレコード:IPアドレスからホスト名を参照する場合「逆引き」に使用します。
  • MXレコード:対象ドメイン宛のメール配送先ホスト名を定義する種類のDNSレコード。
  • NSレコード:ゾーン情報を管理するネームサーバを指す。ドメイン自身のDNSサーバを定義するケースと、サブドメインのDNSサーバを定義するケースがあります。ドメイン情報を調べる際に、上位ドメインが分からなければ、下位ドメインのNSレコードが示すサーバに問い合わせを行う。それを繰り返します。
  • SOAレコード:ドメイン名はゾーンと呼ばれる領域に分割されており、ゾーン毎に定義や管理を行っています。SOAではDNSサーバ名、管理者のメールアドレス、ゾーンファイルのVer、ゾーン情報の更新間隔、refresh失敗時の再試行間隔、ゾーン情報の有効期間、TTLの設定が登録されます。
  • TXTレコード:ホスト名に関連付けるテキスト情報を定義するDNSレコードです。

 

例:SecuAvailのWebページを例にします。

IPアドレス 18.180.167.106
ドメイン名  secuavail.com

まず、以下のコマンドを実行します。

# dig secuavail.com

記載内容は以下の通りです。

HEADER
各セクションに関するステータスやフラグが記載されています。

  • Status 応答コード
    • NOERROR:正常な応答を示します。
    • REFUSED:リクエストが拒否されたこと示す。
  • Flags ヘッダーに含まれるビット
    • qr:応答であることを示します。
    • rd:再帰的問い合わせをしたことを示します。
    • ra:再帰的問い合わせが可能であることを示します。

セクション

  • QUERY SECTION
    問い合わせ内容 特に指定がなければAレコード
  • ANSWER SECTION
    問い合わせドメインに対する回答 IPアドレス、TTL、レコードのクラスとタイプ等
  • AUTHORITY SECTION
    権威DNSサーバの情報 問い合わせたDNSサーバの一覧を表示
  • ADDITIONAL SECTION
    その他問い合わせ情報の詳細
    問い合わせから回答までの時間、問い合わせに使用したDNSサーバ等

DIGコマンドのオプション

# dig ドメイン名 +short

最小限の内容を返します。

 

# dig -x [IPアドレス]

逆引き IPアドレスを指定することでドメイン名を返します。

 

# dig ドメイン名 +NS

ネームサーバを返します。

 

# dig ドメイン名 +MX

メールサーバを返します。

 

# dig @dnsサーバ ドメイン名

問い合わせ先のDNSサーバを指定します。

 

# dig ドメイン名 -4

IPv4で問い合わせを行う。

 

# dig ドメイン名 -6

IPv6で問い合わせを行う。

※問い合わせを行った結果、タイムアウトエラーが返っていきています。

dig +trace を使ってルートサーバに問い合わせているかを確認

+traceを使うことでネームサーバのように動作し、ルートサーバ等権威サーバへ問い合わせを行うような動作をします。

まず「 . 」のルートドメインを知るネームサーバ、ルートサーバが解決されます。ここにはA~MまでのNSレコードが13あり、ルートサーバが13あることが分かります。

;; Received 525 bytes from 8.8.8.8#53(8.8.8.8) in 3 ms

この結果を返してくれたのが「8.8.8.8」のgoogleのDNSサーバ53番ポートでこの結果を返してきてくれています。

;; Received 1201 bytes from 192.36.148.17#53(i.root-servers.net) in 7 ms

次に.comのネームサーバも13か所から返答が帰ってきています。

結果を返してきてくれたのは192.36.148.17#53(i.rootservers.net)というサーバです。

;; Received 661 bytes from 192.42.93.30#53(g.gtld-servers.net) in 117 ms

結果を返してきてくれたのは192.42.93.30#53(g.gtld-servers.net)というサーバです。

※gTLDは、generic Top-Level Domain といい、分野別のトップレベルドメインを意味する。

 

;; Received 128 bytes from 202.239.81.35#53(ns02.secuavail.com) in 15 ms

ここで、secuavail.com.のネームサーバとIPアドレスが返ってきています。

結果を返してきたのが202.239.81.35#53(ns02.secuavail.com)というネームサーバで

Secuavail.comのIPアドレスが18.180.167.106という回答が返ってきます。

この回答を元にキャッシュDNSサーバはDNSクライアントにドメインに対するIPアドレスを返し、DNSクライアントはWebサイトのあるサーバへアクセスすることができます。

 

記事まとめ

以上、DIGコマンドを使用したDNSサーバについての説明でした。普段何気なく使用するインターネットですが、DNS一つを調べても内容が深く記事にできないことが多くありました。今後も気になったことを勉強しながら少しずつ報告できたらいいなと思います。

若手エンジニア志望者を募集!支度金あり

LogStare Collector 無償版

記載されている会社名、システム名、製品名は一般に各社の登録商標または商標です。

当社製品以外のサードパーティ製品の設定内容につきましては、弊社サポート対象外となります。

Linuxにおけるsnmpwalkコマンドのオプションと使い方について前のページ

Linux/Windows pingコマンドの使い方とオプションについて次のページ

ピックアップ記事

  1. Zabbixヒストリデータのレポート生成について
  2. 自社製品をAMIにしてAWSマーケットプレイスへ出品
  3. IoT機器「Raspberry pi」とLogStare Collectorで温…
  4. ログフォワーダー「okurun.jar」について

関連記事

  1. Windows/Linux

    LogStare CollectorにてUbuntuをSNMP(v1, v2c) で監視するための設…

    当記事では、LogStare CollectorにてUbuntuをSN…

  2. Windows/Linux

    テキストマッチングを利用したAudit.logの監視について

    当記事では、LogStare Collector(以下、LSCと記載)…

  3. Windows/Linux

    IIS アクセスログを収集する方法|ログの設定から収集まで

    WindowsのIIS にはアクセスログの記録を行う機能があります。I…

  4. Windows/Linux

    Audit.logをsyslogを利用して収集する方法

    当記事では、rsyslogを利用してAudit.logをsyslogサ…

  5. Windows/Linux

    WindowsServerにaws cliバージョン2をインストールする方法について

    当記事では、WindowsServerにaws cliバージョン2をイ…

  6. Windows/Linux

    rsyslogをホスト名、IPアドレスごとにフォルダー分けする方法

    当記事では、rsyslogで受信したログを送信元ホスト名、IPアドレス…

若手エンジニア志望者を募集!
LogStare Collector 無償版
クラウド活用の「困った」「焦った」事例
月額200円でM356の監査ログの運用レベルUP LogStare M365
AWSのログ分析・モニタリングに 次世代のマネージド・セキュリティ・プラットフォーム LogStare

  1. NW機器

    PaloAltoのIPsec IKEv1 Phase1におけるトラブルシューティ…
  2. 実践記事

    DNSキャッシュポイズニングやってみた
  3. SNMPを触ってみた

    ログ分析・監視テクニック

    SNMPとは?新入社員が生まれてはじめて触ってみた!
  4. ログ分析・監視テクニック

    nProbeであらゆる通信をログに記録し可視化する
  5. AWS/Azure

    AWSマーケットプレイス上から無償版のLogStare Collectorを試す…
PAGE TOP