Bagaimana saya bisa mendaftar SEMUA data DNS?


189

Apakah ada cara saya bisa mendaftar SEMUA data DNS untuk domain?

Saya tahu tentang hal-hal seperti menggali dan nslookup tetapi mereka hanya melangkah sejauh ini. Misalnya, jika saya punya catatan subdomain A sebagai

test A somedomain.co.uk

maka kecuali saya secara khusus memintanya, mis.

dig any test.somedomain.co.uk

Saya tidak bisa melihatnya.

Apakah ada cara (selain melihat catatan dengan pergi ke manajer DNS) untuk melihat apa semua catatan DNS itu?

Jawaban:


202

Ketika Anda meminta APA PUN, Anda akan mendapatkan daftar semua catatan di tingkat itu tetapi tidak di bawah.

# try this
dig google.com any

Ini dapat mengembalikan catatan A, catatan TXT, catatan NS, catatan MX, dll jika nama domainnya persis "google.com". Namun, itu tidak akan mengembalikan catatan anak (mis., Www.google.com). Lebih tepatnya, Anda DAPAT mendapatkan catatan ini jika ada. Server nama tidak harus mengembalikan catatan ini jika ia memilih untuk tidak melakukannya (misalnya, untuk mengurangi ukuran respons).

AXFR adalah transfer zona dan kemungkinan yang Anda inginkan. Namun, ini biasanya dibatasi dan tidak tersedia kecuali Anda mengontrol zona. Anda biasanya akan melakukan transfer zona langsung dari server otoritatif (@ ns1.google.com di bawah) dan sering dari server nama yang mungkin tidak dipublikasikan (server nama tersembunyi).

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

Jika Anda memiliki kendali atas zona tersebut, Anda dapat mengaturnya untuk mendapatkan transfer yang dilindungi dengan kunci TSIG. Ini adalah rahasia bersama yang dapat dikirim klien ke server untuk mengesahkan transfer.


4
Terima kasih untuk itu (juga untuk deltab). Penjelasan yang sangat jelas, mengkonfirmasikan apa yang saya duga - itu tersedia tetapi tidak bagi saya (kecuali saya mulai mengatur nameserver saya sendiri). Ketika saya merawat banyak domain, akan sangat menyenangkan hanya menjalankan skrip untuk mendapatkan SEMUA entri DNS.
Ken

13
Nameserver Route53 Amazon tidak termasuk TXT, MX dan SOA ketika saya mencoba ini. Setelah saya secara spesifik mempertanyakan catatan-catatan ini, di mana mereka dimasukkan dalam jawaban APAPUN. Jadi ambil ini dengan sebutir garam.
Peter

Saya baru saja mendapat "koneksi ditolak"
niico

1
Spek belum pernah diinterpretasikan secara konsisten oleh resolver mengenai arti APAPUN. Ini jelas tidak berarti SEMUA (ada permintaan untuk itu), meskipun beberapa (tidak banyak) memperlakukannya seperti itu. Yang lain hanya membuang cache mereka, dan yang lain membatasinya untuk tipe rekaman tertentu. Di zaman modern (2016+), sebagian besar penyedia telah menonaktifkan APAPUN (atau memberikan jawaban yang tidak berguna) atau memiliki rencana untuk melakukannya, karena merupakan pendorong umum untuk banyak serangan amplifikasi.
Nick Bastin

1
@NickBastin draf ini ( tools.ietf.org/html/draft-ietf-dnsop-refuse-any-06 ) saat ini dalam pekerjaan mencoba untuk memperketat pola balasan untuk jenis permintaan ini. Ini juga membahas mengapa itu / tidak boleh digunakan.
Patrick Mevzek

29

Saya telah memperbaiki jawaban Josh . Saya perhatikan bahwa dighanya memperlihatkan entri yang sudah ada dalam cache server nama yang ditanyakan, jadi lebih baik untuk menarik server nama yang otoritatif dari SOA (daripada mengandalkan server nama default). Saya juga menonaktifkan penyaringan IP wildcard karena biasanya saya biasanya lebih tertarik pada kebenaran pengaturan.

Script baru mengambil -xargumen untuk output diperluas dan -s NSargumen untuk memilih server nama tertentu: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

tambahkan baris dig -t txt +nocmd $NS "$DOM" +noall +answer(dan modifikasi $DOM) untuk memeriksa catatan TXT domain.
Maks

19

Dengan tidak adanya kemampuan untuk melakukan transfer zona, saya menulis skrip bash kecil ini 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

Sekarang saya gunakan dg example.comuntuk mendapatkan daftar catatan DNS yang bagus dan bersih, atau dg example.com xuntuk memasukkan banyak subdomain populer lainnya.

grep -vE "${wild_ips}"memfilter catatan yang mungkin merupakan hasil dari entri DNS wildcard seperti * 10800 IN A 1.38.216.82. Kalau tidak, entri wildcard akan membuatnya tampak seolah-olah ada catatan untuk masing-masing $COMMON_SUBDOMAN.

Catatan: Ini bergantung pada ANYkueri, yang diblokir oleh beberapa penyedia DNS seperti CloudFlare .


3
Saya tahu solusi ini jauh dari ideal, tetapi ini menghemat banyak waktu, jadi saya harap ini akan berguna bagi orang lain.
Zaz

tambahkan dig -t txt +nocmd "$1" +noall +answer(dan modifikasi ke "*.$1"dll.) untuk memeriksa catatan TXT domain.
Maks

15

host -aberfungsi dengan baik, mirip dengan dig any.

MISALNYA:

