Linuxでdigコマンドを使用する方法
公開: 2022-01-29 Linux dig
コマンドを使用すると、DNSサーバーにクエリを実行してDNSルックアップを実行できます。 IPアドレスが戻るドメインを見つけることもできます。 方法をお見せします!
digコマンドのしくみ
人々はdig
コマンドを使用して、ドメインネームシステム(DNS)サーバーにクエリを実行します。 dig
は、Domain InformationGroperの頭字語です。 dig
を使用すると、ホストアドレス、メール交換、ネームサーバー、関連情報など、さまざまなDNSレコードに関する情報をDNSサーバーに照会できます。 これは、DNSの問題を診断するためのツールとなることを目的としていました。 ただし、これを使用して、インターネットルーティングトラフィックを維持する中央システムの1つであるDNSについて詳しく調べることができます。
インターネットはインターネットプロトコル(IP)アドレスを使用して、Web上の「場所」を識別しますが、人々はドメイン名を使用します。 WebブラウザやSSHクライアントなどのアプリケーションにドメイン名を入力する場合、何かをドメイン名から実際のIPアドレスに変換する必要があります。 これがドメインネームシステムの出番です。
インターネットに接続されたプログラムでドメイン名を使用すると、ローカルルーターはドメイン名を解決できません(以前のリクエストからキャッシュされていない限り)。 したがって、ルーターは、インターネットサービスプロバイダー(ISP)のDNSサーバー、またはシステムで使用するように構成したその他のサーバーにクエリを実行します。 これらはDNSプリカーサーサーバーと呼ばれます。
DNSサーバーが最近、同じコンピューター上の他の誰かから同じ要求を受信した場合、その答えはキャッシュにある可能性があります。 その場合は、同じ情報をプログラムに送り返すだけです。
DNSプリカーサーサーバーがキャッシュ内のドメインを見つけることができない場合、DNSルートネームサーバーに接続します。 ルートサーバーは、ドメイン名をIPアドレスに解決するために必要な情報を保持しませんが、要求に役立つサーバーのリストを保持します。
ルートサーバーは、.COM、.ORG、.CO.UKなど、ドメイン名が属するトップレベルドメインを調べます。 次に、これらのタイプのドメインを処理するトップレベルドメインサーバーのリストをDNSプリカーサーサーバーに送り返します。 その後、DNSプリカーサーサーバーは、トップレベルドメインサーバーに対してもう一度要求を行うことができます。
トップレベルドメインサーバーは、権限のあるネームサーバー(ドメインの詳細が保存されている場所)の詳細をDNSプリカーサーサーバーに送り返します。 次に、DNSサーバーは、プログラムに最初に入力したドメインのゾーンをホストしている権限のあるネームサーバーにクエリを実行します。 権限のあるネームサーバーはIPアドレスをDNSサーバーに送り返し、DNSサーバーはそれをDNSサーバーから送り返します。
digのインストール
dig
はすでにUbuntu18.04およびFedora30コンピューターにインストールされています。 ただし、次のコマンドを使用してManjaro18.04コンピューターにインストールする必要がありました。
sudo pacman -Sy bind-tools
dig入門
最初の例では、ドメイン名に関連付けられたIPアドレスを返します。 多くの場合、複数のIPアドレスが単一のドメイン名に関連付けられています。 これは、たとえば、負荷分散が使用されている場合によく発生します。
以下に示すように、 +short
queryオプションを使用します。これにより、簡潔な応答が得られます。
howtogeek.com + shortを掘る
howtogeek.comドメインに関連付けられているすべてのIPアドレスが一覧表示されます。 スペクトルの反対側では、 +short
queryオプションを使用しない場合、出力は非常に冗長になります。
したがって、次のように入力して、パイプをless
します。
howtogeek.comを掘る| 以下
以下に示すように、出力はless
で表示されます。
完全なリストは次のとおりです。
; << >> DiG 9.11.3-1ubuntu1.11-Ubuntu << >> howtogeek.com ;; グローバルオプション:+ cmd ;; 答えを得た: ;; ->> HEADER <<-オペコード:QUERY、ステータス:NOERROR、ID:12017 ;; フラグ:qr rd ra; 質問:1、回答:4、権限:0、追加:1 ;; オプトシュードセクション: ; EDNS:バージョン:0、フラグ:; udp:65494 ;; 質問セクション: ; howtogeek.com。 で ;; 回答セクション: howtogeek.com。 3551 IN A 151.101.194.217 howtogeek.com。 3551 IN A 151.101.130.217 howtogeek.com。 3551 IN A 151.101.66.217 howtogeek.com。 3551 IN A 151.101.2.217 ;; クエリ時間:0ミリ秒 ;; サーバー:127.0.0.53#53(127.0.0.53) ;; 日時:Sun Mar 22 07:44:37 EDT 2020 ;; MSGサイズrcvd:106
その部分を少しずつ分析してみましょう。
ヘッダ
まず、ヘッダーにあるものを見てみましょう。
; << >> DiG 9.11.3-1ubuntu1.11-Ubuntu << >> howtogeek.com ;; グローバルオプション:+ cmd ;; 答えを得た: ;; ->> HEADER <<-オペコード:QUERY、ステータス:NOERROR、ID:12017 ;; フラグ:qr rd ra; 質問:1、回答:4、権限:0、追加:1
さて、これがそのすべての意味です:
- 最初の行:
dig
のバージョンと照会されたドメイン。 - グローバルオプション:これから説明するように、
dig
を使用して複数のドメインを同時にクエリできます。 この行は、すべてのドメインクエリに適用されたオプションを示しています。 簡単な例では、これはデフォルトの+cmd
(コマンド)オプションでした。 - オペコード:クエリ:これは、要求された操作のタイプであり、この場合は
query
でした。 この値は、逆クエリの場合はiquery
、DNSシステムの状態をテストしている場合はstatus
にすることもできます。 - ステータス:エラーなし:エラーはなく、リクエストは正しく解決されました。
- ID:12017 :このランダムIDは、要求と応答を結び付けます。
- フラグ:qr rd ra:これらは、
query
、recursion desired
、およびrecursion available
。 再帰はDNSルックアップの1つの形式です(もう1つは反復です)。 また、AA
は、Authoritative Answerの略で、Authoritative NameServerが応答を提供したことを意味します。 - クエリ:1:このセッションのクエリ数は1つでした。
- 回答:4:この回答の回答数は4です。
- 権限:0:権限のあるネームサーバーからの回答の数。この場合はゼロでした。 応答は、DNSプリカーサーサーバーのキャッシュから返されました。 応答には信頼できるセクションはありません。
- 追加:1:追加情報が1つあります。 (不思議なことに、この値が2以上でない限り、何もリストされません。)
疑似セクションを選択する
次に、OptPseudosectionに次のように表示されます。
;; オプトシュードセクション: ; EDNS:バージョン:0、フラグ:; udp:65494
それを分解しましょう:
- EDNS:バージョン0:使用されているDNSの拡張システムのバージョン。 EDNSは、ユーザーデータグラムプロトコル(UDP)パケットのサイズを拡張することにより、拡張データとフラグを送信します。 これは、可変サイズのフラグによって示されます。
- フラグ:使用中のフラグはありません。
- udp : 4096: UDPパケットサイズ。
質問セクション
質問セクションには、次のように表示されます。
;; 質問セクション: ; howtogeek.com。 で
これが意味することは次のとおりです。
- howtogeek.com:クエリしているドメイン名。
- IN:インターネットクラスのクエリを作成しています。
- A:特に指定がない限り、
dig
はDNSサーバーにA(アドレス)レコードを要求します。
回答セクション
Answerセクションには、DNSサーバーから受け取った次の4つの回答が含まれています。
howtogeek.com。 3551 IN A 151.101.194.217 howtogeek.com。 3551 IN A 151.101.130.217 howtogeek.com。 3551 IN A 151.101.66.217 howtogeek.com。 3551 IN A 151.101.2.217
これらの回答の意味は次のとおりです。
- 3551:これはTime to Live(TTL)であり、レコードをキャッシュできる時間間隔を保持する32ビットの符号付き整数です。 有効期限が切れると、DNSサーバーによって更新されるまで、データをリクエストへの応答で使用する必要があります。
- IN:インターネットクラスのクエリを作成しました。
- A: DNSサーバーにAレコードを要求しました。
統計セクション
統計は最後のセクションであり、次の情報が含まれています。
;; クエリ時間:0ミリ秒 ;; サーバー:127.0.0.53#53(127.0.0.53) ;; 日時:Sun Mar 22 07:44:37 EDT 2020 ;; MSGサイズrcvd:106
これが私たちが持っているものです:
- クエリ時間:0ミリ秒:応答を取得するのにかかった時間。
- サーバー:127.0.0.53#53(127.0.0.53):応答したDNSサーバーのIPアドレスとポート番号。 この場合、ローカルキャッシングスタブリゾルバーを指しています。 これにより、DNS要求が構成されているアップストリームDNSサーバーに転送されます。 Manajroテストコンピュータでは、ここにリストされているアドレスは、GoogleのパブリックDNSサービスである8.8.8.8#53でした。
- いつ:Sun Mar 22 07:44:37 EDT 2020:リクエストが行われたとき。
- MSG SIZE rcvd:106: DNSサーバーから受信したメッセージのサイズ。
選択的であること
あなたはタイトな唇と傲慢の2つの極端に落ち着く必要はありません。 dig
コマンドを使用すると、結果にセクションを選択的に含めたり除外したりできます。
次のクエリオプションは、結果からそのセクションを削除します。
- + nocomments:コメント行を表示しません。
- + noauthority:権限セクションを表示しません。
- + noadditional:追加のセクションを表示しません。
- + nostats:統計セクションを表示しません。
- + noanswer:回答セクションを表示しません。
- + noall:何も表示しないでください!
+noall
クエリオプションは通常、上記のいずれかと組み合わせて、結果にセクションを含めます。 したがって、クエリオプションの長い文字列を入力して複数のセクションをオフにする代わりに、 +noall
を使用してすべてのセクションをオフにすることができます。
次に、次の包括的なクエリオプションを使用して、表示したいオプションをオンに戻すことができます。
- +コメント:コメント行を表示します。
- + Authority:権限セクションを表示します。
- +追加:追加セクションを表示します。
- + stats:統計セクションを表示します。
- + answer:回答セクションを表示します。
- + all:すべてを表示します。
次のように入力してリクエストを行い、コメント行を除外します。
howtogeek.com + nocommentsを掘る
以下に示すように、 +noall
クエリオプションを単独で使用すると、有用な出力は得られません。
howtogeek.com + noallを掘る
見たいセクションを選択的に追加できます。 回答セクションを追加するには、次のように入力します。
howtogeek.comを掘る+ noall + answer
次のように入力して+stats
をオンにすると、統計セクションも表示されます。
howtogeek.com + noall + answer + statsを掘る
+noall +answer
の組み合わせがよく使用されます。 必要に応じて、コマンドラインに他のセクションを追加できます。 dig
を使用するたびにコマンドラインで+noall +answer
と入力しないようにする場合は、それらを「.digrc」という構成ファイルに入れることができます。 それはあなたのホームディレクトリにあります。
次のように入力して、 echo
を使用して作成します。
echo "+ noall + answer"> $ HOME / .digrc
次に、次のように入力して内容を確認できます。
cat .digrc
これらの2つのオプションは、以下に示すように、今後のdig
のすべての使用に適用されます。
ubuntu.orgを掘る
linux.orgを掘る
github.comを掘る
このdig
構成ファイルは、この記事の残りの例で使用されます。
DNSレコード
dig
リクエストに返される情報は、DNSサーバーに保持されているさまざまなタイプのレコードから取得されます。 別のことを要求しない限り、 dig
はA(アドレス)レコードを照会します。 以下は、 dig
で一般的に使用されるレコードのタイプです。
- レコード:ドメインをIPバージョン4アドレスにリンクします。
- MXレコード:メール交換は、ドメインに送信された直接メールを正しいメールサーバーに記録します。
- NSレコード:ネームサーバーレコードは、ドメイン(またはサブドメイン)を一連のDNSサーバーに委任します。
- TXTレコード:テキストレコードには、ドメインに関するテキストベースの情報が格納されます。 通常、これらはなりすましまたは偽造された電子メールを抑制するために使用されます。
- SOAレコード:オーソリティレコードの開始は、ドメインに関する多くの情報を保持できます。 ここでは、プライマリネームサーバー、責任者、変更のタイムスタンプ、ゾーンの更新の頻度、および再試行と放棄の一連の時間制限を確認できます。
- TTL:存続時間は、DNSプリカーサーサーバーが各DNSクエリをキャッシュできる期間を指定する各DNSレコードの設定です。 その時間が経過すると、後続のリクエストのためにデータを更新する必要があります。
- ANY:これは、可能なすべてのタイプのDNSレコードを返すように
dig
に指示します。
以下に示すように、Aレコードタイプを指定しても、アドレスレコードをクエリしてIPアドレスを取得するというデフォルトのアクションは変更されません。
redhat.comを掘るA
メール交換レコードを照会するには、次のMXフラグを使用します。
yahoo.comMXを掘る
ネームサーバーフラグは、トップレベルドメインに関連付けられているルートネームサーバーの次の名前を返します。
fedora.comNSを掘る
権限レコードの開始を照会するには、次のSOAフラグを入力します。
manjaro.comのSOAを掘る
TTLフラグは、DNSサーバーのキャッシュ内のデータの存続時間を示します。 一連のリクエストを行うと、存続時間がゼロになり、最初の値に戻ります。
次のように入力します。
usa.govTTLを掘る
テキストレコードを表示するには、TXフラグを入力します。
usa.govTXTを掘る
DNSサーバーの指定
リクエストに特定のDNSサーバーを使用する場合は、アットマーク( @
)を使用して、コマンドラインパラメーターとしてdig
に渡すことができます。
デフォルトのDNSサーバー(以下を参照)では、 dig
は127.0.0.53のローカルキャッシングスタブリゾルバーを参照します。
uda usa.gov + stats
ここで、次のように入力して、8.8.8.8でGoogleのパブリックDNSサーバーを使用します。
掘る@ 8.8.8.8 usa.gov + stats
複数のドメインでdigを使用する
以下に示すように、コマンドラインでdig
ために複数のドメインを渡すことができます。
掘るubuntu.orgfedora.org manjaro.com
ドメインのセットを定期的にチェックする場合は、それらをテキストファイルに保存し、それをdig
に渡すことができます。 ファイル内のすべてのドメインが順番にチェックされます。
私たちのファイルは「domains.txt」と呼ばれます。 cat
を使用してその内容を表示し、それを渡して-f
(ファイル)オプションを指定してdig
ます。 次のように入力します。
cat domains.txt
dig -f domains.txt
DNSルックアップの逆引き
IPアドレスがあり、それがどこに行くのかを知りたい場合は、DNS逆引き参照を試すことができます。 DNSサーバーに登録されているサーバーに解決される場合は、そのドメインを見つけることができる場合があります。
できるかどうかは、PTR(ポインターレコード)の存在に依存します。 PTRは、IPアドレスを完全修飾ドメイン名に解決します。 ただし、これらは必須ではないため、ドメインに常に存在するとは限りません。
IPアドレス209.51.188.148が私たちをどこに連れて行くかを見つけることができるかどうか見てみましょう。 -x
(逆ルックアップ)オプションを使用して、次のように入力します。
dig -x 209.51.188.148
プレスト! IPアドレスはgnu.orgに解決されます。
PTRはDNSレコードであり、 dig
が指定されたDNSレコードを要求できることがわかっているので、 dig
にPTRを取得するように依頼することはできませんか? はい、できますが、もう少し作業が必要です。
以下に示すように、IPアドレスを逆の順序で指定し、最後に.in-addr.arpa
を追加する必要があります。
dig ptr 148.188.51.209.in-addr.arpa
同じ結果が得られます。 もう少し手間がかかりました。
あなたはそれを掘ることができますか?
私たちは皆、毎日インターネットを使用しています。好奇心旺盛な人々は、ブラウザにWebサイトの名前を入力すると、魔法がどのように発生するのか疑問に思うことがよくあります。 dig
を使用すると、ネットワークを活用するプロセスを調べることができます。
Linuxコマンド | ||
ファイル | tar・pv・cat・tac・chmod・grep・diff・sed・ar・man・pushd・popd・fsck・testdisk・seq・fd・pandoc・cd・$ PATH・awk・join・jq・fold・uniq・journalctl・tail・stat・ls・fstab・echo・less・chgrp・chown・rev・look・strings・type・rename・zip・unzip・mount・umount・install・fdisk・mkfs・rm・rmdir・rsync・df・gpg・vi・nano・mkdir・du・ln・patch・convert・rclone・shred・srm | |
プロセス | エイリアス・screen・top・nice・renice・progress・strace・systemd・tmux・chsh・history・at・batch・free・which・dmesg・chfn・usermod・ps・chroot・xargs・tty・pinky・lsof・vmstat・タイムアウト・wall・yes・kill・sleep・sudo・su・time・groupadd・usermod・groups・lshw・shutdown・reboot・halt・poweroff・passwd・lscpu・crontab・date・bg・fg | |
ネットワーキング | netstat・ping・traceroute・ip・ss・whois・fail2ban・bmon・dig・finger・nmap・ftp・curl・wget・who・whoami・w・iptables・ssh-keygen・ufw |
関連:開発者と愛好家のための最高のLinuxラップトップ