ドメインのすべてのDNSレコードを一覧表示する方法はありますか?
私はDigやnslookupのようなものについては知っていますが、それらはこれまでのところ行きます。たとえば、サブドメインAレコードが
test A somedomain.co.uk
特に私がそれを要求しない限り。
Dig any test.somedomain.co.uk
見えません。
すべてのDNSレコードが正確に何であるかを正確に確認するには、(DNSマネージャーにアクセスしてレコードを見る以外に)方法はありますか?
ANYを照会すると、そのレベルのすべてのレコードのリストが表示されますが、その下には表示されません。
# try this
Dig google.com any
ドメイン名が正確に "google.com"の場合、Aレコード、TXTレコード、NSレコード、MXレコードなどが返されることがあります。ただし、子レコードは返されません(例:www.google.com)。より正確には、これらのレコードが存在する場合は取得することができます。ネームサーバは、そうしないことを選択した場合(たとえば、応答のサイズを小さくするため)、これらのレコードを返す必要はありません。
AXFRはゾーン転送であり、おそらくあなたが望むものです。ただし、これらは通常制限されており、ゾーンを制御しない限り使用できません。通常は権限のあるサーバー(@ ns1.google.com)から直接ゾーン転送を行い、公開されない可能性があるネームサーバー(ステルスネームサーバー)からゾーン転送を行うことがよくあります。
# This will return "Transfer failed"
Dig @ns1.google.com google.com axfr
ゾーンを管理している場合は、TSIGキーで保護されている転送を取得するように設定できます。これは、転送を許可するためにクライアントがサーバーに送信できる共有秘密です。
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
ゾーン転送を実行する機能がないので、この小さな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}"
は、* 10800 IN A 1.38.216.82
などのワイルドカードDNSエントリの結果である可能性があるレコードを除外します。それ以外の場合は、ワイルドカードを入力すると、各$COMMON_SUBDOMAN
にレコードがあるように見えます。
注:これは CloudFlareなどの一部のDNSプロバイダーによってブロックされている であるANY
クエリに依存しています。
ゾーン転送は、すべてのサブドメインレコードがあることを確認する唯一の方法です。 DNSが正しく設定されていれば、通常は外部ゾーン転送を実行できないはずです。
scans.io プロジェクトには、ダウンロードしてサブドメインを検索できるDNSレコードのデータベースがあります。これには、87GBのDNSデータをダウンロードする必要があります。あるいは、 https://hackertarget.com/find-dns-Host-records/ でデータのオンライン検索を試すこともできます。
あなたが欲しいものは ゾーン転送 と呼ばれます。 Dig -t axfr
を使ってゾーン転送をリクエストできます。
zone はドメインであり、その下の別のサーバーに委任されていないすべてのドメインです。
ゾーン転送は常にサポートされているわけではないことに注意してください。通常の検索では使用されず、サーバー間でDNSデータを複製する場合にのみ使用されます。しかし、そのために使用できるプロトコルは他にもあります(rsync over sshなど)。名前を公開することによるセキュリティ上のリスクがある可能性があり、ゾーン転送応答の生成と送信に通常のDNSルックアップよりもコストがかかります。
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.
Windowsの場合
ドメインのDNSレコードのステータスを確認する必要がある場合や、ネームサーバーを調べてサーバーがどのレコードを取得しているかを確認する必要がある場合があります。
[スタート]> [コマンドプロンプト]または[実行]> [CMD]を選択して、Windowsのコマンドプロンプトを起動します。
NSLOOKUPと入力してEnterキーを押します。デフォルトのサーバーはローカルのDNSに設定され、アドレスはローカルのIPになります。
Set type = ##と入力して検索するDNSレコードタイプを設定します。##はレコードタイプです。次にEnterキーを押します。 A、AAAA、A + AAAA、ANY、CNAME、MX、NS、PTR、SOA、またはSRVをレコードタイプとして使用できます。
ここであなたが問い合わせたいドメイン名を入力してEnterを押してください。この例では、Managed.comを使用します。
NSLOOKUPはあなたが入力したドメインのレコードエントリを返します。
照会しているネームサーバーを変更することもできます。これは、DNSが完全に伝播する前にレコードを確認している場合に役立ちます。ネームサーバーを変更するには、server [ネームサーバー]と入力します。 [ネームサーバー]を使用したいネームサーバーに置き換えます。この例では、これらをNSA.managed.comとして設定します。
変更したら、必要に応じてクエリタイプを変更し(ステップ3)、新しいドメインを入力します(ステップ4)。
Linuxの場合
1)Digコマンドを使用してDNSレコードを確認するDigは、ドメイン情報の略語です。groperは、DNSネームサーバに問い合わせるための柔軟なツールです。 DNSルックアップを実行し、照会されたネームサーバーから返された回答を表示します。ほとんどのDNS管理者は、その柔軟性、使いやすさ、明確な出力のために、Digを使用してDNSの問題をトラブルシューティングします。他の検索ツールはDigより機能が少ない傾向があります。
2)NSlookupコマンドを使用してDNSレコードを確認するNslookupは、インターネットドメインネームサーバーに照会するプログラムです。 Nslookupには、対話型と非対話型の2つのモードがあります。
対話モードでは、ユーザはネームサーバにさまざまなホストやドメインに関する情報を問い合わせたり、ドメイン内のホストのリストを印刷したりできます。
非対話モードは、ホストまたはドメインの名前と要求された情報だけを印刷するために使用されます。 DNS関連の問題を確認してトラブルシューティングするのに役立つネットワーク管理ツールです。
3)ホストコマンドを使用してDNSレコードをチェックするホストはDNSルックアップを実行するためのシンプルなユーティリティです。通常、名前からIPアドレスへの変換、およびその逆の変換に使用されます。引数やオプションが与えられていない場合、Hostはそのコマンドライン引数とオプションの簡単な要約を表示します。
1つのインスタンスでドメインのすべてのDNSレコードを取得する簡単な方法はありません。例えば、特定のドメインのAレコードを見たい場合は、特定のレコードのみを表示できます。Dig a(レコードの種類)domain.comを使用できます。これは、そのドメインについて見たい他のすべてのタイプのレコードについても同じです。
コマンドラインインターフェイスに慣れていない場合は、mxtoolbox.comなどのサイトも使用できます。 Wichはドメインの記録を取得するための非常に便利なツールです。
これであなたの質問に答えられると思います。