$ 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
Ini tidak menjawab pertanyaan, yaitu bagaimana menemukan catatan lain di zona DNS suatu domain, yaitu tambahan semua catatan untuk subdomain. Itu bukan untuk mengatakan host -abukan perintah yang berguna, itu hanya tidak melakukan apa yang dicari OP.
spikyjt

13
  1. Transfer zona adalah satu-satunya cara untuk memastikan Anda memiliki semua catatan subdomain. Jika DNS dikonfigurasi dengan benar, Anda biasanya tidak dapat melakukan transfer zona eksternal.

  2. Proyek scans.io memiliki basis data catatan DNS yang dapat diunduh dan dicari subdomain. Ini membutuhkan pengunduhan data DNS 87GB, atau Anda dapat mencoba pencarian data secara online di https://hackertarget.com/find-dns-host-records/


12

Untuk Windows:

Anda mungkin perlu memeriksa status catatan DNS domain Anda, atau memeriksa Server Nama untuk melihat catatan mana yang ditarik oleh server.

  1. Luncurkan Windows Command Prompt dengan menavigasi ke Start> Command Prompt atau melalui Run> CMD.

  2. Ketik NSLOOKUP dan tekan Enter. Server default diatur ke DNS lokal Anda, Alamat akan menjadi IP lokal Anda.

  3. Setel tipe Catatan DNS yang ingin Anda cari dengan mengetik di set type=##mana ## adalah tipe record, lalu tekan Enter. Anda dapat menggunakan APA PUN, A, AAAA, A + AAAA, CNAME, MX, NS, PTR, SOA, atau SRV sebagai jenis rekaman.

  4. Sekarang masukkan nama domain yang ingin Anda query lalu tekan Enter .. Dalam contoh ini, kita akan menggunakan Managed.com.

  5. NSLOOKUP sekarang akan mengembalikan entri rekaman untuk domain yang Anda masukkan.

  6. Anda juga dapat mengubah Server Nama yang Anda cari. Ini berguna jika Anda memeriksa catatan sebelum DNS telah sepenuhnya disebarkan. Untuk mengubah server jenis Server Nama [server nama]. Ganti [server nama] dengan Server Nama yang ingin Anda gunakan. Dalam contoh ini, kami akan menetapkan ini sebagai NSA.managed.com.

  7. Setelah diubah, ubah jenis permintaan (Langkah 3) jika perlu, lalu masukkan domain baru yang baru (Langkah 4.)

Untuk Linux:

1) Periksa Catatan DNS Menggunakan Dig Command Dig singkatan dari groper informasi domain adalah alat yang fleksibel untuk menginterogasi server nama DNS. Itu melakukan pencarian DNS dan menampilkan jawaban yang dikembalikan dari server nama yang ditanyai. Sebagian besar administrator DNS menggunakan penggalian untuk memecahkan masalah DNS karena fleksibilitasnya, kemudahan penggunaan dan kejelasan output. Alat pencarian lainnya cenderung memiliki fungsionalitas lebih sedikit daripada menggali.

2) Periksa Catatan DNS Menggunakan NSlookup Command Nslookup adalah program untuk menanyakan server nama domain Internet. Nslookup memiliki dua mode interaktif dan non-interaktif.

Mode interaktif memungkinkan pengguna untuk menanyakan server nama untuk informasi tentang berbagai host dan domain atau untuk mencetak daftar host di domain.

Mode non-interaktif digunakan untuk mencetak hanya nama dan informasi yang diminta untuk suatu host atau domain. Ini adalah alat administrasi jaringan yang akan membantu mereka untuk memeriksa dan memecahkan masalah terkait DNS.

3) Periksa Catatan DNS Menggunakan Host Command Host adalah utilitas sederhana untuk melakukan pencarian DNS. Biasanya digunakan untuk mengonversi nama menjadi alamat IP dan sebaliknya. Ketika tidak ada argumen atau opsi yang diberikan, host mencetak ringkasan pendek dari argumen dan opsi baris perintahnya.


Ini berfungsi dengan baik untuk saya di Windows 7, tetapi tampaknya bermasalah di Windows 10, inilah yang saya gunakan untuk men-debug catatan TXT di Windows 10: nslookup -querytype = txt yourdomainnamehere.com
The Coder

11

Apa yang Anda inginkan disebut transfer zona . Anda dapat meminta transfer zona menggunakan dig -t axfr.

Sebuah zona adalah domain dan semua domain di bawahnya yang tidak didelegasikan ke server lain.

Perhatikan bahwa transfer zona tidak selalu didukung. Mereka tidak digunakan dalam pencarian normal, hanya dalam mereplikasi data DNS antar server; tetapi ada protokol lain yang dapat digunakan untuk itu (seperti rsync over ssh), mungkin ada risiko keamanan dari mengekspos nama, dan respons transfer zona lebih mahal untuk dihasilkan dan dikirim daripada pencarian DNS biasa.


1

Tidak ada cara mudah untuk mendapatkan semua catatan DNS untuk domain dalam satu contoh. Anda hanya dapat melihat catatan tertentu misalnya, jika Anda ingin melihat catatan A untuk domain tertentu Anda dapat menggunakan perintah: menggali (jenis catatan) domain.com. Ini sama untuk semua jenis catatan lain yang ingin Anda lihat untuk domain itu.

Jika Anda tidak terbiasa dengan antarmuka baris perintah, Anda juga dapat menggunakan situs seperti mxtoolbox.com. Wich adalah alat yang sangat berguna untuk mendapatkan catatan domain.

Saya harap ini menjawab pertanyaan Anda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.