การค้นหา DNS สำหรับ CNAME สำหรับเซิร์ฟเวอร์


12

มีวิธีสอบถามรายการ DNS ภายในของเราเพื่อค้นหารายการ CNAME ทั้งหมดที่ชี้ไปที่เซิร์ฟเวอร์เฉพาะหรือไม่

แก้ไข: เราเป็นระบบ Windows, Server 2003

คำตอบ:


6

คุณไม่ได้ระบุว่าสภาพแวดล้อมของคุณคืออะไร แต่ถ้าคุณใช้ Unix ฉันคิดว่าการรวมกันของ dig และ grep ควรทำงาน ns.example.comควรเป็นชื่อโฮสต์ของ nameserver ของคุณexample.comเป็นโดเมนที่โฮสต์ของคุณเป็นส่วนหนึ่งและ HOST เป็นโฮสต์ที่คุณต้องการค้นหาระเบียน CNAME ทั้งหมดสำหรับ นั่นคืออักขระแท็บในคำสั่ง grep ไม่ใช่ตัวอักษร<TAB>(คุณอาจต้องปรับเปลี่ยนสตริง grep)

นอกจากนี้เนมเซิร์ฟเวอร์ของคุณจะต้องได้รับการกำหนดค่าให้อนุญาตการถ่ายโอนโซนรายการที่จะขึ้นอยู่กับการนำไปใช้งาน

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

หรือถ้าคุณใช้ Windows คุณสามารถใช้nslookup :

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

สิ่งนี้จะแสดงระเบียนทั้งหมดสำหรับโดเมนexample.comที่ns.example.com"รู้เกี่ยวกับ" ไปยังไฟล์ จากนั้นคุณสามารถใช้เครื่องมืออะไรก็ได้ที่คุณต้องการเรียงลำดับไฟล์ข้อความเพื่อค้นหา CNAMES ที่เกี่ยวข้อง

หรือกับเรื่องนี้ยังไม่ทดลอง ( แต่น่ารักที่ถูกต้องมอง) Perl สคริปต์ :

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

สองจุดเพื่อความสมบูรณ์:

  • ตามที่ @womble ระบุว่าไม่มีระเบียนเทียบเท่า PTR สำหรับ CNAME คุณจะต้องใช้การรับรู้บริบทโดยการเรียงลำดับข้อมูลโซนทั้งหมดสำหรับ CNAMES ที่สอดคล้องกับระเบียน A ของโฮสต์ของคุณ
  • ใช้งานได้เฉพาะกับเซิร์ฟเวอร์ DNS ของคุณ (และหากคุณได้รับอนุญาตให้ดูข้อมูลโซน) ไม่มีวิธี "ติดตาม" CNAMES สำหรับโฮสต์ของคุณที่อยู่ในโซนอื่น
  • ในฐานะ @BillThor รัฐมีวิธีอื่นในการใช้ชื่อแทนชื่อโฮสต์ที่นอกเหนือจาก CNAMES อีกครั้งคุณจะต้องรับรู้บริบท

อัปเดตคำถามเราอยู่ใน Windows
PhilPursglove

4

หากคุณมีสิทธิ์เข้าถึงการกำหนดค่า DNS ของคุณการค้นพบข้อมูลนี้ค่อนข้างเล็กน้อย อย่างไรก็ตามทุกคนสามารถมี CNAME ที่ชี้ไปยังเซิร์ฟเวอร์ของคุณ คุณจะไม่สามารถติดตามสิ่งเหล่านี้

@wombie ชี้ให้เห็นว่าคุณไม่สามารถทำการค้นหาแบบย้อนกลับสำหรับ CNAMES ไม่มี PTR ที่เทียบเท่าสำหรับ CNAMES และแม้ว่าจะมีเพียงบางระเบียนเท่านั้น การตรวจสอบอย่างรวดเร็วของการเลือกแบบสุ่มของโดเมนจะแสดงระเบียน PTR มักจะไม่ชี้กลับไปที่ระเบียน A เช่นเดียวกันการค้นหาเรคคอร์ด PTR แบบย้อนกลับสำหรับที่อยู่สุ่มมักจะไม่พบเรคคอร์ด A ที่เกี่ยวข้อง

แก้ไข: CNAME ไม่ใช่วิธีเดียวที่จะตั้งชื่อแทนระบบ DNS อนุญาตให้ระเบียน A หลายระเบียนชี้ที่อยู่เดียวกัน ฟังก์ชันนี้เหมือนกับการเพิ่ม CNAME แต่วิธีการนั้นแตกต่างกัน ปัญหาเดียวกันนี้นำไปใช้นอกโดเมนของคุณ ในการค้นหาเรคคอร์ด A ต่างๆคุณจะค้นหาที่อยู่ IP ของระบบที่เป็นปัญหา


3

โพรโทคอล DNS ไม่อนุญาตให้คุณทำการค้นหาแบบ "ย้อนกลับ" นั้น คุณจะต้องออกจากโปรโตคอลเช่นใช้คำแนะนำ grep ที่จัดทำโดย kce


2

ใช้ PowerShell:

ตรวจสอบชื่อหลักบนเซิร์ฟเวอร์ Microsoft DNS ของคุณ:

Get-WmiObject -Namespace 'root \ MicrosoftDNS' - คลาส MicrosoftDNS_AType - ตัวกรอง "IPAddress = 'xx.xx.xx.xx (IP)'" - ชื่อคอมพิวเตอร์ mydnsservername

รับชื่อทั้งหมดสำหรับโฮสต์นั้นจากเซิร์ฟเวอร์ Microsoft DNS ของคุณ:

Get-WmiObject -Namespace 'root \ MicrosoftDNS' - คลาส MicrosoftDNS_CNAMEType - ตัวกรอง "primaryname = 'ชื่อหลักจากแบบสอบถามแรกถูกยกเลิกด้วยจุด'" -ComputerName mydnsservername | เลือกชื่อตัวเองชื่อหลัก


1
  1. ค้นหาโซนทั้งหมดที่ให้บริการโดยเครื่องของคุณ
  2. สำหรับแต่ละโซนใช้dnscmdเพื่อส่งออกข้อมูลโซน:
    dnscmd a.ns.example.com / zoneexport zone.example.com ชื่อไฟล์สำหรับโซนนี้
  3. ค้นหาไฟล์ที่ส่งออกเพื่อดูCNAMEเรคคอร์ดทรัพยากรที่ชี้ไปที่ชื่อโดเมนเป้าหมาย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.