Có cách nào để truy vấn các mục DNS nội bộ của chúng tôi để khám phá tất cả các mục CNAME trỏ đến một máy chủ cụ thể không?
Chỉnh sửa: Chúng tôi là môi trường Windows, Server 2003.
Có cách nào để truy vấn các mục DNS nội bộ của chúng tôi để khám phá tất cả các mục CNAME trỏ đến một máy chủ cụ thể không?
Chỉnh sửa: Chúng tôi là môi trường Windows, Server 2003.
Câu trả lời:
Bạn đã không chỉ định môi trường của mình là gì nhưng nếu bạn đang sử dụng Unix tôi nghĩ rằng sự kết hợp giữa dig và grep sẽ hoạt động. ns.example.com
phải là tên máy chủ của máy chủ tên của bạn, example.com
là tên miền mà máy chủ của bạn là một phần và HOST là máy chủ mà bạn muốn tìm tất cả các bản ghi CNAME. Đó thực sự là một ký tự tab trong lệnh grep, không phải theo nghĩa đen <TAB>
(bạn có thể phải điều chỉnh chuỗi grep).
Ngoài ra máy chủ tên của bạn cần phải được cấu hình để cho phép chuyển vùng, các chi tiết sẽ phụ thuộc vào việc triển khai.
dig @ns.example.com example.com axfr |grep 'CNAME<tab>HOST$'
Hoặc nếu bạn đang ở trên Windows, bạn có thể sử dụng nslookup :
C:\> nslookup
> name ns.example.com
> ls -a example.com FILE
Nên sản lượng này tất cả các hồ sơ cho các tên miền example.com
mà ns.example.com
"biết về" để FILE. Sau đó, bạn có thể sử dụng bất kỳ công cụ nào bạn muốn sắp xếp thông qua tệp văn bản đang tìm kiếm CNAMES tương ứng.
Hoặc với tập lệnh perl chưa được kiểm tra (nhưng có vẻ đúng) này :
#!/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."."));
}
Một vài điểm cho sự hoàn chỉnh:
Nếu bạn có quyền truy cập vào cấu hình DNS của mình, việc khám phá dữ liệu này là khá đơn giản. Tuy nhiên, bất cứ ai cũng có thể có một CNAME trỏ đến máy chủ của bạn. Bạn sẽ không thể theo dõi những thứ này.
Như @wombie đã chỉ ra rằng bạn không thể thực hiện tra cứu ngược cho CNnam. Không có PTR tương đương với CNnam và ngay cả khi có khả năng chỉ có một số hồ sơ tồn tại. Việc kiểm tra nhanh lựa chọn tên miền ngẫu nhiên sẽ hiển thị các bản ghi PTR thường không quay lại bản ghi A. Tương tự, thực hiện tra cứu ngược lại các bản ghi PTR cho các địa chỉ ngẫu nhiên thường không tìm thấy bản ghi A tương ứng.
EDIT: CNAME không phải là cách duy nhất để bí danh một hệ thống. DNS cho phép nhiều bản ghi A trỏ đến cùng một địa chỉ. Về mặt chức năng, điều này giống như thêm một CNAME nhưng phương thức thì khác. Các vấn đề tương tự áp dụng bên ngoài miền của bạn. Để tìm kiếm các bản ghi A khác nhau, bạn sẽ tìm kiếm (các) địa chỉ IP của hệ thống được đề cập.
sử dụng powershell:
kiểm tra Tên chính trên Máy chủ DNS Microsoft của bạn:
Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Class MicrosoftDNS_AType -Filter "IPAddress = 'xx.xx.xx.xx (IP)'" -ComputerName myDNsservername
nhận tất cả tên cho máy chủ đó từ máy chủ Microsoft DNS của bạn:
Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Class MicrosoftDNS_CNAMEType -Filter "chínhname = 'tên chính từ truy vấn đầu tiên được kết thúc bằng dấu chấm.'" -ComputerName myDNsservername | chọn tên người dùng, tên chính