Làm cách nào tôi có thể liệt kê TẤT CẢ các bản ghi DNS?


188

Có cách nào tôi có thể liệt kê TẤT CẢ các bản ghi DNS cho một tên miền không?

Tôi biết về những thứ như đào và nslookup nhưng chúng chỉ đi xa đến vậy. Ví dụ: nếu tôi có một bản ghi tên miền phụ là

test A somedomain.co.uk

sau đó trừ khi tôi đặc biệt yêu cầu nó, ví dụ.

dig any test.somedomain.co.uk

Tôi không thể nhìn thấy nó.

Có cách nào khác (ngoài việc xem xét các bản ghi bằng cách đi đến trình quản lý DNS) để xem chính xác tất cả các bản ghi DNS là gì không?

Câu trả lời:


202

Khi bạn truy vấn BẤT K you bạn sẽ nhận được một danh sách tất cả các hồ sơ ở cấp độ đó nhưng không phải dưới đây.

# try this
dig google.com any

Điều này có thể trả về bản ghi A, bản ghi TXT, bản ghi NS, bản ghi MX, v.v nếu tên miền chính xác là "google.com". Tuy nhiên, nó sẽ không trả về hồ sơ con (ví dụ: www.google.com). Chính xác hơn, bạn CÓ THỂ có được những hồ sơ này nếu chúng tồn tại. Máy chủ tên không phải trả về các bản ghi này nếu nó chọn không làm như vậy (ví dụ: để giảm kích thước của phản hồi).

AXFR là chuyển vùng và có thể là những gì bạn muốn. Tuy nhiên, những thứ này thường bị hạn chế và không có sẵn trừ khi bạn kiểm soát vùng này. Bạn thường sẽ tiến hành chuyển vùng trực tiếp từ máy chủ có thẩm quyền (@ ns1.google.com bên dưới) và thường từ máy chủ tên có thể không được công bố (máy chủ tên lén lút).

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

Nếu bạn có quyền kiểm soát khu vực, bạn có thể thiết lập nó để nhận chuyển khoản được bảo vệ bằng khóa TSIG. Đây là một bí mật được chia sẻ mà khách hàng có thể gửi đến máy chủ để ủy quyền chuyển tiền.


4
Cảm ơn vì điều đó (cũng để deltab). Giải thích rất rõ ràng, xác nhận những gì tôi nghi ngờ - nó có sẵn nhưng không phải cho tôi (trừ khi tôi bắt đầu thiết lập máy chủ tên của riêng mình). Khi tôi chăm sóc rất nhiều tên miền, thật tuyệt vời khi chỉ chạy một tập lệnh để nhận TẤT CẢ các mục DNS.
Ken

13
Máy chủ tên Route53 của Amazon không bao gồm TXT, MX và SOA khi tôi thử điều này. Sau khi tôi đặc biệt truy vấn những hồ sơ này, chúng được đưa vào BẤT K answer câu trả lời nào. Vì vậy, hãy dùng nó với một hạt muối.
Peter

Tôi vừa nhận được "kết nối bị từ chối"
niico

