Meminta DNS untuk CNAME untuk server

Jawaban:

6

Anda tidak menentukan apa lingkungan Anda, tetapi jika Anda menggunakan Unix, saya pikir kombinasi dig dan grep akan berfungsi. ns.example.comharus menjadi nama host server nama Anda, example.comadalah 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.comyang 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:

  • Seperti @womble menyatakan, tidak ada yang setara dengan catatan PTR untuk CNAME. Anda harus menggunakan kesadaran kontekstual dengan memilah-milah semua informasi zona untuk CNAMES yang sesuai dengan catatan A dari host Anda.
  • Ini hanya berfungsi untuk server DNS Anda (dan jika Anda memiliki izin untuk melihat informasi zona). Tidak ada cara untuk "melacak" CNAMES untuk host Anda yang termasuk dalam zona lain.
  • Sebagai @BillThor menyatakan, ada cara lain untuk alias nama host di luar CNAMES. Sekali lagi, Anda membutuhkan kesadaran kontekstual.

sumber
Pertanyaan diperbarui, kami menggunakan Windows.
PhilPursglove
4

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.

BillThor
sumber
3

Protokol DNS tidak memungkinkan Anda untuk melakukan pencarian "terbalik" semacam itu. Anda harus keluar dari protokol, seperti menggunakan saran grep yang disediakan oleh kce.

womble
sumber
2

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

Josef Aschauer
sumber
1
  1. Temukan semua zona yang dilayani oleh mesin Anda.
  2. Untuk setiap zona, gunakan dnscmduntuk mengekspor data zona:
    dnscmd a.ns.example.com / zoneexport zone.example.com beberapa nama file untuk zona ini
  3. Cari file yang diekspor untuk CNAMEcatatan sumber daya yang mengarah ke nama domain target.
JdeBP
sumber