tập tin lưu trữ dường như bị bỏ qua


18

Tôi có hộp máy tính để bàn Ubuntu gần như mới. Hệ điều hành đã được cài đặt hai tuần trước và được cập nhật từ kho lưu trữ nghiệp. Tuần trước tôi không có vấn đề gì với DNS. Nhưng tuần này có gì đó đã thay đổi. Tôi không chắc chắn điều gì và khi nào, và không chắc chắn liệu tôi có thay đổi bất kỳ cấu hình nào không.

Vì vậy, bây giờ tôi có một số tình huống thực sự kỳ lạ. Theo nhật ký tên giải quyết nên hoạt động bình thường.

/ etc / host

127.0.0.1   localhost test
127.0.1.1   desktop

/etc/host.conf

order hosts,bind
multi on

/etc/resolv.conf

# Generated by NetworkManager
search search servers obtained via DHCP
nameserver 192.168.0.3

/etc/nsswitch.conf

passwd:         compat
group:          compat
shadow:         compat

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Nhưng nếu thực tế thì không phải vậy.

người dùng @ test ~> kiểm tra ping

PING localhost (127.0.0.1) 56(84) bytes of data.
[skip]

Ping là ok.

người dùng @ test ~> kiểm tra máy chủ

test.mydomain.com has address xx.xxx.161.201

Tôi nghi ngờ rằng NetworkManager có thể gây ra hành vi sai trái này, nhưng không biết bắt đầu từ đâu để kiểm tra nó. Bất kỳ suy nghĩ, đề nghị?

Câu trả lời:


20

Với cấu hình này, hầu hết các ứng dụng sẽ vui vẻ hoạt động với mục nhập của bạn /etc/hosts.

Tuy nhiên hostkhông nhìn vào /etc/nsswitch.conf. Đó là do thiết kế, không phải một cách tình cờ, vì hostđặc biệt một DNS lookup chương trình. /etc/hostskhông phải là DNS, đó là (hầu hết) những gì chúng ta đã sử dụng trước khi có DNS.

Điều này cũng đúng với dignslookup- chúng cũng dành riêng cho DNS.


Vì vậy, bạn đang nói, hosttiện ích không sử dụng /etc/hosts? Và không có gì để sửa trong trường hợp của tôi?
z4y4ts

yup, khá nhiều - không có gì để xem ở đây :)
Alnitak

Điều tôi không nhận được là host> được sử dụng để <là lệnh truy vấn tên "thông thường", tuân theo/etc/nsswitch.conf
mveroone

@Kwaio Tôi không thể tìm thấy bằng chứng nào trong các nguồn ISC đã hosttừng làm
Alnitak

Vâng, tôi có thể đã sử dụng triển khai phân phối không thường xuyên, sau đó, xấu của tôi.
mveroone

15

Các hostlệnh (cùng với dignslookup) là một phần của bindcác tiện ích DNS. Là một tiện ích phân giải DNS, nó chỉ phân giải DNS.

Nếu bạn quan tâm đến việc tìm nạp một mục từ bất kỳ libnsscửa hàng dữ liệu nào, bạn có thể sử dụng getentchương trình. Để có một mục lưu trữ, ví dụ, sử dụng nó như thế này:

getent hosts google.com

Đây theo thứ tự độ phân giải đặt ra dưới hosts:trong /etc/nsswitch.conftheo thứ tự, trong đó bao gồm /etc/hostsnếu "tác phẩm" được lised là một trong những lựa chọn.


Cảm ơn bạn đã nhắc nhở tôi getentlệnh.
Emmanuel

2
Tôi tin rằng ngày nay người ta nên sử dụng getent ahoststhay getent hostsgetent hostssử dụng gethostbyaddr()hoặc gethostbyname*()đã lỗi thời. Nếu tôi đã hiểu chính xác, hãy getent hostsmô phỏng cách các chương trình UNIX C cũ được sử dụng để làm việc và getent ahostsmô phỏng cách các chương trình moderm nên hoạt động.
Mikko Rantalainen

0

Đối với tôi vấn đề này xảy ra do quyền truy cập tập tin không chính xác. Chỉ root mới có thể đọc / etc / hosts. Các tập tin nên được đọc trên thế giới.

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.