Bir sunucu için CNAME'leri DNS sorgulama


Yanıtlar:


6

Ortamınızın ne olduğunu belirtmediniz, ancak Unix kullanıyorsanız dig ve grep kombinasyonunun çalışması gerektiğini düşünüyorum. ns.example.comad sunucunuzun ana bilgisayar adı olmalı, ana example.commakinenizin parçası olduğu alan adı ve HOST, tüm CNAME kayıtlarını bulmak istediğiniz ana makinedir. Bu aslında grep komutunda tam anlamıyla değil bir sekme karakteri <TAB>(grep dizesini ayarlamanız gerekebilir).

Ayrıca ad sunucunuzun, ayrıntıların uygulamaya bağlı olacağı bölge aktarımlarına izin verecek şekilde yapılandırılması gerekir.

dig @ns.example.com example.com axfr |grep 'CNAME<tab>HOST$'

Veya Windows'taysanız nslookup'ı kullanabilirsiniz :

C:\> nslookup
> name ns.example.com
> ls -a example.com FILE

Tüm etki alanı için kayıtların Bunun günümüze çıktı example.como ns.example.comDOSYA "bilir". Daha sonra, karşılık gelen CNAMES'i arayan metin dosyası içinde sıralamak istediğiniz herhangi bir aracı kullanabilirsiniz.

Veya bu test edilmemiş (ama görünüşte doğru görünümlü) perl betiği ile :

#!/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."."));
}

Tamlık için birkaç nokta:

  • @Womble'ın belirttiği gibi, CNAME için bir PTR kaydına eşdeğer değildir. CNAMES için ana makinenizin A kayıtlarına karşılık gelen tüm bölge bilgilerini sıralayarak bağlamsal bir farkındalık kullanmanız gerekir.
  • Bu yalnızca DNS sunucunuz için geçerlidir (ve bölge bilgilerini görüntüleme izniniz varsa). Diğer bölgelere ait olan sunucunuz için CNAMES'i "izlemenin" bir yolu yoktur.
  • @BillThor'un belirttiği gibi, bir ana bilgisayar adını CNAMES'in ötesine takmalamanın başka yolları da vardır. Yine, bazı bağlamsal farkındalığa ihtiyacınız olacak.

Soru güncellendi, Windows'dayız.
PhilPursglove

4

DNS yapılandırmanıza erişiminiz varsa, bu verileri keşfetmek oldukça önemlidir. Ancak, herkes sunucunuza işaret eden bir CNAME'ye sahip olabilir. Bunları izleyemezsiniz.

@Wombie'nin işaret ettiği gibi CNAMES için geriye doğru arama yapamazsınız. CNAMES için PTR eşdeğeri yoktur ve mümkün olduğu yerlerde bile sadece bazı kayıtlar vardır. Rastgele alan seçiminin hızlı bir şekilde kontrol edilmesi, PTR kayıtlarının genellikle A kaydına işaret etmediğini gösterir. Benzer şekilde, rasgele adresler için PTR kayıtlarının geriye doğru aranması genellikle karşılık gelen A kaydını bulamaz.

DÜZENLEME: CNAME'ler, bir sisteme diğer ad vermenin tek yolu değildir. DNS, birden fazla A kaydının aynı adresi göstermesine izin verir. İşlevsel olarak bu bir CNAME eklemekle aynıdır, ancak yöntem farklıdır. Aynı sorunlar alan adınızın dışında da geçerlidir. Çeşitli A kayıtlarını aramak için söz konusu sistemin IP adreslerini arayabilirsiniz.


3

DNS protokolü bu tür bir "ters" aramaya izin vermez. Kce tarafından sağlanan grep önerilerini kullanmak gibi protokol dışına çıkmanız gerekecektir.


2

powershell kullanın:

Microsoft DNS Sunucunuzdaki Primaryname'i kontrol edin:

Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Sınıf MicrosoftDNS_AType -Filter "IPAddress = 'xx.xx.xx.xx (IP)'" -BilgisayarAdı mydnsservername

Microsoft DNS sunucunuzdan o ana bilgisayarın tüm adlarını alın:

Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Sınıf MicrosoftDNS_CNAMEType -Filter "primaryname = 'nokta ile sonlandırılan ilk sorgudan primaryname.'" -BilgisayarAdı mydnsservername | kendi adı, primaryname seçin


1
  1. Makinelerinizin sunduğu tüm bölgeleri bulun.
  2. Her bölge dnscmdiçin, bölge verilerini dışa aktarmak için kullanın :
    dnscmd a.ns.example.com / zoneexport bölgesi.example.com bu bölge için bazı dosya adı
  3. Dışa aktarılan dosyalarda CNAME, hedef etki alanı adına işaret eden kaynak kayıtlarını arayın .
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.