Tại sao độ phân giải tên của tôi lại chạm DNS ngay cả với mục nhập tệp máy chủ?


15

Tôi đang chạy Ubuntu 10.04.2 LTS Desktop. Là một nhà phát triển web, tự nhiên tôi đã tạo một "me.com" trong /etc/hoststệp của mình . Thật không may, độ phân giải tên của tôi sẽ đi ra DNS trước khi kiểm tra đầu vào máy chủ cục bộ của tôi và tôi không thể hiểu tại sao.

Kết quả cuối cùng là nếu /etc/resolv.conf của tôi chứa nameserver 127.0.0.1trong đó trước, thì tôi sẽ nhận được phản hồi trong trình duyệt web của mình từ me.com (cục bộ) trong vòng chưa đến một giây. Nhưng nếu tôi không có mục đó, thì phản hồi của tôi đôi khi mất tới 5 giây nếu ISP của tôi chậm một chút.

Vấn đề rất rắc rối đến nỗi tôi thực sự phải gửi một câu hỏi ở đây (và ai đó đã giải quyết nó) về cách tự động chèn mục đó vào /etc/resolv.conf. Nhưng một trong những người dùng (@shellholic) ở đây rất khuyến khích (và nhận xét qua lại với tôi về điều đó) rằng tôi nên gửi câu hỏi này.

Bạn có biết tại sao độ phân giải tên máy trạm của tôi phải tấn công máy chủ DNS trước khi nhấn /etc/hostsmục nhập tệp của tôi không? Hiện tại, tôi đang sử dụng thủ thuật giải quyết .


1
Bạn có thể thử tìm kiếm /etc/nsswitch.conf. Các mục trên hệ thống của tôi hơi không rõ ràng, nhưng bạn có thể kiểm tra tra cứu chỉ filesvới một tùy chọn và xem điều đó có tạo ra sự khác biệt không.
belacqua

Có, bạn có thể cho chúng tôi đầu ra cat /etc/nsswitch.confcat /etc/host.conf? Ngoài ra: làm thế nào để bạn kiểm tra điều này (thông qua ping, trình duyệt, đánh hơi gói vv)?
sắp xếp

Để hoàn thành phiên bản @arrange, bạn có thể đính kèm kết quả của time getent hosts me.com; hostname --fqdn; grep 'me.com' /etc/hosts; grep hosts /etc/nsswitch.conf; netstat -uln | grep ':53'; cat /etc/host.conf; wc -l /etc/hosts. Đừng ngần ngại làm xáo trộn sự hợp lý.
shellholic

@shellholic ^ tính hợp lý ^ hợp lý? heh
belacqua

@jgbelacqua: thật vậy
shellholic

Câu trả lời:


14

Các tập tin /etc/nsswitch.confsẽ cho phép bạn cấu hình lại thứ tự của độ phân giải tên. Theo mặc định, tệp máy chủ là tệp đầu tiên, sau đó là DNS được định cấu hình. Có thể có nhiều lựa chọn hơn.

Tệp /etc/hostschỉ liệt kê địa chỉ IP và tên máy chủ (nhiều tên cho một IP nếu bạn muốn)

Tệp /etc/resolv.confsẽ liệt kê các miền tìm kiếm mặc định và cũng sẽ liệt kê theo thứ tự các máy chủ tên sẽ sử dụng.


4
Ngoài ra, hãy nhớ rằng một khi tên được giải quyết bởi một ứng dụng hoặc dịch vụ trên hộp Linux của bạn, nó sẽ tồn tại trong bộ đệm trong một khoảng thời gian được gọi là TTL (thời gian tồn tại). Vì vậy, nếu bạn chuyển đổi trình tự độ phân giải, bạn nên khởi động lại hệ thống của mình hoặc xóa bất kỳ bộ đệm.
jfmessier

Làm thế nào để bạn xóa 'bộ đệm'?
Eric Johnson

Tôi không chắc chắn, nhưng khởi động lại kết nối mạng với các lệnh ifup và ifdown có thể làm điều đó. Tất nhiên, khởi động lại sẽ xóa bộ nhớ cache, nhưng chúng ta đang sử dụng Linux, phải không?
jfmessier

nscdcó thể lưu các truy vấn phân giải tên bộ đệm, nhưng không tôn trọng ttl (và do đó, bộ đệm lưu trữ bị tắt theo mặc định). systemd-resolvedcũng sẽ lưu trữ các mục. Nếu không có cái nào được cấu hình, máy chủ Linux sẽ không lưu các phản hồi DNS . (Trình duyệt có thể thực hiện ở lớp ứng dụng)
Gert van den Berg
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.