server ubuntu tidak menyelesaikan nama host LAN

14

Agak macet di sini.

Saya memiliki 2 mesin yang tidak dapat menyelesaikan nama host LAN, kecuali ada entri khusus di / etc / hosts

Tetapi mesin lain di LAN dapat mengatasi nama host.

LAN saya:

  • 1 x Router Cisco runnning DD-WRT v24-sp2 dengan DNSMasq diaktifkan. Saya sudah mengkonfigurasi ini dengan nama host dan IP di LAN saya.
  • 1 x Kubuntu 12.10 (menyelesaikan semua nama host dengan benar selama dimasukkan ke DNSMasq pada router)
  • 2 x NAS (juga selesaikan semua nama dengan benar)

  • 1 x Ubuntu Server 12.04 (ini TIDAK menyelesaikan nama host lokal kecuali jika dimasukkan ke / etc / hosts)

  • 1 x XBMCLive (Dharma) (sama - tidak menyelesaikan kecuali entri ada di / etc / hosts)

Bagaimana cara mendapatkan 2 terakhir untuk menggunakan entri DNSMasq pada router? Setiap mesin diatur untuk menggunakan router sebagai server nama, dan semua unit menyelesaikan alamat eksternal dengan benar.

Terima kasih.

beberapa info lebih lanjut:

sementara di server, jika saya melakukan ping ke PC lain (wstation)

$ ping wstation
PING wstation.local.domain (x.x.x.x) 

Jika saya menambahkan .local

$ ping wstation.local
PING wstation.local.local.domain (x.x.x.x)

dan secara langsung

$ ping 10.0.0.4
PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data.
64 bytes from 10.0.0.4: icmp_req=1 ttl=64 time=0.387 ms
64 bytes from 10.0.0.4: icmp_req=2 ttl=64 time=0.316 ms
64 bytes from 10.0.0.4: icmp_req=3 ttl=64 time=0.312 ms
64 bytes from 10.0.0.4: icmp_req=4 ttl=64 time=0.280 ms
64 bytes from 10.0.0.4: icmp_req=5 ttl=64 time=0.322 ms
^C
--- 10.0.0.4 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.280/0.323/0.387/0.038 ms                                                                       
teracow
sumber
Saya tidak tahu jawabannya, dan saya tidak tahu apakah ini akan membantu, tetapi jika Anda tidak tahu ... Saya menemukan bahwa jika saya menambahkan ".local" setelah nama mesin, entah bagaimana itu akan ditemukan tanpa konfigurasi yang dibutuhkan. Ini benar-benar membantu saya karena saya menentukan alamat, tetapi perlu untuk terus mengubah entri ketika saya akan menambah atau menghapus OS yang saya gunakan untuk pengujian, dll. Tetapi, dengan menentukan machinename.local, saya tidak lagi perlu khawatir. Jika Anda tahu dari mana ini berasal, jangan ragu untuk memberi tahu saya. :)
Marty Fried
1
Hai Marty, terima kasih atas jawaban Anda. Saya telah menambahkan beberapa info lagi ke masalah ini untuk menunjukkan apa yang terjadi dengan
.local

Jawaban:

15

Tentang output Anda saat ini

ping wstation
PING wstation.local.domain

Jelas menunjukkan bahwa komputer Anda menambahkan .local.domainpermintaan non-FQDN. Ini adalah sesuatu yang dikonfigurasi dengan tidak benar atau setidaknya salah dalam pengaturan Anda. (kecuali jika Anda benar-benar menggunakan .local.domainsufiks dengan sengaja)

Penyelesaian nama dan titik

Satu hal penting yang tidak diketahui banyak orang adalah bahwa nama lengkap harus selalu diakhiri dengan titik ( .). Jika Anda menghilangkannya, maka mesin akan mencoba menyelesaikannya dalam domain pencarian lokal (mis. Mydomain.tld). Jadi dalam hal itu, permintaan untuk mypc.localakan menjadi mypc.local.mydomain.tld. Untuk mencegahnya, kueri dengan tanda titik.

Konfigurasi penyelesai

Konfigurasi resolver sangat penting di sini. Di Ubuntu (dan Debian) ini dikonfigurasi dalam file /etc/network/interfaces(dengan asumsi Anda tidak menjalankan NetworkManager):

iface eth0 inet static
   address 192.168.3.3
   netmask 255.255.255.0
   gateway 192.168.3.1
   dns-nameservers 192.168.3.45 192.168.8.10
   dns-search foo.org bar.com                      # <-- these are the search domains

Penyelesaian nama di Linux juga dapat dilakukan dengan cara lain. Bukan hanya server DNS lokal sedang ditanyai untuk semua ini. Lihatlah /etc/nsswitch.conffile Anda untuk hostskonfigurasi penyelesaian:

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

Ini berarti bahwa file dicoba terlebih dahulu (ini adalah /etc/hostsfile), kemudian mDNS dan hanya kemudian server DNS yang sebenarnya ditanyai. mDNS diimplementasikan menggunakan Avahi di Linux dan disebut Bonjour di perangkat Apple. Itu menggunakan .localsuffix secara default dan berfungsi melalui pesan broadcast. Mirip seperti ARP bekerja, tetapi kemudian untuk DNS.

