如何在Ubuntu 16.10中配置本地DNS查找?


9

我刚安装了Ubuntu 16.10,然后将我先前的主目录的备份从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切换到16.10中已解决的Ubuntu之前,我花了大量时间研究“较旧的”解决方案。他们没有为我工作,我不认为这是与先前使用Ubuntu配置的类似问题重复的问题。


1
在升级的系统上也会发生这种情况...我想这个问题将在几天内得到很多访问:)
Michele d'Amico

我讨厌网络问题,它们是最糟糕的。而这个让我很难受,但以一种略有不同的方式。答案尚未解决。有关详细信息,请参见我的问题
moodboom

Answers:


18

如果我正确理解您的问题,则无法解析本地主机名。

关于这一点,我在全新安装16.10时遇到了同样的问题,这是一个与libnss相关的已知问题(https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624071) -在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软件包的发行版可能最终解决此问题。

丰富


1
链接和示例都很棒的答案!我听从了您的建议,发现只要将“ mdns4_minimal”移到“ [[NOTFOUND = return]”和“ [!UNAVAIL = return]”之前,它就可以工作。我仍然需要本地地址的.local后缀。
强大的功能,2016年

1
有对中的libnss-决心和MDNS在一个更具体的错误bugs.launchpad.net/ubuntu/+source/systemd/+bug/1641328

7

自动编辑的替代解决方案/etc/nsswitch.conf是删除[ 编辑:并重新安装] libnss-resolve

sudo apt purge libnss-resolve
sudo apt install libnss-resolve

+1。对于那些希望保持系统配置完好无损的软件包来说,这是一个绝佳的解决方案。尽管... 16.10已经存在了一段时间,但应该现在就应该通过升级/安装程序工具来完成。
eskhool

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.