Как настроить локальный поиск DNS в Ubuntu 16.10?

9

Я недавно установил Ubuntu 16.10 и rsync сделал резервную копию моего предыдущего домашнего каталога с kubuntu 16.04 до моей новой установки. Все работает хорошо, но я не смог разрешить локальные адреса, несмотря на большое количество проб и ошибок.

Кажется, что все сети работают безупречно. Просмотр интернета, поиск DNS внешних адресов, ssh и т. Д. - это здорово. Локально, я могу получить доступ к машинам через ssh с их адресами, но не с их именами. В nautilus / samba все работает нормально, то есть работает WINS. Единственная проблема, по-видимому, заключается в локальной сети DNS. Я установил и запустил avahi-daemon, как и в Ubuntu.

Я включил некоторые способы устранения неполадок, используя << >> для сокращения избыточных или правильно работающих частей.

$ 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

Примечание: я потратил много времени на поиск «старых» решений до перехода Ubuntu на systemd.resolved в 16.10. Они не сработали для меня, и я не считаю, что это будет дубликат вопроса к аналогичным с предыдущими конфигурациями Ubuntu.

mightypile
источник
1
Это случается и на модернизированных системах ... Я думаю, что этот вопрос будет часто посещаться в эти дни :)
Michele d'Amico
Я НЕНАВИЖУ проблемы с сетью, они худшие. И этот сильно кусает меня, но немного по-другому. Ответ не исправил это для меня. Смотрите мой вопрос для моих деталей.
moodboom

Ответы:

18

Если я правильно понимаю ваш вопрос, вы не сможете разрешить свои локальные имена хостов.

При этом у меня была та же проблема со свежей установкой 16.10, и она оказалась известной проблемой ( https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624071 ), связанной с libnss. -решить в systemd.

Решение в моем случае состояло в том, чтобы просмотреть ваш файл /etc/nsswitch.conf и обратить особое внимание на то, как NSS разрешает ваши хосты:

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

Эта логика, по-видимому, не может разрешить имя хоста, даже не добравшись до mDNS.

Редактирование строки хостов до выпуска до 16.10 исправляет эту очевидную логическую ошибку:

hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname

Включенная ссылка на сообщение об ошибке предполагает, что будущий выпуск пакета systemd может в конечном итоге решить эту проблему.

Богатые

richbl
источник
1
Фантастический ответ с ссылкой и примерами! Я поэкспериментировал с вашим предложением и обнаружил, что пока я перемещал «mdns4_minimal» до «[NOTFOUND = return]» и «[! UNAVAIL = return]», это работало. Мне все еще нужен суффикс .local для локальных адресов.
могучий
1
Существует более конкретная ошибка для libnss-resolv и mdns на bugs.launchpad.net/ubuntu/+source/systemd/+bug/1641328
азот
7

Альтернативное решение, которое автоматически редактирует /etc/nsswitch.conf, удаляет [ edit: и переустанавливает] libnss-resolve :

sudo apt purge libnss-resolve
sudo apt install libnss-resolve
азот
источник
+1. Это превосходное решение для тех из нас, кому нравится сохранять нетронутыми настройки системы для тех пакетов, с которыми мы не работали. Это должно быть сделано с помощью инструмента обновления / установки, хотя ... 16.10 уже давно.
eskhool