1
Thông số kỹ thuật chưa bao giờ được giải thích một cách nhất quán bởi các nhà giải quyết về ý nghĩa của BẤT K .. Nó chắc chắn không có nghĩa là TẤT CẢ (có một yêu cầu cho điều đó), mặc dù một số (không nhiều) đối xử với nó theo cách đó. Những người khác chỉ bỏ bộ nhớ cache của họ và những người khác đã giới hạn nó vào một số loại bản ghi nhất định. Trong thời hiện đại (2016+), hầu hết các nhà cung cấp đã vô hiệu hóa BẤT K ((hoặc đưa ra câu trả lời vô ích) hoặc có kế hoạch thực hiện, vì đây là trình điều khiển chung cho nhiều cuộc tấn công khuếch đại.
Nick Bastin

1
@NickBastin dự thảo này ( tools.ietf.org/html/draft-ietf-dnsop-refuse-any-06 ) hiện đang trong công việc cố gắng thắt chặt mô hình trả lời cho loại truy vấn này. Nó cũng thảo luận về lý do tại sao nó / không nên được sử dụng.
Patrick Mevzek

29

Tôi đã cải thiện câu trả lời của Josh . Tôi đã nhận thấy rằng digchỉ hiển thị các mục đã có trong bộ đệm của máy chủ tên được truy vấn, vì vậy tốt hơn là nên kéo một máy chủ tên có thẩm quyền khỏi SOA (thay vì dựa vào máy chủ tên mặc định). Tôi cũng đã vô hiệu hóa việc lọc IP ký tự đại diện bởi vì thông thường tôi thường quan tâm nhiều hơn đến tính chính xác của thiết lập.

Tập lệnh mới lấy một -xđối số cho đầu ra mở rộng và một -s NSđối số để chọn một máy chủ tên cụ thể: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

thêm dòng dig -t txt +nocmd $NS "$DOM" +noall +answer(và sửa đổi $DOM) để kiểm tra các bản ghi TXT của một miền.
Tối đa

19

Trong trường hợp không có khả năng thực hiện chuyển vùng, tôi đã viết kịch bản bash nhỏ này , 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

Bây giờ tôi sử dụng dg example.comđể có được một danh sách các bản ghi DNS đẹp, sạch hoặc dg example.com xđể bao gồm một loạt các tên miền phụ phổ biến khác.

grep -vE "${wild_ips}"lọc ra các bản ghi có thể là kết quả của mục DNS ký tự đại diện, chẳng hạn như * 10800 IN A 1.38.216.82. Mặt khác, một mục ký tự đại diện sẽ làm cho nó xuất hiện như thể có bản ghi cho mỗi mục $COMMON_SUBDOMAN.

Lưu ý: Điều này phụ thuộc vào ANYcác truy vấn, bị chặn bởi một số nhà cung cấp DNS như CloudFlare .


3
Tôi biết giải pháp này không phải là lý tưởng, nhưng nó đã tiết kiệm cho tôi rất nhiều thời gian, vì vậy tôi hy vọng nó sẽ hữu ích cho người khác.
Zaz

thêm dig -t txt +nocmd "$1" +noall +answer(và sửa đổi, "*.$1"v.v.) để kiểm tra các bản ghi TXT của một miền.
Tối đa

15

host -ahoạt động tốt, tương tự như dig any.

VÍ DỤ:

$ 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
Điều này không trả lời câu hỏi, đó là cách tìm các bản ghi khác trong vùng DNS của tên miền, tức là tất cả các bản ghi cho tên miền phụ. Điều đó không có nghĩa host -alà không phải là một lệnh hữu ích, nó chỉ không làm những gì OP đang tìm kiếm.
spikyjt 3/2/2015

13
  1. Chuyển vùng là cách duy nhất để đảm bảo bạn có tất cả các bản ghi tên miền phụ. Nếu DNS được cấu hình đúng, thông thường bạn sẽ không thể thực hiện chuyển vùng bên ngoài.

  2. Các scans.io dự án có một cơ sở dữ liệu của bản ghi DNS có thể được tải về và tìm kiếm các tên miền phụ. Điều này yêu cầu tải xuống 87GB dữ liệu DNS, ngoài ra, bạn có thể thử tìm kiếm dữ liệu trực tuyến tại https://hackertarget.com/find-dns-host-records/


12

Cho cửa sổ:

Bạn có thể thấy cần kiểm tra trạng thái của các bản ghi DNS tên miền của mình hoặc kiểm tra Máy chủ tên để xem bản ghi nào mà máy chủ đang lấy.

  1. Khởi chạy Windows Command Prompt bằng cách điều hướng đến Start> Command Prompt hoặc thông qua Run> CMD.

  2. Nhập NSLOOKUP và nhấn Enter. Máy chủ mặc định được đặt thành DNS cục bộ của bạn, Địa chỉ sẽ là IP cục bộ của bạn.

  3. Đặt loại Bản ghi DNS bạn muốn tra cứu bằng cách nhập set type=##trong đó ## là loại bản ghi, sau đó nhấn Enter. Bạn có thể sử dụng BẤT K ,, A, AAAA, A + AAAA, CNAME, MX, NS, PTR, SOA hoặc SRV làm loại bản ghi.

  4. Bây giờ hãy nhập tên miền bạn muốn truy vấn, sau đó nhấn Enter .. Trong ví dụ này, chúng tôi sẽ sử dụng Managed.com.

  5. NSLOOKUP bây giờ sẽ trả về các mục bản ghi cho tên miền bạn đã nhập.

  6. Bạn cũng có thể thay đổi Máy chủ tên mà bạn đang truy vấn. Điều này hữu ích nếu bạn đang kiểm tra các bản ghi trước khi DNS được truyền bá đầy đủ. Để thay đổi Máy chủ tên loại máy chủ [máy chủ tên]. Thay thế [máy chủ tên] bằng Máy chủ tên bạn muốn sử dụng. Trong ví dụ này, chúng tôi sẽ đặt chúng là NSA.managed.com.

  7. Sau khi thay đổi, hãy thay đổi loại truy vấn (Bước 3) nếu cần, sau đó nhập tên miền mới (Bước 4.)

Đối với Linux:

1) Kiểm tra bản ghi DNS bằng cách sử dụng Dig Command Dig là viết tắt của thông tin tên miền là một công cụ linh hoạt để thẩm vấn các máy chủ tên DNS. Nó thực hiện tra cứu DNS và hiển thị các câu trả lời được trả về từ (các) máy chủ tên đã được truy vấn. Hầu hết các quản trị viên DNS sử dụng đào để khắc phục sự cố DNS vì tính linh hoạt, dễ sử dụng và rõ ràng của đầu ra. Các công cụ tra cứu khác có xu hướng có ít chức năng hơn đào.

