Có nhiều tham chiếu khác nhau (chẳng hạn như DNS không thể phân giải tên máy chủ; nslookup có thể hoặc https://web.archive.org/web/20160525082756/http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/nslookup-flaws .html hoặc https://web.archive.org/web/20121113214415/http://cbfive.com/blog/post/PING-vs-NSLookup.aspx ) nêu nội dung sau hoặc điều gì đó tương tự, nhưng không đưa ra gợi ý về các lựa chọn thay thế để sử dụng:

The reason ping can't resolve the hostname but nslookup can is because nslookup a low-level tool that bypasses the Windows DNS client. It uses whatever DNS server you tell it to (the first one by default), and does the query on the fly.

Câu hỏi của tôi là, làm cách nào tôi có thể kiểm tra DNS Client theo cách thủ công để kiểm tra bản ghi SRV? Có cách nào để xem thông tin DNS mà nó cố gắng sử dụng không? Tôi không thể đặt Wireshark trên mọi máy chủ trong mọi môi trường, vì vậy tôi đang tìm một cách khác để khắc phục sự cố. Tôi cho rằng câu trả lời là "không", nếu không thì tại sao chúng ta lại sử dụng nslookup (không đúng như nó vốn có). Rõ ràng là tôi không thể sử dụng ping cho bản ghi SRV.

Đã được chỉnh sửa với các phát hiện được cập nhật: Các truy vấn UDP quá dài, vì vậy phản hồi DNS với cờ cắt ngắn sẽ được gửi đến máy khách, vì vậy cần thực hiện truy vấn TCP. Gói tiếp theo sau truy vấn TCP DNS là (từ TargetDNS đến máy khách): "Phân đoạn TCP của một PDU được tập hợp lại" (trông giống như nó chứa thông tin phản hồi), và sau đó sẽ khác nhau tùy theo tình huống:

  • Truy vấn Nslookup - với truy vấn nslookup thực sự có một gói phản hồi DNS với thông tin
  • ApplicationX (mà tôi tin rằng sử dụng Windows DNS Client) - Truy vấn máy khách Windows DNS, không có gói phản hồi DNS (tức là giống như gói TCP khác đã bị mất)
    • Không có gì trong bộ đệm ẩn DNS (ipconfig / displaydns) hoặc trên bộ đệm ẩn máy chủ DNS của Máy khách cho bản ghi SRV (thậm chí không phải là âm).

Điều đó chứng tỏ, không có gì đáng ngạc nhiên, máy khách DNS và nslookup nhận được các kết quả khác nhau nhưng chính xác thì chúng đang làm gì khác nhau (giảm giá máy chủ, máy chủ lưu trữ, thêm hậu tố tìm kiếm DNS, v.v.)? Họ đang sử dụng các máy chủ DNS giống nhau (bằng chứng là Wireshark). Làm thế nào tôi có thể thu hẹp nơi lỗi nằm?

answer

Sự hiểu biết của bạn là đúng, nó nslookuphoạt động như một máy khách DNS, riêng biệt với bất cứ điều gì mà Hệ điều hành thực hiện thay mặt cho các ứng dụng điển hình.

Mặt khác, lệnh ghép ngắn Powershell Resolve-DnsNamesử dụng máy khách Windows DNS bên dưới. Do đó, đây là một công cụ có thể được sử dụng để kích hoạt hoạt động bình thường của hệ điều hành để tra cứu DNS (hoặc các nguồn khác, bất chấp tên!), Riêng biệt với ứng dụng của bạn.

Ví dụ như một cái gì đó tương tự như một ví dụ về SRVtra cứu:

Resolve-DnsName -Type SRV _sip._tcp.example.com

Ghi chú bên lề:
Hành vi của nslookupvà tương tự (thường diglà công cụ được lựa chọn trong danh mục này) hữu ích để điều tra hành vi DNS, cụ thể là vì môi trường cục bộ không ảnh hưởng đến kết quả, nhưng đồng thời nó làm cho các công cụ này không phù hợp để điều tra hành vi của môi trường OS cục bộ.