Apakah ada cara untuk menanyakan entri DNS internal kami untuk menemukan semua entri CNAME yang mengarah ke server tertentu?
Sunting: Kami adalah lingkungan Windows, Server 2003.
sumber
Apakah ada cara untuk menanyakan entri DNS internal kami untuk menemukan semua entri CNAME yang mengarah ke server tertentu?
Sunting: Kami adalah lingkungan Windows, Server 2003.
Anda tidak menentukan apa lingkungan Anda, tetapi jika Anda menggunakan Unix, saya pikir kombinasi dig dan grep akan berfungsi. ns.example.com
harus menjadi nama host server nama Anda, example.com
adalah domain tempat host Anda menjadi bagiannya, dan HOST adalah host yang Anda inginkan untuk menemukan semua catatan CNAME. Itu sebenarnya karakter tab dalam perintah grep, bukan secara harfiah <TAB>
(Anda mungkin harus menyesuaikan string grep).
Server nama Anda juga perlu dikonfigurasi untuk memungkinkan transfer zona, khususnya yang tergantung pada implementasi.
dig @ns.example.com example.com axfr |grep 'CNAME<tab>HOST$'
Atau jika Anda menggunakan Windows, Anda dapat menggunakan nslookup :
C:\> nslookup
> name ns.example.com
> ls -a example.com FILE
Ini harus menampilkan semua catatan untuk domain example.com
yang ns.example.com
"tahu tentang" ke FILE. Anda kemudian dapat menggunakan alat apa pun yang Anda inginkan untuk menyortir file teks mencari CNAMES yang sesuai.
Atau dengan skrip perl ini yang belum teruji (tetapi tampak benar benar) :
#!/usr/bin/perl
use Net::DNS;
($target, $zone) = @ARGV;
$res = new Net::DNS::Resolver;
foreach $rr ($res->axfr($zone)) {
print $rr->name."\n" if (($rr->type eq "CNAME") && ($rr->rdatastr eq $target."."));
}
Beberapa poin untuk kelengkapan:
Jika Anda memiliki akses ke konfigurasi DNS Anda, agak sepele untuk menemukan data ini. Namun, siapa pun dapat memiliki CNAME yang menunjuk ke server Anda. Anda tidak akan dapat melacaknya.
Seperti yang ditunjukkan @wombie, Anda tidak dapat melakukan pencarian terbalik untuk CNAMES. Tidak ada PTR yang setara untuk CNAMES, dan bahkan jika ada di mana kemungkinan hanya beberapa catatan yang akan ada. Pemeriksaan cepat dari pemilihan domain acak akan menunjukkan catatan PTR sering tidak menunjuk kembali ke catatan A. Demikian juga, melakukan pencarian terbalik catatan PTR untuk alamat acak sering tidak menemukan catatan A yang sesuai.
EDIT: CNAME bukan satu-satunya cara untuk alias sistem. DNS memungkinkan beberapa catatan A untuk menunjuk alamat yang sama. Secara fungsional ini sama dengan menambahkan CNAME tetapi metodenya berbeda. Masalah yang sama berlaku di luar domain Anda. Untuk mencari berbagai catatan A Anda akan mencari alamat IP sistem yang bersangkutan.
sumber
Protokol DNS tidak memungkinkan Anda untuk melakukan pencarian "terbalik" semacam itu. Anda harus keluar dari protokol, seperti menggunakan saran grep yang disediakan oleh kce.
sumber
gunakan PowerShell:
periksa Primaryname pada Microsoft DNS Server Anda:
Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Class MicrosoftDNS_AType -Filter "IPAddress = 'xx.xx.xx.xx (IP)'" -ComputerName mydnsservername
dapatkan semua cnames untuk host itu dari server Microsoft DNS Anda:
Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Class MicrosoftDNS_CNAMEType -Filter "primaryname = 'primaryname dari kueri pertama diakhiri dengan sebuah titik.'" -ComputerName mydnsservername | pilih nama pengguna, nama utama
sumber
dnscmd
untuk mengekspor data zona:CNAME
catatan sumber daya yang mengarah ke nama domain target.sumber