我的 Ubuntu 机器出现了一个奇怪的问题。主机名git
解析为正确的 IP 地址(根据 ping ,它解析为git.example.local
)。如果我尝试git.example.local
自行解析,则无法正常工作。该ping
实用程序用于确定是否可以解析主机。
当我输入 时nslookup git.example.local
,它会解析为正确的 IP 地址。所有外部主机名(即 askubuntu.com)都已正确解析。我的 /etc/resolv.conf 如下所示:
nameserver 127.0.1.1
search example.local
如果我修改example.local
为其他内容,则git
不再解决。有人能告诉我哪里出了问题吗?
答案1
Microsoft 将其用作.local
内部域的推荐根,并通过单播 DNS 为其提供服务。Linux 将其用作.local
多播 DNS 的根。如果您被困在像这样的损坏的 MS 网络上,请重新配置您的 Linux 多播 DNS 以使用不同的域,例如.alocal
。
为此,domain-name=.alocal
在[server]
部分添加一行/etc/avahi/avahi-daemon.conf
,然后重新启动 avahi-daemon:sudo service avahi-daemon restart
。
[server]
domain-name=.alocal
您可能需要清除 DNS、mDNS 和解析器缓存,以及重新启动 Web 浏览器以清除其内部缓存。
感谢博客条目其中还包含一些背景信息。我已将解决方案包含在内以供快速参考。
答案2
不,.local 没有冲突,DNS 是 DNS,问题是“未找到”设置在nsswitch.conf在“dns”之前
错误的!
/etc/nsswitch.conf: 主机:文件 mdns4_minimal [NOTFOUND=return] dns
[NOTFOUND...] 是使用 localdomain.local 或任何其他 FQDN 时发生的情况。
只需将“dns”解析类型移动到文件之后,与 ubuntu 服务器 LTS 相同。
如果不使用其他类型的解析,我甚至不知道为什么需要 [NOTFOUND..],我不能肯定地说 NOTFOUND 指令不在其他一些 Linix 发行版中,但我可以说“dns”永远不会像这里一样在它之后,我认为这是一个错误。
这解决了该问题并且不需要重新启动任何东西。
正确或比以前更正确
/etc/nsswitch.conf:主机:文件 dns mdns4_minimal [NOTFOUND=return]
这是全新安装的 Ubuntu 服务器的样子,最新的 LTS 版本。
/etc/nsswitch.conf:主机:文件 dns
有些人认为 nsswitch.conf 是一个过去的文件,它通常只需要进行修改,但它仍然像以往一样重要。
仅供参考,我不知道您怎么想,但在我的安装中我没有选择或选择任何非标准或额外的分辨率或身份验证类型,例如 Kerberos、AD、NIS、LDAP 等,实际上它只是 Ubuntu Desktop LTS 的默认安装。