Câu trả lời:
Bạn sẽ muốn bản ghi SOA (Bắt đầu quyền hạn) cho một tên miền nhất định và đây là cách bạn hoàn thành nó bằng cách sử dụng công cụ dòng lệnh nslookup có sẵn trên toàn cầu :
command line> nslookup
> set querytype=soa
> stackoverflow.com
Server: 217.30.180.230
Address: 217.30.180.230#53
Non-authoritative answer:
stackoverflow.com
origin = ns51.domaincontrol.com # ("primary name server" on Windows)
mail addr = dns.jomax.net # ("responsible mail addr" on Windows)
serial = 2008041300
refresh = 28800
retry = 7200
expire = 604800
minimum = 86400
Authoritative answers can be found from:
stackoverflow.com nameserver = ns52.domaincontrol.com.
stackoverflow.com nameserver = ns51.domaincontrol.com.
Dòng gốc (hoặc máy chủ tên chính trên Windows) cho bạn biết rằng ns51.domaincontrol là máy chủ tên chính cho stackoverflow.com .
Ở cuối đầu ra, tất cả các máy chủ có thẩm quyền, bao gồm các máy chủ dự phòng cho tên miền đã cho, được liệt kê.
dig
dường như tôi sử dụng (xem câu trả lời bên dưới)
nslookup -type=soa stackoverflow.com
trên linux ngày hôm nay (2019-tháng 2), phần có thẩm quyền sẽ trống.
Bạn đã sử dụng số ít trong câu hỏi của mình nhưng thường có một số máy chủ tên có thẩm quyền, RFC 1034 khuyến nghị ít nhất hai.
Trừ khi bạn có nghĩa là "máy chủ tên chính" chứ không phải "máy chủ tên có thẩm quyền". Các máy chủ tên phụ là có thẩm quyền.
Để tìm hiểu các máy chủ tên miền của Unix:
% dig +short NS stackoverflow.com
ns52.domaincontrol.com.
ns51.domaincontrol.com.
Để tìm ra máy chủ được liệt kê là chính (khái niệm "chính" khá mờ trong những ngày này và thường không có câu trả lời hay):
% dig +short SOA stackoverflow.com | cut -d' ' -f1
ns51.domaincontrol.com.
Để kiểm tra sự khác biệt giữa các máy chủ tên, tùy chọn của tôi chuyển đến check_soa
công cụ cũ , được mô tả trong sách "DNS & BIND" của Liu & Albitz (biên tập viên O'Reilly). Mã nguồn có sẵn trong http://examples.oreilly.com/dns5/
% check_soa stackoverflow.com
ns51.domaincontrol.com has serial number 2008041300
ns52.domaincontrol.com has serial number 2008041300
Ở đây, hai máy chủ tên có thẩm quyền có cùng số sê-ri. Tốt
www.pressero.com
là CNAME cho một trang web khác - dig + short SOA chỉ trả về mục tiêu CNAME.
www.pressero.com
có lẽ bạn đã nghĩ về các bản ghi A (đây là loại bản ghi mặc định dig
nếu bạn không chỉ định nó). Nhưng nếu cần, chỉ cần thêm một tail -1
để lấy kết quả cuối cùng.
dig +short SOA www.pressero.com
. Điều này chỉ trả về mục tiêu CNAME - không phải là bản ghi SOA cho pressero.com
tên miền, đó là những gì tôi mong đợi. tail -1
không giúp đỡ vấn đề; dig +short SOA
chỉ phát ra một dòng.
Trên * nix:
$ dig -t ns <domain name>
Tôi có một công cụ truyền bá DNS được thiết kế để trả lời các loại câu hỏi này.
Nguồn được phát hành theo AGPLv3.
(Vâng, giao diện khá cơ bản tại thời điểm này :))
Bạn cũng có thể tìm ra máy chủ tên cho một tên miền bằng lệnh "host":
[davidp @ supernova: ~] $ host -t ns stackoverflow.com máy chủ tên stackoverflow.com ns51.domaincontrol.com. máy chủ tên stackoverflow.com ns52.domaincontrol.com.
Tôi thấy rằng cách tốt nhất để thêm luôn tùy chọn + dấu vết:
dig SOA +trace stackoverflow.com
Nó cũng hoạt động với CNAME đệ quy được lưu trữ trong nhà cung cấp khác nhau. + dấu vết dấu vết ngụ ý + norecurse vì vậy kết quả chỉ dành cho tên miền bạn chỉ định.
Thuật ngữ bạn nên googling là "có thẩm quyền", không "dứt khoát".
Trên Linux hoặc Mac mà bạn có thể sử dụng các lệnh whois
, dig
, host
, nslookup
hoặc một số người khác. nslookup
cũng có thể hoạt động trên Windows.
Một ví dụ:
$ whois stackoverflow.com
[...]
Domain servers in listed order:
NS51.DOMAINCONTROL.COM
NS52.DOMAINCONTROL.COM
Đối với tín dụng thêm: Có, nó có thể.
aryeh chắc chắn là sai, vì đề nghị của anh ấy thường sẽ chỉ cung cấp cho bạn địa chỉ IP cho tên máy chủ. Nếu bạn sử dụng dig
, bạn phải tìm bản ghi NS, như vậy:
dig ns stackoverflow.com
Hãy nhớ rằng điều này có thể yêu cầu máy chủ DNS cục bộ của bạn và do đó có thể đưa ra câu trả lời sai hoặc lỗi thời mà nó có trong bộ đệm.
Chúng tôi đã xây dựng một công cụ tra cứu dns cung cấp cho bạn các máy chủ tên có thẩm quyền của tên miền và các bản ghi dns chung của nó trong một yêu cầu.
Ví dụ: https://www.misk.com/tools/#dns/stackoverflow.com
Công cụ của chúng tôi tìm thấy các máy chủ tên có thẩm quyền bằng cách thực hiện tra cứu dns thời gian thực (không bị chặn) tại các máy chủ tên gốc và sau đó theo các giới thiệu máy chủ tên cho đến khi chúng tôi tiếp cận các máy chủ tên có thẩm quyền. Đây là logic tương tự mà các trình phân giải dns sử dụng để có được câu trả lời có thẩm quyền. Một máy chủ tên có thẩm quyền ngẫu nhiên được chọn (và được xác định) trên mỗi truy vấn cho phép bạn tìm các bản ghi dns xung đột bằng cách thực hiện nhiều yêu cầu.
Bạn cũng có thể xem đường dẫn ủy nhiệm máy chủ tên bằng cách nhấp vào "Máy chủ tên có thẩm quyền" ở cuối kết quả tra cứu dns từ ví dụ trên.
Ví dụ: https://www.misk.com/tools/#dns/stackoverflow.com@f.root-servers.net
Bạn có thể sử dụng dịch vụ whois. Trên hệ điều hành UNIX giống như bạn sẽ thực hiện lệnh sau. Ngoài ra, bạn có thể làm điều đó trên web tại http: //www.i INTERNic.net/whois.html .
whois stackoverflow.com
Bạn sẽ nhận được phản hồi sau đây.
... văn bản bị xóa ở đây ...
Máy chủ tên miền theo thứ tự được liệt kê: NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM
Bạn có thể sử dụng nslookup hoặc đào để tìm hiểu thêm thông tin về các bản ghi cho một tên miền nhất định. Điều này có thể giúp bạn giải quyết các xung đột bạn đã mô tả.
Thật không may, hầu hết các công cụ này chỉ trả về bản ghi NS như được cung cấp bởi chính máy chủ tên thực tế. Để chính xác hơn trong việc xác định máy chủ tên nào thực sự chịu trách nhiệm cho một tên miền, bạn phải sử dụng "whois" và kiểm tra các tên miền được liệt kê ở đó HOẶC sử dụng "dig [domain] NS @ [máy chủ tên gốc]" và chạy nó đệ quy cho đến khi bạn nhận được danh sách máy chủ tên ...
Tôi ước có một dòng lệnh đơn giản mà bạn có thể chạy để có được kết quả THAT một cách đáng tin cậy và trong một định dạng nhất quán, không chỉ là kết quả được đưa ra từ chính máy chủ tên. Mục đích của việc này đối với tôi là có thể truy vấn khoảng 330 tên miền mà tôi quản lý để tôi có thể xác định chính xác máy chủ tên mà mỗi tên miền đang trỏ tới (theo cài đặt đăng ký của chúng).
Bất cứ ai cũng biết một lệnh sử dụng "đào" hoặc "máy chủ" hoặc một cái gì đó khác trên * nix?
Các bản ghi SOA hiện diện trên tất cả các máy chủ theo cấu trúc phân cấp, trong đó chủ sở hữu tên miền KHÔNG có quyền kiểm soát và tất cả chúng đều có hiệu lực đối với một máy chủ tên có thẩm quyền dưới sự kiểm soát của chủ sở hữu tên miền.
Mặt khác, bản ghi SOA trên máy chủ có thẩm quyền không thực sự cần thiết để giải quyết tên miền đó và có thể chứa thông tin không có thật (hoặc máy chủ chính bị ẩn hoặc các máy chủ bị hạn chế khác) và không nên dựa vào để xác định máy chủ tên có thẩm quyền cho một miền nhất định.
Bạn cần truy vấn máy chủ có thẩm quyền đối với miền cấp cao nhất để có được thông tin SOA đáng tin cậy cho một miền con nhất định.
(Thông tin về máy chủ nào có thẩm quyền mà TLD có thể được truy vấn từ các máy chủ tên gốc).
Khi bạn có thông tin đáng tin cậy về SOA từ máy chủ có thẩm quyền TLD, sau đó bạn có thể truy vấn chính máy chủ tên chính (máy chủ trong bản ghi SOA trên máy chủ tên gTLD!) Cho bất kỳ bản ghi NS nào khác, sau đó tiến hành kiểm tra tất cả những máy chủ tên mà bạn có được từ việc truy vấn các bản ghi NS, để xem liệu có bất kỳ sự không nhất quán nào đối với bất kỳ bản ghi cụ thể nào khác không, trên bất kỳ máy chủ nào trong số đó.
Tất cả điều này hoạt động tốt hơn / đáng tin cậy hơn với linux và đào hơn so với nslookup / windows.
Một cách dễ dàng là sử dụng một công cụ tên miền trực tuyến. Yêu thích của tôi là Công cụ miền (trước đây là whois.sc). Tôi không chắc liệu họ có thể giải quyết các bản ghi DNS xung đột hay không. Ví dụ: các máy chủ DNS cho stackoverflow.com là
NS51.DOMAINCONTROL.COM
NS52.DOMAINCONTROL.COM
Tôi đã thấy rằng đối với một số tên miền, các câu trả lời trên không hoạt động. Cách nhanh nhất tôi tìm thấy là trước tiên hãy kiểm tra bản ghi NS. Nếu điều đó không tồn tại, hãy kiểm tra bản ghi SOA. Nếu điều đó không tồn tại, giải quyết đệ quy tên bằng cách sử dụng dig và lấy bản ghi NS cuối cùng được trả về. Một ví dụ phù hợp với điều này làanalyticsdcs.ccs.mcafee.com.
host -t NS analyticsdcs.ccs.mcafee.com.
host -t SOA analyticsdcs.ccs.mcafee.com.
dig +trace analyticsdcs.ccs.mcafee.com. | grep -w 'IN[[:space:]]*NS' | tail -1
host analyticsdcs.ccs.mcafee.com. gtm2.mcafee.com.