有沒有什麼辦法可以列出域名的所有DNS記錄?如何列出所有DNS記錄?
我知道這樣的事情dig和nslookup,但他們只能走這麼遠。舉例來說,如果我有一個子域A記錄作爲
test A somedomain.co.uk
那麼除非我特別要求它,例如。
dig any test.somedomain.co.uk
我看不到它。
有什麼辦法(比去的DNS管理器查看記錄等),看看到底是什麼所有的DNS記錄?
有沒有什麼辦法可以列出域名的所有DNS記錄?如何列出所有DNS記錄?
我知道這樣的事情dig和nslookup,但他們只能走這麼遠。舉例來說,如果我有一個子域A記錄作爲
test A somedomain.co.uk
那麼除非我特別要求它,例如。
dig any test.somedomain.co.uk
我看不到它。
有什麼辦法(比去的DNS管理器查看記錄等),看看到底是什麼所有的DNS記錄?
當查詢任何你會得到的級別的所有記錄的列表,但沒有下文。
# try this
dig google.com any
這將返回A記錄,TXT記錄,NS記錄,MX記錄,等等如果域名是完全 「google.com」。但它不會返回子記錄(例如,www.google.com)。更確切地說,如果它們存在,你可以獲得這些記錄。如果名稱服務器選擇不這樣做(例如,減小響應的大小),則不必返回這些記錄。
的AXFR是一個區域傳輸,並有可能你想要什麼。但是,除非您控制區域,否則這些通常是受限制的並且不可用。您通常會直接從授權服務器(下面的@ ns1.google.com)進行區域傳輸,並且通常會從不可發佈的名稱服務器(隱形名稱服務器)進行區域傳輸。
# This will return "Transfer failed"
dig @ns1.google.com google.com axfr
如果你對該區的控制,你可以將它設置爲獲取與一個TSIG密鑰來保護傳輸。這是客戶端可以發送給服務器授權傳輸的共享祕密。
你想要什麼叫做區域傳輸。您可以使用dig -t axfr
申請區域轉移。
A 區域是一個域名及其下面的所有域,不會委派給其他服務器。
注意,區域傳輸並不總是支持。它們不用於正常查找,僅用於在服務器之間複製DNS數據;但也有其他協議可用於此目的(例如通過ssh的rsync),可能存在公開名稱帶來的安全風險,並且區域傳輸響應比通常的DNS查找生成和發送花費更多。
在沒有做區域傳輸的能力,我寫了這個小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
都有記錄。
注:這依賴於ANY
查詢,這是blocked by some DNS providers such as CloudFlare。
我知道這個解決方案遠非理想,但它爲我節省了很多時間,所以我希望它對其他人有用。 – Zaz
區域傳輸是要確保你有所有子域名記錄的唯一途徑。如果DNS配置正確,則通常無法執行外部區域傳輸。
的scans.io項目有可以下載和搜索子域的DNS記錄的數據庫。這需要下載DNS數據的87GB,或者你可以在https://hackertarget.com/find-dns-host-records/
host -a
效果很好,類似於dig any
嘗試在網上搜索數據。
EG:
$ 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.
我已經改善Josh的答案。我注意到,只顯示已經出現在查詢域名服務器的緩存條目,所以最好從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
有沒有簡單的方法來得到一個實例域中的所有DNS記錄。 您只能查看某些記錄,例如,如果您想查看某個域的A記錄,則可以使用該命令:挖一個(記錄類型)domain.com。對於您想要在該域中看到的所有其他類型的記錄,這都是一樣的。
如果不熟悉命令行界面,你也可以使用像mxtoolbox.com網站。這是獲取域的記錄非常方便的工具。
我希望這能回答你的問題。
http://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions#Zone_enumeration_issue.2C_controversy.2C_and_NSEC3 – SLaks