มีวิธีสอบถามรายการ DNS ภายในของเราเพื่อค้นหารายการ CNAME ทั้งหมดที่ชี้ไปที่เซิร์ฟเวอร์เฉพาะหรือไม่
แก้ไข: เราเป็นระบบ Windows, Server 2003
มีวิธีสอบถามรายการ DNS ภายในของเราเพื่อค้นหารายการ CNAME ทั้งหมดที่ชี้ไปที่เซิร์ฟเวอร์เฉพาะหรือไม่
แก้ไข: เราเป็นระบบ Windows, Server 2003
คำตอบ:
คุณไม่ได้ระบุว่าสภาพแวดล้อมของคุณคืออะไร แต่ถ้าคุณใช้ 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."."));
}
สองจุดเพื่อความสมบูรณ์:
หากคุณมีสิทธิ์เข้าถึงการกำหนดค่า DNS ของคุณการค้นพบข้อมูลนี้ค่อนข้างเล็กน้อย อย่างไรก็ตามทุกคนสามารถมี CNAME ที่ชี้ไปยังเซิร์ฟเวอร์ของคุณ คุณจะไม่สามารถติดตามสิ่งเหล่านี้
@wombie ชี้ให้เห็นว่าคุณไม่สามารถทำการค้นหาแบบย้อนกลับสำหรับ CNAMES ไม่มี PTR ที่เทียบเท่าสำหรับ CNAMES และแม้ว่าจะมีเพียงบางระเบียนเท่านั้น การตรวจสอบอย่างรวดเร็วของการเลือกแบบสุ่มของโดเมนจะแสดงระเบียน PTR มักจะไม่ชี้กลับไปที่ระเบียน A เช่นเดียวกันการค้นหาเรคคอร์ด PTR แบบย้อนกลับสำหรับที่อยู่สุ่มมักจะไม่พบเรคคอร์ด A ที่เกี่ยวข้อง
แก้ไข: CNAME ไม่ใช่วิธีเดียวที่จะตั้งชื่อแทนระบบ DNS อนุญาตให้ระเบียน A หลายระเบียนชี้ที่อยู่เดียวกัน ฟังก์ชันนี้เหมือนกับการเพิ่ม CNAME แต่วิธีการนั้นแตกต่างกัน ปัญหาเดียวกันนี้นำไปใช้นอกโดเมนของคุณ ในการค้นหาเรคคอร์ด A ต่างๆคุณจะค้นหาที่อยู่ IP ของระบบที่เป็นปัญหา
โพรโทคอล DNS ไม่อนุญาตให้คุณทำการค้นหาแบบ "ย้อนกลับ" นั้น คุณจะต้องออกจากโปรโตคอลเช่นใช้คำแนะนำ grep ที่จัดทำโดย kce
ใช้ 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 | เลือกชื่อตัวเองชื่อหลัก
dnscmd
เพื่อส่งออกข้อมูลโซน:dnscmd a.ns.example.com / zoneexport zone.example.com ชื่อไฟล์สำหรับโซนนี้
CNAME
เรคคอร์ดทรัพยากรที่ชี้ไปที่ชื่อโดเมนเป้าหมาย