Các mục trong tệp 'máy chủ' cục bộ có ghi đè cả tra cứu tên tiến và ngược không?


16

Nếu tôi có các mục sau trong tệp lưu trữ:

192.168.100.1    bugs
192.168.100.2    daffy.example.com
192.168.100.3    elmer.example.com.

IP-> cố gắng giải quyết tên bằng các tiện ích cục bộ (tôi giả sử sử dụng 'gethostbyaddr' hoặc tương đương với Windows) sẽ tôn trọng các mục này? Là hành vi này cấu hình? Làm thế nào để nó khác nhau giữa các hệ điều hành? Liệu các mục nhập tệp 'máy chủ' có đủ điều kiện hay không?

EDIT: Đáp lại Russell, hệ thống Linux thử nghiệm của tôi đang chạy RHEL 4. My /etc/nsswitch.conf chứa dòng 'hosts' sau:

hosts:      files dns nis

Nếu tôi ping bất kỳ máy chủ nào của mình theo tên (ví dụ: bug, daffy), độ phân giải chuyển tiếp hoạt động chính xác. Nếu tôi theo dõi bất kỳ ai trong số họ bằng địa chỉ IP, chức năng tra cứu ngược lại như mong đợi. Tuy nhiên, nếu tôi ping chúng bằng IP, ping sẽ không xuất hiện để giải quyết tên máy chủ của chúng. Tôi hiểu rằng Linux ping sẽ luôn cố gắng phân giải IP thành tên trừ khi được hướng dẫn khác. Tại sao traceroute có thể xử lý tra cứu ngược trong tệp máy chủ, nhưng ping thì không?

Câu trả lời:


16

Nói chung, tập tin máy chủ sẽ được sử dụng cho cả tra cứu chuyển tiếp và đảo ngược. Tùy chọn trên hệ thống Unix này sẽ phụ thuộc vào thứ tự các mục trong tệp nsswitch.conf của bạn.

ví dụ: dòng dưới đây sẽ làm cho tập tin máy chủ ghi đè DNS. Đảo ngược các mục sẽ làm cho DNS ghi đè lên tệp máy chủ.

máy chủ: tập tin dns

Tôi không chắc chắn nếu bạn có thể điều chỉnh theo thứ tự ưu tiên trên hệ thống cửa sổ.

Tôi đã xem qua nguồn ping trong inetutils-20071127 (phiên bản được cài đặt trên hộp Ubuntu 9.04 của tôi) và nguồn dường như kích hoạt chế độ chỉ số nếu bạn ping địa chỉ IP thay vì tên máy chủ:

                if (inet_aton (đích, & whereeto.sin_addr) == 1) {
                        tên máy chủ = mục tiêu;
                        if (argc == 1)
                                tùy chọn | = F_NUMERIC;

Điều này có thể giải thích lý do tại sao bạn không tìm kiếm ngược lại khi bạn ping máy chủ của mình theo địa chỉ IP.


Đó là suy nghĩ của tôi, nhưng điều này dường như không phải là trường hợp. Xem câu hỏi cập nhật để biết chi tiết.
Murali Suriar

Tôi chưa có cơ hội để xem nguồn này; tuy nhiên, nhìn nhanh vào đầu ra ldd cho thấy trên ping hệ thống của tôi được liên kết trực tiếp với thư viện trình phân giải DNS libresolv, có thể ngụ ý rằng nó đang bỏ qua tệp nsswitch và thực hiện tra cứu ngược lại trực tiếp ...
Russell Heilling

Khi sử dụng hosttiện ích ISC , người ta có thể có ấn tượng rằng chỉnh sửa / etc / hosts không có hiệu lực. host 10.0.0.1sẽ thực hiện một truy vấn DNS và bỏ qua tệp máy chủ. Điều này cho phép kiểm tra bộ giải quyết hệ thống:perl -MSocket -le '$a=inet_aton(shift); $_=gethostbyaddr $a, AF_INET; print' 10.0.0.1
mivk 17/05/2015

8

Tôi tìm thấy một tham chiếu để thay đổi các mục đăng ký để thay đổi thứ tự phân giải tên trên Windows:

http://forums11.itrc.hp.com/service/forums/questionanswer.do?threadId=963485

Trích dẫn từ đó:

Theo mặc định, Windows kiểm tra các nhà cung cấp độ phân giải tên theo thứ tự sau:

Cục bộ, (Bộ nhớ cache tên cục bộ NetBT), Máy chủ lưu trữ, DNS, NetBT (THẮNG).

Bạn muốn thứ tự là Host, DNS, Local, NetBT.

Trong những gì sau đây, số thấp hơn là ưu tiên cao hơn.

Các khóa đăng ký sau trong

HKEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\ServicessTcpip\ServiceProvider

cần được sửa đổi.

DnsPriority= 0x3e8 (Decimal: 1000)
HostsPriority= 0x1f4 (Decimal: 500)
LocalPriority= 0x5dc (Decimal: 1500)
NetbtPriority= 0x7d1 (Decimal: 2001)

Làm thế nào để họ có được thông tin "nội bộ" như vậy từ?
Pacerier

1

Các /etc/host.confquy định cụ thể tập tin mà trật tự được sử dụng để phát hiện ra địa chỉ IP. Của tôi chứa sau đây theo mặc định:

#
# /etc/host.conf
#

order hosts,bind
multi on

Điều này có nghĩa là tệp máy chủ luôn được kiểm tra trước và sau đó là DNS (liên kết).

Nếu niskhông được chỉ định ở đây thì nó sẽ không bao giờ nhìn vào /etc/nsswitch.conf.

Liên kết tài liệu: http://tldp.org/LDP/nag/node82.html


Phương thức /etc/host.conf đã lỗi thời đối với một số hệ thống, chỉ có nsswitch.conf được sử dụng (như các hệ thống dựa trên glibc và eglibc). Các phiên bản này của glibc sẽ phân tích cú pháp '/etc/host.conf' mà không cảnh báo và loại bỏ dòng 'đặt hàng'.
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.