すべてのDNSレコードを一覧表示するにはどうすればよいですか?


188

ドメインのすべてのDNSレコードを一覧表示する方法はありますか?

私はdigやnslookupなどについて知っていますが、それらはこれまでのところしか進んでいません。たとえば、サブドメインAレコードがある場合

test A somedomain.co.uk

それから私が特にそれを要求しない限り、例えば。

dig any test.somedomain.co.uk

見えない。

すべてのDNSレコードが何であるかを正確に確認する方法はありますか(DNSマネージャーに移動してレコードを見る以外)。

回答:


202

ANYに対してクエリを実行すると、そのレベルではなく、それより下のレベルにあるすべてのレコードのリストが表示されます。

# try this
dig google.com any

ドメイン名が正確に「google.com」の場合、Aレコード、TXTレコード、NSレコード、MXレコードなどが返されます。ただし、子レコード(www.google.comなど)は返されません。より正確には、これらのレコードが存在する場合、それらを取得できます(MAY)。ネームサーバーがこれらのレコードを返さない場合(たとえば、応答のサイズを小さくするため)は、これらのレコードを返す必要はありません。

AXFRはゾーン転送であり、おそらくあなたが望むものです。ただし、これらは通常制限されており、ゾーンを制御しない限り使用できません。通常、権限のあるサーバー(下記の@ ns1.google.com)から、そして公開されていない可能性のあるネームサーバー(ステルスネームサーバー)から直接ゾーン転送を行います。

# This will return "Transfer failed"
dig @ns1.google.com google.com axfr

ゾーンを制御できる場合は、TSIGキーで保護された転送を取得するようにゾーンを設定できます。これは、クライアントが転送を許可するためにサーバーに送信できる共有秘密です。


4
感謝します(deltabにも感謝します)。非常に明確な説明、私が疑っていたものを確認-それは利用可能ですが、私にはありません(自分のネームサーバーの設定を開始しない限り)。非常に多くのドメインを管理しているので、すべてのDNSエントリを取得するスクリプトを実行するだけでとても良かったでしょう。
Ken

13
AmazonのRoute53ネームサーバーには、TXT、MX、SOAが含まれていません。私が具体的にこれらのレコードを問い合わせた後、それらはすべての回答に含まれています。だから、これを塩の粒と一緒に服用してください。
Peter

「接続が拒否されました」
niico

1
仕様は、ANYの意味に関して、リゾルバーによって一貫して解釈されたことはありません。一部の(多くではない)がそれをそのように扱っていたとしても、それは明らかにALLを意味するわけではありません(そのための要求があります)。キャッシュをダンプしただけの人もいれば、特定のレコードタイプにキャッシュを制限した人もいました。現代(2016年以降)では、多くの増幅攻撃の一般的な原因であるため、ほとんどのプロバイダーはANYを無効にする(または役に立たない回答を与える)か、無効にする計画を立てています。
Nick Bastin 2017年

1
@NickBastin 現在作業中のこのドラフト(tools.ietf.org/html/draft-ietf-dnsop-refuse-any-06)は、このクエリタイプに対する応答のパターンを強化しようとします。また、それが使用される/使用されない理由についても説明します。
Patrick Mevzek 2018年

29

Joshの回答を改善しました。dig照会されたネームサーバーのキャッシュに既に存在するエントリのみが表示されることに気付いたので、(デフォルトのネームサーバーに依存するのではなく)SOAから信頼できるネームサーバーをプルする方が良いです。また、通常はセットアップの正確さに関心があるため、ワイルドカードIPのフィルタリングも無効にしました。

新しいスクリプトは、-x拡張出力の-s NS引数と特定のネームサーバーを選択する引数を取ります。dig -x example.com

#!/bin/bash
set -e; set -u
COMMON_SUBDOMAINS="www mail mx a.mx smtp pop imap blog en ftp ssh login"
EXTENDED=""

while :; do case "$1" in
  --) shift; break ;;
  -x) EXTENDED=y; shift ;;
  -s) NS="$2"; shift 2 ;;
  *) break ;;
esac; done
DOM="$1"; shift
TYPE="${1:-any}"

test "${NS:-}" || NS=$(dig +short  SOA "$DOM" | awk '{print $1}')
test "$NS" && NS="@$NS"

