File host tampaknya diabaikan

18

Saya memiliki kotak desktop Ubuntu yang hampir segar. OS diinstal dua minggu lalu dan diperbarui dari repositori karma. Minggu lalu saya tidak punya masalah dengan DNS. Tetapi minggu ini sesuatu telah berubah. Saya tidak yakin apa dan kapan, dan tidak yakin apakah saya mengubah konfigurasi.

Jadi sekarang saya memiliki situasi yang sangat aneh. Menurut log penyelesaian nama harus bekerja secara normal.

/ etc / hosts

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

Tetapi jika kenyataannya tidak.

user @ test ~> tes ping

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

Ping tidak apa-apa.

user @ test ~> tes host

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

Saya curiga bahwa NetworkManager dapat menyebabkan kesalahan perilaku ini, tetapi tidak tahu harus mulai dari mana untuk memeriksanya. Ada pemikiran, saran?

z4y4ts
sumber

Jawaban:

20

Dengan konfigurasi ini, sebagian besar aplikasi akan dengan senang hati bekerja dengan entri Anda /etc/hosts.

Namun hosttidak terlihat /etc/nsswitch.conf. Itu dengan desain, bukan karena kecelakaan, karena hostsecara khusus program pencarian DNS. /etc/hostsbukan DNS, itu (sebagian besar) yang kami gunakan sebelum kami memiliki DNS.

Hal yang sama juga berlaku untuk digdan nslookup- mereka juga spesifik DNS.

Alnitak
sumber
Jadi, maksud Anda, hostutilitas tidak digunakan /etc/hosts? Dan tidak ada yang diperbaiki dalam kasus saya?
z4y4ts
ya, cukup banyak - tidak ada yang bisa dilihat di sini :)
Alnitak
Apa yang saya tidak dapatkan adalah bahwa host> dulu <menjadi "query biasa" nama-query, taat/etc/nsswitch.conf
mveroone
@ Kwaio Saya tidak dapat menemukan bukti dalam sumber-sumber ISC yang hostpernah melakukannya
Alnitak
Yah saya mungkin telah menggunakan implementasi distribusi yang tidak biasa, kemudian, saya yang buruk.
mveroone
15

The hostperintah (bersama dengan digdan nslookup) merupakan bagian dari bindutilitas DNS. Sebagai utilitas penyelesai DNS, ia melakukan resolusi DNS sendiri.

Jika Anda tertarik untuk mengambil entri dari sembarang libnssdata-driver, Anda dapat menggunakan getentprogram ini. Untuk mendapatkan entri host, misalnya, gunakan seperti ini:

getent hosts google.com

Ini mengikuti urutan resolusi yang ditetapkan hosts:di bawah secara /etc/nsswitch.confberurutan, yang termasuk /etc/hostsjika "file" dianggap sebagai salah satu opsi.

tylerl
sumber
Terima kasih telah mengingatkan saya pada getentperintah.
Emmanuel
2
Saya percaya bahwa saat ini seseorang harus menggunakan getent ahostsbukan getent hostskarena getent hostsmenggunakan gethostbyaddr()atau gethostbyname*()yang sudah usang. Jika saya telah mengerti dengan benar, getent hostsmeniru berapa lama program UNIX C digunakan untuk bekerja dan getent ahostsmengemulasi cara program moderm seharusnya bekerja.
Mikko Rantalainen
0

Bagi saya masalah ini terjadi karena izin file yang salah. Hanya root yang bisa membaca / etc / hosts. File harus dapat dibaca dunia.


sumber