Как настроить локальный поиск DNS в Ubuntu 16.10?
Я недавно установил 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 Ask-ubuntu.ru
PING Ask-ubuntu.ru (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 Ask-ubuntu.ru
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.
3 ответа
Если я правильно понимаю ваш вопрос, вы не сможете разрешить свои локальные имена хостов.
При этом у меня была та же проблема со свежей установкой 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 может в конечном итоге решить эту проблему.
Богатые
Альтернативное решение, которое автоматически редактирует /etc/nsswitch.conf
удаляет [править и переустанавливать] libnss-resolve
:
sudo apt purge libnss-resolve
sudo apt install libnss-resolve
У меня была эта проблема со свежей установкой Ubuntu 17.04. Я решил переключиться с использования systemd-resolved на dnsmasq на своем ноутбуке (сервер имен также использует dnsmasq). Я следовал инструкциям в разделе Как отключить systemd-resolved и разрешить DNS с помощью dnsmasq?