if test "$EXTENDED"; then
  dig +nocmd $NS "$DOM" +noall +answer "$TYPE"
  wild_ips=$(dig +short "$NS" "*.$DOM" "$TYPE" | tr '\n' '|')
  wild_ips="${wild_ips%|}"
  for sub in $COMMON_SUBDOMAINS; do
    dig +nocmd $NS "$sub.$DOM" +noall +answer "$TYPE"
  done | cat  #grep -vE "${wild_ips}"
  dig +nocmd $NS "*.$DOM" +noall +answer "$TYPE"
else
  dig +nocmd $NS "$DOM" +noall +answer "$TYPE"
fi

ドメインのTXTレコードを検査するために行を追加dig -t txt +nocmd $NS "$DOM" +noall +answer(およびを変更$DOM)します。
最大

19

ゾーン転送を実行する機能がない場合、私はこの小さなbashスクリプトを書きましたdg

#!/bin/bash
COMMON_SUBDOMAINS=(www mail smtp pop imap blog en ftp ssh login)
if [[ "$2" == "x" ]]; then
    dig +nocmd "$1" +noall +answer "${3:-any}"
    wild_ips="$(dig +short "*.$1" "${3:-any}" | tr '\n' '|')"
    wild_ips="${wild_ips%|}"
    for sub in "${COMMON_SUBDOMAINS[@]}"; do
        dig +nocmd "$sub.$1" +noall +answer "${3:-any}"
    done | grep -vE "${wild_ips}"
    dig +nocmd "*.$1" +noall +answer "${3:-any}"
else
    dig +nocmd "$1" +noall +answer "${2:-any}"
fi

現在はdg example.com、DNSレコードのきれいなリストを取得するため、またはdg example.com x他の人気のあるサブドメインの束を含めるために使用しています。

grep -vE "${wild_ips}"などのワイルドカードDNSエントリの結果である可能性のあるレコードを除外します* 10800 IN A 1.38.216.82。それ以外の場合、ワイルドカードエントリを使用すると、各のレコードがあるかのように表示されます$COMMON_SUBDOMAN

注:これはCloudFlareなどの一部のDNSプロバイダーによってブロックされるANYクエリに依存しています


3
この解決策は理想とは程遠いことを知っていますが、多くの時間を節約できたので、他の誰かに役立つことを願っています。
Zaz

追加dig -t txt +nocmd "$1" +noall +answer(および変更"*.$1"など)して、ドメインのTXTレコードを検査します。
最大

15

host -aと同様に機能しdig anyます。

例えば:

$ host -a google.com
Trying "google.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10403
;; flags: qr rd ra; QUERY: 1, ANSWER: 18, AUTHORITY: 0, ADDITIONAL: 0


;; QUESTION SECTION:
;google.com.            IN  ANY

;; ANSWER SECTION:
google.com.     1165    IN  TXT "v=spf1 include:_spf.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all"
google.com.     53965   IN  SOA ns1.google.com. dns-admin.google.com. 2014112500 7200 1800 1209600 300
google.com.     231 IN  A   173.194.115.73
google.com.     231 IN  A   173.194.115.78
google.com.     231 IN  A   173.194.115.64
google.com.     231 IN  A   173.194.115.65
google.com.     231 IN  A   173.194.115.66
google.com.     231 IN  A   173.194.115.67
google.com.     231 IN  A   173.194.115.68
google.com.     231 IN  A   173.194.115.69
google.com.     231 IN  A   173.194.115.70
google.com.     231 IN  A   173.194.115.71
google.com.     231 IN  A   173.194.115.72
google.com.     128 IN  AAAA    2607:f8b0:4000:809::1001
google.com.     40766   IN  NS  ns3.google.com.
google.com.     40766   IN  NS  ns4.google.com.
google.com.     40766   IN  NS  ns1.google.com.
google.com.     40766   IN  NS  ns2.google.com.

11
これは、ドメインのDNSゾーン内の他のレコード、つまりサブドメインのすべてのレコードを検索する方法であるという質問には答えません。それhost -aは有用なコマンドではないと言っているのではなく、OPが求めていることを実行しないだけです。
spikyjt 2015

13
  1. ゾーン転送は、すべてのサブドメインレコードがあることを確認する唯一の方法です。DNSが正しく構成されている場合、通常は外部ゾーン転送を実行できません。

  2. scans.ioのプロジェクトがダウンロードされ、サブドメインのために検索することができDNSレコードのデータベースを持っています。これには87 GBのDNSデータをダウンロードする必要があります。または、https://hackertarget.com/find-dns-host-records/でデータのオンライン検索を試すこともできます。


