Mac OS X 中的 Localhost 别名神秘地停止工作

Mac OS X 中的 Localhost 别名神秘地停止工作

无论出于什么原因,我的 Mac OS X 的别名localhost似乎突然停止工作了。可能是某些更新导致了这种情况,但我不确定是什么。

这是我的主机文件:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0 localhost


127.0.0.1 ian.dev
127.0.0.1 d8.dev

尽管 ian.dev 位于 127.0.0.1,但当我使用进行调试时,dscacheutil -q host -a name ian.dev我得到:

name: ian.dev
ip_address: 127.0.53.53

localhost 本身正在运行,我也可以访问 localhost 内的子文件夹,但任何新的别名似乎总是指向该 IP 而不是 127.0.0.1。

答案1

最终找到了解决办法Stack Overflow 上的这个答案

似乎我的 hosts 文件不知怎么损坏了。清理文件的一系列命令最终修复了它:

tr '\015' '\012' < /etc/hosts > /tmp/hosts.$$
mv /etc/hosts /etc/hosts.bad
mv /tmp/hosts.$$ /etc/hosts
# fix up permissions while we are at it
chown root:wheel /etc/hosts
chmod 644 /etc/hosts

答案2

127.0.53.53当存在潜在名称冲突问题时,IP 地址返回如 ICANN 官方文档中所述

127.0.53.53 是一个特殊的 IPv4 地址,它将出现在系统日志中,提醒系统管理员存在潜在的名称冲突问题,以便快速诊断和补救。“53”用作助记符,表示由于使用网络端口 53 进行 DNS 服务而导致的 DNS 相关问题。

知道了这一点,我相信问题出在您拥有两个与之.dev关联的条目;ian.devd8.dev。我的想法是,系统上的 DNS 解析器看到.dev试图添加.dev.local区域(即传统的localhost“TLD”)。它只是因为某种原因而阻塞。或者也许它试图.dev在现实世界中进行解析,并将您的本地设置视为与现实世界顶级域.dev冲突?.dev

我假设您这样做是为了在您的机器上进行某种基于 Apache 名称的虚拟主机开发。如果是这样,看看如果您更改这些别名以删除点 ( .),它们会变成这样:ian_devd8_dev。或者将它们更改为ian.local和 d8.local`。

调整你的开发环境将会很耗时,但我相信它应该会起作用。

除此之外,你可以在系统层面上做一些更具侵入性的事情,这可能会奏效。这个想法来自Server Fault 上的这个答案resolv.conf。只需像这样打开 DNS 文件:

sudo nano /etc/resolv.conf

options并在文件底部添加以下行:

options ndots:2

这可能也有效。更多详情来自这个网站。此外,只要您有resolv.conf,您可能想检查一下那里是否有其他设置会搞砸工作。例如,以下是我的 的内容resolv.conf

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#
nameserver 208.67.220.222
nameserver 208.67.220.220

我那里只有两个条目用于 OpenDNS namservers。没有其他的。如果您有超过 2 个nameserver条目(或者可能没有那么多;您的配置可能是空的),那么我建议注释掉这些条目,看看会发生什么。

相关内容