2) Kiểm tra bản ghi DNS bằng NSlookup Lệnh Nslookup là một chương trình để truy vấn các máy chủ tên miền Internet. Nslookup có hai chế độ tương tác và không tương tác.

Chế độ tương tác cho phép người dùng truy vấn máy chủ tên để biết thông tin về các máy chủ và tên miền khác nhau hoặc in danh sách máy chủ lưu trữ trong một miền.

Chế độ không tương tác được sử dụng để chỉ in tên và thông tin được yêu cầu cho máy chủ hoặc tên miền. Đây là công cụ quản trị mạng sẽ giúp họ kiểm tra và khắc phục sự cố liên quan đến DNS.

3) Kiểm tra Bản ghi DNS bằng Máy chủ lưu trữ Lệnh là một tiện ích đơn giản để thực hiện tra cứu DNS. Nó thường được sử dụng để chuyển đổi tên thành địa chỉ IP và ngược lại. Khi không có đối số hoặc tùy chọn nào được đưa ra, máy chủ sẽ in một bản tóm tắt ngắn về các đối số và tùy chọn dòng lệnh của nó.


Điều này hoạt động hoàn hảo với tôi trong Windows 7, nhưng dường như là lỗi trong Windows 10, đây là những gì tôi đã sử dụng để gỡ lỗi bản ghi TXT trong Windows 10: nslookup -querytype = txt yourdomainnamehere.com
Bộ giải mã

11

Những gì bạn muốn được gọi là chuyển vùng . Bạn có thể yêu cầu chuyển vùng bằng cách sử dụng dig -t axfr.

Một vùng là một miền và tất cả các miền bên dưới nó không được ủy quyền cho một máy chủ khác.

Lưu ý rằng chuyển vùng không phải lúc nào cũng được hỗ trợ. Chúng không được sử dụng trong tra cứu thông thường, chỉ trong việc sao chép dữ liệu DNS giữa các máy chủ; nhưng có các giao thức khác có thể được sử dụng cho điều đó (chẳng hạn như rsync trên ssh), có thể có rủi ro bảo mật khi hiển thị tên và phản hồi chuyển vùng tốn nhiều chi phí để tạo và gửi hơn so với tra cứu DNS thông thường.


1

Không có cách nào dễ dàng để có được tất cả các bản ghi DNS cho một tên miền trong một trường hợp. Bạn chỉ có thể xem một số bản ghi nhất định, ví dụ, nếu bạn muốn xem bản ghi A cho một tên miền nhất định, bạn có thể sử dụng lệnh: đào một (loại bản ghi) domain.com. Điều này giống nhau cho tất cả các loại hồ sơ khác mà bạn muốn thấy cho tên miền đó.

Nếu bạn không quen thuộc với giao diện dòng lệnh, bạn cũng có thể sử dụng một trang web như mxtoolbox.com. Does là công cụ rất tiện dụng để lấy hồ sơ của một tên miền.

Tôi mong bạn trả lời câu hỏi này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.