12

Windowsの場合:

ドメインのDNSレコードのステータスを確認する必要がある場合や、ネームサーバーを確認して、サーバーが取得しているレコードを確認する必要がある場合があります。

  1. [スタート]> [コマンドプロンプト]に移動するか、[実行]> [CMD]を選択して、Windowsコマンドプロンプトを起動します。

  2. NSLOOKUPと入力してEnterキーを押します。デフォルトのサーバーはローカルDNSに設定され、アドレスはローカルIPになります。

  3. 検索するDNSレコードタイプを設定します。set type=##ここで、##はレコードタイプです。Enter キーを押します。レコードタイプとしてANY、A、AAAA、A + AAAA、CNAME、MX、NS、PTR、SOA、またはSRVを使用できます。

  4. 次に、クエリを実行するドメイン名を入力してEnterキーを押します。この例では、Managed.comを使用します。

  5. NSLOOKUPは、入力したドメインのレコードエントリを返します。

  6. クエリするネームサーバーを変更することもできます。これは、DNSが完全に伝播する前にレコードをチェックする場合に役立ちます。ネームサーバーを変更するには、server [name server]と入力します。[ネームサーバー]を、使用するネームサーバーに置き換えます。この例では、これらをNSA.managed.comとして設定します。

  7. 変更したら、必要に応じてクエリタイプを変更し(ステップ3)、次に新しい新しいドメインを入力します(ステップ4)。

Linuxの場合:

1)Digコマンドを使用してDNSレコードを確認するDigはドメイン情報を表しますgroperはDNSネームサーバーに問い合わせるための柔軟なツールです。DNSルックアップを実行し、照会されたネームサーバーから返された回答を表示します。ほとんどのDNS管理者は、digを使用してDNSの問題をトラブルシューティングします。これは、その柔軟性、使いやすさ、および出力の明確さのためです。他の検索ツールは、掘るよりも機能が少ない傾向があります。

2)NSlookupコマンドを使用してDNSレコードを確認するNslookupは、インターネットドメインネームサーバーを照会するプログラムです。Nslookupには、対話型と非対話型の2つのモードがあります。

インタラクティブモードを使用すると、ユーザーはネームサーバーにさまざまなホストとドメインに関する情報を照会したり、ドメイン内のホストのリストを印刷したりできます。

非対話モードは、ホストまたはドメインの名前と要求された情報だけを出力するために使用されます。これは、DNS関連の問題の確認とトラブルシューティングを支援するネットワーク管理ツールです。

3)ホストコマンドを使用してDNSレコードを確認するhostは、DNSルックアップを実行するためのシンプルなユーティリティです。通常、名前をIPアドレスに、またはその逆に変換するために使用されます。引数またはオプションが指定されていない場合、hostはコマンドライン引数とオプションの短い要約を出力します。


これはWindows 7では完全に機能しましたが、Windows 10ではバグがあるようです。これは、Windows 10でTXTレコードをデバッグするために使用したものです。nslookup
Coder

11

必要なものは、ゾーン転送と呼ばます。次を使用してゾーン転送をリクエストできますdig -t axfrます。

ゾーン別のサーバーに委任されていないドメインとその下のすべてのドメインです。

ゾーン転送は常にサポートされているわけではないことに注意してください。通常の検索では使用されず、サーバー間でDNSデータを複製する場合にのみ使用されます。ただし、そのために使用できる他のプロトコル(ssh over rsyncなど)があります。名前を公開することによるセキュリティリスクがあり、ゾーン転送応答の生成と送信には、通常のDNSルックアップよりもコストがかかります。


1

1つのインスタンスでドメインのすべてのDNSレコードを取得する簡単な方法はありません。たとえば、特定のレコードのみを表示できます。特定のドメインのAレコードを表示したい場合は、コマンドdig a(type of record)domain.comを使用できます。これは、そのドメインで表示したい他のすべてのタイプのレコードと同じです。

コマンドラインインターフェイスに慣れていない場合は、mxtoolbox.comなどのサイトを使用することもできます。Wichは、ドメインのレコードを取得するための非常に便利なツールです。

これがあなたの質問に答えてくれることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.