Tidak dapat menyelesaikan nama domain .foo.local

15

Tempat kerja saya memiliki intranet dengan nama domain seperti server01.foo.local,, server02.foo.localdll. 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 server01menyelesaikan (dan mencetak nama sebagai server01.foo.local), tetapi server01.foo.localtidak?

rhollencamp
sumber
Punya masalah yang sama persis dengan Ubuntu yang berjalan di VMBox. Solusi @ adam820 bekerja untuk saya juga.
jimbo

Jawaban:

22

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:

hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname

Jika Anda mengubahnya ke:

hosts:      files dns mdns4_minimal [NOTFOUND=return] myhostname

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.

adam820
sumber
menghapus bagian mdns menyelesaikan masalah
rhollencamp
Terima kasih banyak untuk menambahkan ini. Punya masalah yang sama persis dan memindahkan entri dns pertama menyelesaikannya. Dalam kasus saya, saya menggunakan Ubuntu terbaru, bukan Fedora, tetapi solusinya persis sama.
jimbo
tidak ada artinya, saya baru saja mencoba ini dan menemukan bahwa penggunaan cisco VPN vpnctidak dapat terhubung setelah menghapus entri-entri tersebut di hosts: .*telepon /etc/nsswitch.conf. Mengganti pengaturan ini memperbaiki masalah.
dobbs
"Ketika gagal, itu tidak beralih ke DNS langsung untuk alasan apa pun." . Alasannya cukup jelas. [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.
MSalters
Ya, itu adalah komentar yang valid; ini 7 tahun yang lalu dan saya tidak tahu itu saat itu. Tapi ya, menghapusnya, menghapus paket seperti yang tercantum di bawah ini, atau mengubah urutan semuanya merupakan solusi / solusi yang valid.
adam820
2

Saya akan menyarankan solusi lain jika Anda menggunakan .localdomain. Pertama itu bukan ide yang baik karena tampaknya standar / konvensi yang digunakan .localuntuk beberapa penemuan dinamis multicast.

Tetapi jika Anda bersikeras, itu juga lebih mudah untuk hanya menghapus nss-mdnspaket atau libnss-mdnspaket 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:

Summary     : glibc plugin for .local name resolution
URL         : http://0pointer.de/lennart/projects/nss-mdns/
License     : LGPLv2+
Description : nss-mdns is a plugin for the GNU Name Service Switch (NSS)
            : functionality of the GNU C Library (glibc) providing host name
            : resolution via Multicast DNS (aka Zeroconf, aka Apple Rendezvous,
            : aka Apple Bonjour), effectively allowing name resolution by common
            : Unix/Linux programs in the ad-hoc mDNS domain .local.
            : 
            : nss-mdns provides client functionality only, which means that you
            : have to run a mDNS responder daemon separately from nss-mdns if
            : you want to register the local host name via mDNS (e.g. Avahi).
akostadinov
sumber
1

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.localdi / etc / resolv, conf? Itu akan menambahkan foo.local ke nama host apa pun yang Anda cari

Saya ingin tahu apakah server nama Anda sudah diatur dengan benar. Jika Anda masih memiliki nslookup, untuk apa ia kembali server01, server01.foo.localdan ip-address (reverse lookup)?

ott--
sumber
* host.conf tidak tahu apa-apa tentang pesanan * server01 tidak ada di / etc / hosts * search foo.local ada di /etc/resolv.conf (NetworkManager meletakkannya di sana), tetapi menghapusnya tidak membantu. Saya mencoba menulis /etc/resolv.conf setelah mengeditnya sehingga NM tidak bisa menimpa dan me-reboot; no dadu
rhollencamp
@ rhollencamp: apakah Anda memiliki nslookup di sistem Anda?
ott--