我的笔记本电脑运行的是 bionic,之前运行的是 artful,几周前我通过 apt 完成了全面升级,一切都按预期工作,但是当我尝试连接到我的 nas 时,FQDN 无法解析,我可以通过 IP 等进行连接。我读了大量的资料,不得不了解自 2003 年我上次使用 redhat linux 以来 Linux 发生的巨大变化。
所以我们现在有了网络管理器和 systemd,这些与旧的 unix 做事方式相比有很大的变化,我可以看到发生这种演变的原因,只是如果你是一个老的 Unix 用户,那么排除故障会很棘手 ;-) systemd 解析器可以替换为 dnsmasq,网络管理器有一个与 dnsmasq 一起使用的插件,好的,获得所有这些没有问题。我无法理解的是,为什么开箱即用的 Ubuntu 没有正确地将 dns 查找转发到我的路由器,它能够为我网络上的某些服务提供静态 dns 条目。这在 windows 和 macos 上完美运行。
为了解决这个问题,它无法与 systemd 解析器正常工作,我已将其换成 dnsmasq,但仍然没有效果 :-/
笔记本电脑通过 dhcp 正确地获取 IP,并且网络管理器使用路由器的 dns IP 正确地填充 /etc/resolv.conf。
正常的互联网 DNS 解析工作正常,如果我关闭网络管理器提供的自动 DNS 解析器条目,/etc/resolv.conf 将没有条目,互联网 DNS 会按预期中断。这也证明我的笔记本电脑也在转发它无法在本地解析的 DNS 查询。
我完全不知道哪里出了问题,如果能提供任何有关网络管理器和/或 dnsmasq 可能出现的 qwerk 的指导,我将不胜感激。此外,如果有人能提供关于 linux DNS 2016/17 的真正技术深度探究的链接,那将非常有帮助。
答案1
我解决了自己的问题,因此我提供我的解决方案以便其他人可能会觉得有用。
刚刚读了一篇关于解决 Linux DNS 客户端问题的博客问题并发现 /etc/nsswitch.conf 没有与我的相同的条目。
我的样子是:
主机:文件 mdns4_minimal [NOTFOUND=return] dns myhostname
博客内容如下:
主机:文件 dns myhostname
通过删除mdns4_minimal 和 [NOTFOUND=return]当我重新启动 dns/network 服务时,FQDN 解析开始工作。所以我决定调查一下mdns4_minimal和[未找到=返回]确实如此。然后我在 askubuntu.com 上看到了另一个问题,它解释了我问题。
事实证明,如果您像我一样使用 .local 域作为内部网络 DNS,则此 tld 也用于 mDNS 多播 DNS,用于 Bonjour 等服务。要使 DNS 正常工作,您需要优先考虑 dns 而不是 mdns 才能使其正常工作。
我现在已将 /etc/nsswitch.conf 文件恢复到其原始状态,并进行了以下更改:
主机:文件 dns [NOTFOUND=return] mdns4_minimal mdns4
如您所见,dns 现在优先于 mdns4,并且我的本地解析器查询我的网络 dns,它返回预期的结果:
~$ ping nas01.home.local
PING nas01.home.local (192.168.1.101) 56(84)字节数据。
来自 nas01.home.local (192.168.1.101) 的 64 字节:icmp_seq=1 ttl=64 时间=0.196 毫秒
来自 nas01.home.local (192.168.1.101) 的 64 字节:icmp_seq=2 ttl=64 时间=0.279 毫秒
来自 nas01.home.local (192.168.1.101) 的 64 字节:icmp_seq=3 ttl=64 时间=0.243 毫秒
大多数人可能不太可能在家里或实验室中使用 .local,但我一直更喜欢使用它,即使在企业环境中,因为它不是互联网顶级域名。