Semua sistem ini bisa sangat membingungkan dan bahkan lebih ketika menggunakan .localpengaturan DNS biasa yang dicampur dengan perangkat mDNS. Saya kira inilah sebabnya Anda bingung sekarang mengapa satu perangkat bekerja dan yang lainnya tidak: mereka tidak semua menggunakan metode penyelesaian yang sama.

Untuk menyelesaikan masalah

  • Hindari penggunaan jika .localkecuali jika Anda ingin bergantung sepenuhnya pada mDNS. Dari pertanyaan Anda, saya mengerti Anda ingin menjaga hal-hal yang dikonfigurasi sendiri di tempat sentral, jadi pendekatan saya di sini adalah untuk menghindarinya.
  • Konfigurasikan server DNS lokal Anda (perangkat DD-WRT dalam kasus Anda) untuk menggunakan nama domain khusus, misalnya my.home. Untuk dnsmasq ini adalah pengaturan tunggal, tetapi dalam pengaturan reguler ini harus dikonfigurasi pada server DNS maupun server DHCP (seperti yang diumumkan melalui DHCP).
  • Konfigurasikan semua PC untuk memiliki nama host yang sederhana dan unik. Mereka menggunakan ini dalam permintaan mereka untuk DHCP dan ini digunakan dalam dnsmasq yang berjalan pada router Anda untuk menyelesaikannya. Atau, konfigurasikan secara manual untuk tidak harus bergantung pada DHCP.
  • Hapus konfigurasi yang tersisa /etc/resolv.confjika Anda memain-mainkannya di masa lalu.
  • Konfigurasikan PC di jaringan Anda untuk digunakan my.homesebagai domain pencarian lokal. Ini dapat dilakukan melalui DHCP secara otomatis, atau jika menggunakan alamat statis melalui /etc/network/interfacesfile atau di Network Manager:

    masukkan deskripsi gambar di sini

  • Sekarang nama resolving ( ping hostname) dan nama lengkap ( ping hostname.my.home) harus berfungsi.
gertvdijk
sumber
5
Wow! Jawaban yang luar biasa gertvdijk! Sangat komprehensif. Sedemikian rupa sehingga saya perlu waktu untuk memahami apa yang Anda katakan. Saya dapat mengatakan bahwa saya menguji ping dengan titik setelah nama host dan itu berfungsi dengan benar. Saya tidak menggunakan DHCP pada LAN ini untuk mesin permanen. Saya tidak pernah mengonfigurasi pengaturan lokal di mesin apa pun karena saya tidak mengerti apa itu semua. Saya akan menyelidiki ini lebih lanjut sesuai instruksi Anda dan kembali kepada Anda.
teracow
Terima kasih atas jawaban komprehensif ini. Saya mengubah /etc/nsswitch.conf saya sehingga DNS dicoba sebelum mDNS files mdns4_minimal [NOTFOUND=return] dns mdns4. Sekarang semuanya berperilaku lebih seperti yang saya harapkan dengan mesin host.foo.local saya (nama buruk). Sebelum perubahan ini ping hostnameakan berhasil tetapi ping hostname.foo.localgagal. Saya menjadi sangat bingung ketika dig hostnamegagal & dig hostname.foo.localsedang mengembalikan hasil, kebalikan dari apa yang saya harapkan. Sekarang saya bisa melakukan ping FQDN seperti yang saya harapkan. Apakah ada kerugian memiliki pesanan diatur seperti ini?
TafT
1

Berdasarkan jawaban oleh gertvdijk saya baru saja berkomentar di nsswitch.conf

sudo vim /etc/nsswitch.conf

.
.
.
hosts:          files dns # mdns4_minimal [NOTFOUND=return] dns
Jan Alfred Richter
sumber
0

Saya mendapat masalah serupa dengan / etc / hosts yang mengandung banyak spasi antara IP dan hostname, alih-alih menggunakan TAB. Setelah mengubah ke TAB, nama host dapat diatasi dengan ping.

127.0.0.1        test.local
         ^^^^^^^^ → Should be a TAB not multiple spaces.

lihat juga di /superuser//a/938366/467479

Thomas Lauria
sumber
3
Maaf, itu BUKAN benar. File host akan bekerja dengan spasi atau tab. Juga, 127.0.0.1 harus memiliki localhost terlebih dahulu, diikuti oleh localhost.localdomain - dan tergantung pada pengaturan Anda, nama host mesin Anda. (Beberapa setup, Ubuntu / Debian telah Anda letakkan nama host Anda di baris 127.0.1.1) Saya tidak akan merekomendasikan menginstal alamat lokal. Dalam file host, meskipun, karena mereka bertentangan dengan mDNS / Avahi
The Dude
1
Jika Anda memiliki mesin Windows di domain Anda, tampaknya ia menggunakan DNS unicast, yang tidak kompatibel dengan implementasi mDNS Avahi atau Zeroconf. Juga, periksa /etc/nsswitch.conf Anda untuk melihat apakah bailing setelah mdns4_minimal [NOTFOUND = kembali] atau melakukan pencarian mdns4 penuh (pindahkan kembali). Juga, jangan konfigurasikan server DNS apa pun untuk menggunakan domain lokal., Karena resolver mDNS / sd-DNS akan menutupi pencarian ke domain itu. Untuk DNS TLD internal Anda, gunakan .lan, .work, .home, dll (tapi BUKAN salah satu TLD baru, seperti .biz, .xyz, .web, dll ...). Selamat mencoba, dan selamat datang di dunia menyenangkan dari resolusi DNS.
Bung