Tempat kerja saya memiliki intranet dengan nama domain seperti server01.foo.local
,, server02.foo.local
dll. Baru-baru ini saya mem-boot lingkungan Fedora 16 untuk mengujinya dan menemukan bahwa nama-nama domain ini tidak menyelesaikan.
Sebagai contoh:
$ ping server01.foo.local
ping: host tidak dikenal server01.foo.local
$ ping server01
PING server01.foo.local (XXXX) ...
Mengapa akan server01
menyelesaikan (dan mencetak nama sebagai server01.foo.local
), tetapi server01.foo.local
tidak?
linux
networking
dhcp
rhollencamp
sumber
sumber
Jawaban:
Sementara saya tidak 100% pada alasan di balik mengapa itu tidak berfungsi seperti yang diharapkan, tampaknya ada konflik yang sangat besar dengan layanan mDNS (Avahi di Linux, Bonjour / Zeroconf di Mac / Windows) dan jaringan Windows yang gunakan .local sebagai nama perutean internal untuk domain. Apa yang tampaknya terjadi adalah ketika melakukan ping server01, ia melompati menggunakan mDNS untuk resolusi dan kemudian menambahkan domain pencarian (foo.local) ke permintaan, berhasil meminta server DNS untuk server01.foo.local. Namun, ketika menggunakan mDNS (yang menggunakan .local sebagai ekstensi nama mesin default), ketika Anda mencoba melakukan ping ke server01.foo.local, itu sebenarnya disiarkan melalui mDNS mencari mesin dengan nama "server01.foo"; ketika gagal, itu tidak beralih ke DNS langsung untuk alasan apa pun. Solusi besar untuk ini adalah tidak menamai domain Anda. Lokal, yang mungkin bertentangan dengan sebagian besar pelatihan admin Windows untuk penataan domain. Yang telah dibilang:
Jika mDNS tidak ada konsekuensinya di jaringan Anda (seperti yang umum di perusahaan, yang cenderung menjalankan server DNS khusus dibandingkan jaringan rumah, di mana mDNS kadang-kadang digunakan), maka mengubah urutan pencarian adalah solusi termudah.
Ini dapat ditemukan di /etc/nsswitch.conf. Bagian untuk host akan mencantumkan urutan, yang untuk Fedora 16 default adalah:
Jika Anda mengubahnya ke:
di mana Anda bergerak dns maju dalam urutan pencarian, yang seharusnya memperbaiki hal-hal untuk saat ini. Atau, jika Anda tahu Anda tidak akan membutuhkan mDNS sama sekali, cukup hapus bagian "mdns4_minimal [NOTFOUND = return]".
Melihat bug ini di pelacak Red Hat , tampaknya ini adalah masalah lama tanpa perbaikan yang jelas saat ini. Padahal, jika seseorang dapat memberikan lebih banyak wawasan tentang mengapa ini terjadi seperti ini, itu akan dihargai.
sumber
vpnc
tidak dapat terhubung setelah menghapus entri-entri tersebut dihosts: .*
telepon/etc/nsswitch.conf
. Mengganti pengaturan ini memperbaiki masalah.[NOTFOUND=return]
berarti "jika mDNS memberi tahu Anda. nama lokal tidak ditemukan, maka itu otoritatif, dan tidak ada gunanya bertanya lebih lanjut". Memindahkan DNS sebelum mDNS adalah solusi, tetapi hanya membuat kegagalan mDNS non-otoritatif sudah cukup.Saya akan menyarankan solusi lain jika Anda menggunakan
.local
domain. Pertama itu bukan ide yang baik karena tampaknya standar / konvensi yang digunakan.local
untuk beberapa penemuan dinamis multicast.Tetapi jika Anda bersikeras, itu juga lebih mudah untuk hanya menghapus
nss-mdns
paket ataulibnss-mdns
paket tergantung pada distro Anda dan Anda akan menyelesaikan masalah. Jika Anda tidak membutuhkan fungsi itu, lalu mengapa tetap ada di sana?Inilah
yum info nss-mdns
:sumber
Beberapa hal yang dapat Anda periksa:
apakah ada pesanan di /etc/host.conf, yang menentukan untuk memeriksa / etc / hosts sebelum menanyakan DNS?
Apakah server01 ada di / etc / hosts?
apakah ada
search foo.local
di / etc / resolv, conf? Itu akan menambahkan foo.local ke nama host apa pun yang Anda cariSaya ingin tahu apakah server nama Anda sudah diatur dengan benar. Jika Anda masih memiliki nslookup, untuk apa ia kembali
server01
,server01.foo.local
dan ip-address (reverse lookup)?sumber