Apakah entri dalam file 'host' lokal mengesampingkan pencarian nama maju dan mundur?

16

Jika saya memiliki entri berikut di file host:

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

Akankah IP-> upaya resolusi nama oleh utiliti lokal (saya berasumsi menggunakan 'gethostbyaddr' atau yang setara dengan Windows) menghargai entri ini? Apakah perilaku ini dapat dikonfigurasi? Bagaimana perbedaan antara sistem operasi? Apakah penting apakah entri file 'host' sepenuhnya memenuhi syarat atau tidak?

EDIT: Sebagai tanggapan terhadap Russell, sistem pengujian Linux saya menjalankan RHEL 4. My /etc/nsswitch.conf berisi baris 'hosts' berikut:

hosts:      files dns nis

Jika saya ping salah satu host saya dengan nama (misalnya bug, daffy), resolusi maju berfungsi dengan benar. Jika saya melacak salah satu dari mereka dengan alamat IP, fungsi pencarian terbalik seperti yang diharapkan. Namun, jika saya ping mereka dengan IP, ping tidak muncul untuk menyelesaikan nama host mereka. Pemahaman saya adalah bahwa ping Linux akan selalu berusaha menyelesaikan IP untuk nama kecuali diinstruksikan sebaliknya. Mengapa traceroute dapat menangani pencarian terbalik di file host, tetapi ping tidak?

Murali Suriar
sumber

Jawaban:

16

Umumnya file host akan digunakan untuk pencarian maju dan mundur. Preferensi pada sistem Unix ini akan tergantung pada urutan entri dalam file nsswitch.conf Anda.

misal baris di bawah ini akan membuat file hosts menimpa DNS. Membalik entri akan membuat DNS menimpa file host.

host: file dns

Saya tidak yakin apakah Anda dapat mengatur urutan preferensi pada sistem windows.

Saya telah melihat sumber untuk ping di inetutils-20071127 (versi yang diinstal pada kotak Ubuntu 9.04 saya) dan sumber tampaknya mengaktifkan mode numerik saja jika Anda melakukan ping alamat IP daripada nama host:

                if (inet_aton (target, & whereto.sin_addr) == 1) {
                        hostname = target;
                        if (argc == 1)
                                opsi | = F_NUMERIC;

Ini bisa menjelaskan mengapa Anda tidak mendapatkan pencarian terbalik ketika Anda melakukan ping host Anda dengan alamat IP.

Russell Heilling
sumber
Itu adalah pikiran saya, tetapi sepertinya tidak demikian. Lihat pertanyaan terbaru untuk detailnya.
Murali Suriar
Saya belum punya kesempatan untuk melihat sumbernya; Namun cepat melihat keluaran ldd menunjukkan bahwa pada ping sistem saya terhubung langsung ke resolver perpustakaan libresolv DNS, yang bisa menyiratkan bahwa itu melewati file nsswitch dan melakukan reverse lookup secara langsung ...
Russell Heilling
Saat menggunakan hostutilitas ISC , orang mungkin mendapatkan kesan bahwa mengedit / etc / hosts tidak berpengaruh. host 10.0.0.1akan melakukan permintaan DNS dan mengabaikan file host. Ini memungkinkan memeriksa perl -MSocket -le '$a=inet_aton(shift); $_=gethostbyaddr $a, AF_INET; print' 10.0.0.1
pemecah
8

Saya menemukan referensi untuk mengubah entri registri untuk mengubah urutan resolusi nama pada Windows:

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

Mengutip dari sana:

Secara default, Windows memeriksa penyedia resolusi nama dalam urutan berikut:

Lokal, (cache nama lokal NetBT), Host, DNS, NetBT (MENANG).

Anda ingin pesanan menjadi Host, DNS, Lokal, NetBT.

Berikut ini, angka yang lebih rendah adalah prioritas yang lebih tinggi.

Kunci registri berikut di

HKEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\ServicessTcpip\ServiceProvider

perlu dimodifikasi.

DnsPriority= 0x3e8 (Decimal: 1000)
HostsPriority= 0x1f4 (Decimal: 500)
LocalPriority= 0x5dc (Decimal: 1500)
NetbtPriority= 0x7d1 (Decimal: 2001)
James F
sumber
Bagaimana mereka mendapatkan informasi "pekerjaan dalam" seperti itu?
Pacerier
1

The /etc/host.confmenspesifikasikan berkas yang agar digunakan untuk menemukan alamat IP. Milik saya berisi yang berikut ini secara default:

#
# /etc/host.conf
#

order hosts,bind
multi on

Ini berarti bahwa file host selalu diperiksa terlebih dahulu dan kemudian DNS (bind).

Jika nistidak ditentukan di sini maka tidak akan pernah melihat /etc/nsswitch.conf.

Tautan dokumentasi: http://tldp.org/LDP/nag/node82.html

Sekenre
sumber
Metode /etc/host.conf sudah usang untuk beberapa sistem, hanya nsswitch.conf yang digunakan (seperti sistem berbasis glibc dan eglibc). Versi glibc ini akan mem-parsing '/etc/host.conf' tanpa peringatan dan membuang baris 'order'.