Điều gì có thể khiến tra cứu DNS bỏ qua mục nhập tệp máy chủ?


13

Tôi đang gặp sự cố giải quyết DNS ảnh hưởng đến hiệu suất của trang web được lưu trữ cục bộ của tôi khi duyệt nó trên máy cục bộ của tôi. Nếu tôi đính kèm hậu tố DNS của mạng với tên máy cục bộ của tôi khi tôi truy cập URL trong trình duyệt của mình, trang web có thời gian tải khủng khiếp (chậm hơn 100 lần) so với không có hậu tố DNS.

Tôi nghĩ rằng tôi có thể khắc phục điều này bằng cách sử dụng tệp máy chủ của mình để tránh phải tìm kiếm. Tôi đã thêm một mục vào tập tin máy chủ của tôi như thế này

127.0.0.1    myMachine.MyDnsSuffix

Nhưng điều này không thay đổi thời gian tải, ngay cả sau khi khởi động lại. Mặc dù không quan trọng để giải quyết vấn đề cụ thể này, tôi thực sự muốn biết tại sao điều này xảy ra.

Ngoài ra, khi tôi chạy nslookup trên miền myMachine.MyDnsSuffix, tôi nhận thấy nó sử dụng máy chủ DNS của mạng tôi để tìm IP. Điều này có thể liên quan đến vấn đề của tôi hay tôi chỉ hiểu sai về cách hoạt động của nslookup?

Câu trả lời:


20

Tôi tin rằng nslookup được sử dụng để kiểm tra chính máy chủ DNS, trái ngược với việc sử dụng tệp HOSTS của bạn. http://support.microsoft.com/kb/200525 dường như chỉ ra càng nhiều.

Hãy thử chỉ một ping đơn giản. Có ping myMachine.MyDnsSuffixgiải quyết được địa chỉ loopback mà bạn đã chỉ định trong tệp HOSTS của mình không?


Bạn đã làm một điểm tốt về nslookup. Tôi vừa thử ping myMachine.MyDnsSuffixvà nó đã phân giải IP của tôi trên mạng, không 127.0.0.1giống như được chỉ định trong tệp HOSTS của tôi.
Dan Herbert

HĐH của bạn là gì? Tôi nghĩ Windows7 và có thể cả Vista có một số biện pháp bảo vệ UAC kỳ lạ trên tệp HOSTS. Bạn có chắc chắn những thay đổi của bạn đang tiết kiệm đúng cách?
Christopher Karel

HĐH của tôi là Windows XP. Những thay đổi dường như được lưu lại đúng cách.
Dan Herbert

Hmm ... không có dấu băm khi bắt đầu mục HOSTS đó, phải không? (điều đó sẽ làm cho nó trở thành một nhận xét) Và bạn có chắc là nó trong C: \ Windows \ System32 \ driver \ etc \ hosts? Bạn có thể thêm một mục giả ở đó không, và xem nếu nó giải quyết như bạn chỉ định?
Christopher Karel

3
Ồ, và đừng quên xóa bộ nhớ cache tên của bạn. ipconfig /flushdns. Và bộ nhớ cache NETBIOS cũng vậy : nbtstat -R. (Trường hợp nhạy cảm trong các cửa sổ - WTF, tại sao?!?)
Christopher Karel

8

Tra cứu DNS không sử dụng tệp lưu trữ. Không bao giờ.


2
@BartDeVos không, nó không sai. Tra cứu máy chủ chung (nghĩa là gethostbyname()có thể đi qua tệp máy chủ hoặc qua DNS, nhưng tra cứu dành riêng cho DNS (như được thực hiện bởi nslookup) sẽ không sử dụng tệp máy chủ.
Alnitak

Điều đó nói rằng, gethostinfo / getaddrinfo (phiên bản hiện đại của gethostbyname) là POSIX và không nhất thiết là những gì Windows sử dụng.
thích nghi

2

OK, cách tiếp cận hoàn toàn mới. Hãy để bạn xóa bộ nhớ cache IP và NETBIOS của bạn. ipconfig /flushdnsnbtstat -R. Sau đó kích hoạt gói sniffer như Wireshark và ping trong khi nó đang chạy.

Từ việc bắt gói tin, chúng tôi muốn xem liệu A) Có yêu cầu DNS nào không, và nếu vậy, nó yêu cầu tên gì. B) Nếu có yêu cầu NETBIOS đi ra. Có thể tên này đang được giải quyết thông qua NETBIOS thay vì DNS thích hợp.

Nếu chúng tôi không thấy một trong những điều trên mặc dù bạn xóa bộ nhớ cache của mình, thì có khả năng tên đó đang được kéo từ máy chủ hoặc lmhost.


1

Một số người trên các diễn đàn web cho rằng việc tạo tệp máy chủ mới và khởi động lại dịch vụ máy khách DNS sẽ khắc phục sự cố, nhưng tôi không chắc tại sao điều đó sẽ hoạt động nếu bạn đã thử khởi động lại.

Tôi nhận ra đây là một từ lâu, nhưng không có bất kỳ từ nào liên quan đến Microsoft như MSDN, Microsoft hoặc MSN trong mục nhập tệp máy chủ, phải không? Microsoft đã viết dnsapi.dll để bỏ qua các mục nhập tệp lưu trữ khớp với các tên nhất định. Ví dụ: nếu tôi thêm mục nhập sau, Windows sẽ bỏ qua mục đó và giải quyết cả hai tên máy chủ trong mục nhập bằng DNS:

127.0.0.1 www.microsoft.com www.mysite.com

Tôi không có bất kỳ nội dung nào liên quan đến microsoft trong tệp HOSTS của mình. Tôi chỉ có một vài miền thử nghiệm nội bộ được chỉ định. Tập tin HOSTS của tôi là khá cơ bản.
Dan Herbert

Hừm, thú vị. Tôi biết rằng các miền MS được mã hóa cứng để bỏ qua HOSTStệp, nhưng ngay cả miền không phải MS cũng bị bỏ qua nếu nó chia sẻ một mục với miền MS? Đó chỉ là chương trình kém về phần họ. Đây chắc chắn là một cái gì đó cần chú ý nếu HOSTStập tin khai thác trực tuyến.
Synetech

0

Khi sử dụng tên DNS đầy đủ, trình duyệt của bạn đang cố gắng đi qua máy chủ proxy của bạn - clicky cho IE .

Thứ tự giải quyết tệp hoặc tên máy chủ không liên quan gì đến vấn đề này và vấn đề nhức nhối ở mặt sau của nhân loại là tệp máy chủ nên được gỡ ra và bắn một cách ồn ào.


Tôi không được kết nối với một proxy mặc dù.
Dan Herbert

1
@mh: tôi sẽ đồng ý với bạn về việc chụp máy chủ, miễn là máy chủ gốc cho phép tôi thêm / xóa / chỉnh sửa hồ sơ.
Ian Boyd

0

http://geekswithbloss.net/JanS/archive/2009/06/17/bnterest-of-spaces-in-windows7-hosts-file.aspx

Điều này dường như là nguyên nhân thực tế. Để lại cho Microsoft bất ngờ và không có cảnh báo bỏ qua một quy ước 25 năm.


2
Vui lòng bao gồm một ý chính của câu trả lời / nguyên nhân trong câu trả lời của bạn. Nó đẹp hơn nhiều so với chỉ một liên kết.
Jacob

Đây là phần thiết yếu của URL được liên kết Tuy nhiên, dường như không có gì hoạt động. Cho đến khi tôi thấy một số ví dụ khác lưu trữ các tệp được định dạng là <địa chỉ ip> <không gian đơn> <value>
Tun

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.