Bagaimana cara mengkonfigurasi pencarian DNS lokal di Ubuntu 16.10?

9

Saya baru saja menginstal Ubuntu 16.10 dan rsync membuat cadangan dari direktori home saya sebelumnya dari kubuntu 16.04 ke instal baru saya. Hal-hal bekerja dengan baik, tetapi saya belum dapat menyelesaikan alamat lokal meskipun banyak trial and error.

Semua jaringan tampaknya bekerja dengan sempurna. Menjelajah internet, pencarian DNS dari alamat luar, ssh, dll. Sangat bagus. Secara lokal, saya dapat mengakses mesin melalui ssh dengan alamat mereka, tetapi tidak dengan nama mereka. Semuanya berfungsi dengan baik di nautilus / samba, yang berarti MENANG berfungsi. Masalah tunggal, tampaknya, adalah DNS jaringan lokal. Saya telah menginstal dan menjalankan avahi-daemon, seperti yang ada pada Ubuntu.

Saya telah memasukkan beberapa pemecahan masalah, menggunakan << >> untuk mempersingkat bagian yang redundan atau berfungsi dengan benar.

$ nmcli g
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN    
connected  full          enabled  enabled  enabled  enabled 

$ ping tendril8 << or tendril8.local >>
ping: tendril8: Name or service not known

$ ping gateway
PING gateway (192.168.1.1) 56(84) bytes of data.
64 bytes from gateway (192.168.1.1): icmp_seq=1 ttl=64 time=4.16 ms

$ ping askubuntu.com
PING askubuntu.com (151.101.129.69) 56(84) bytes of data.
64 bytes from 151.101.129.69 (151.101.129.69): icmp_seq=1 ttl=49 time=43.0 ms

$ nslookup askubuntu.com
Server:     127.0.1.1
Address:    127.0.0.1#53
<< followed by several IP addresses >>

$ nslookup tendril8 << or tendril8.local >>
Server:     127.0.1.1
Address:    127.0.0.1#53
** server can't find tendril8: NXDOMAIN

$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1

$ ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 29 Oct 15 19:30 /etc/resolv.conf -> ../run/resolvconf/resolv.conf

$ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat
gshadow:        files

hosts:          files resolve [!UNAVAIL=return] mdns4_minimal dns [NOTFOUND=return]
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Catatan: Saya telah menghabiskan banyak waktu mencari solusi "lama", sebelum Ubuntu beralih ke systemd.resolved di 16.10. Mereka tidak bekerja untuk saya dan saya tidak percaya ini menjadi pertanyaan rangkap untuk pertanyaan serupa dengan konfigurasi Ubuntu sebelumnya.

mungkin
sumber
1
Ini terjadi juga pada sistem yang ditingkatkan ... Saya kira pertanyaan itu akan menerima banyak kunjungan di hari-hari :)
Michele d'Amico
Saya BENCI masalah jaringan mereka adalah yang terburuk. Dan yang ini menggigit saya dengan keras, tetapi dengan cara yang sedikit berbeda. Jawabannya belum diperbaiki untuk saya. Lihat pertanyaan saya untuk detail saya.
moodboom

Jawaban:

18

Jika saya memahami pertanyaan Anda dengan benar, Anda tidak dapat menyelesaikan nama host lokal Anda.

Mengenai hal itu, saya memiliki masalah yang sama dengan instalasi baru 16.10, dan ternyata menjadi masalah yang diketahui ( https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624071 ) terkait dengan libnss -Resolve dalam systemd.

Solusi dalam kasus saya adalah meninjau file /etc/nsswitch.conf Anda dan perhatikan secara khusus bagaimana NSS menyelesaikan host Anda:

hosts: files resolve [!UNAVAIL=return] mdns4_minimal [NOTFOUND=return] dns myhostname

Logika ini tampaknya gagal resolusi hostname sebelum bahkan sampai ke mDNS.

Mengedit baris host kembali ke rilis pra-16.10 memperbaiki kesalahan logika ini:

hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname

Tautan laporan bug yang disertakan menunjukkan rilis paket systemd di masa depan yang pada akhirnya dapat memperbaiki masalah ini.

Kaya

richbl
sumber
1
Jawaban yang fantastis dengan tautan dan contoh! Saya bermain-main dengan saran Anda dan menemukan bahwa selama saya memindahkan "mdns4_minimal" sebelum "[NOTFOUND = return]" dan "[! UNAVAIL = return]" itu berhasil. Saya masih membutuhkan akhiran .local untuk alamat lokal.
mayypile
1
Ada bug yang lebih spesifik untuk libnss-resolve dan mdns di bugs.launchpad.net/ubuntu/+source/systemd/+bug/1641328
nitrogen
7

Solusi alternatif yang secara otomatis diedit /etc/nsswitch.confadalah menghapus [ edit: dan instal ulang] libnss-resolve :

sudo apt purge libnss-resolve
sudo apt install libnss-resolve
nitrogen
sumber
+1. Ini adalah solusi yang unggul bagi kita yang suka menjaga konfigurasi sistem tetap utuh untuk paket-paket yang belum kita mainkan. Seharusnya dilakukan oleh alat pemutakhiran / penginstal sekarang ... 16.10 sudah ada untuk sementara waktu.
eskhool