不久前,我将主机中的 reddit.com 设置为 127.0.0.1,因为这太耗时了。我不记得具体是怎么设置的了——我只记得我遇到了一些麻烦,在找到“正确”的方法之前尝试了几种不同的方法,所以我可能做了一些奇怪的事情。
现在,无论我做什么,我都无法取消设置它或将其设置为其他值 - 它以某种方式“卡”在 127.0.0.1 上。
$ sudo nano /etc/hosts
Password:
我添加了以下两行:
208.96.53.70 reddit.com
208.96.53.70 reddit2.com
保存,退出,然后:
$ dscacheutil -flushcache
$ ping reddit.com
PING reddit.com (127.0.0.1): 56 data bytes
$ ping reddit2.com
PING reddit2.com (208.96.53.70): 56 data bytes
如果我根本没有指定 reddit.com,也会发生同样的情况。
我遗漏了什么??我的 hosts 文件中没有 reddit.com 的其他条目。这不是路由器或 ISP 的问题 - 同一路由器上的其他计算机都很好。它还能在哪里定义?
为了完整起见,我清理了主机中的所有内容,其中仅包含以下内容:
##
# 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
答案1
听起来你可能在 DSLocal 中创建了主机条目,而不是 /etc/hosts。要找出原因,请运行:
dscl /Search -read /Hosts/reddit.com
它应该返回如下内容:
AppleMetaNodeLocation: /Local/Default
IPAddress: 127.0.0.1
RecordName: reddit.com
RecordType: dsRecTypeStandard:Hosts
看到 AppleMetaNodeLocation 了吗?它告诉你它从哪里获取信息。如果它显示/BSD/local
,它位于 /etc/hosts 中;如果它显示/Local/Default
(我怀疑它会显示),那就是默认的本地目录节点,又名 DSLocal。如果它显示<dscl_cmd> DS Error: -14136 (eDSRecordNotFound)
,那么我不知道你做了什么。
无论如何,假设该条目来自 DSLocal,则很容易删除:
sudo dscl /Local/Default -delete /Hosts/reddit.com
答案2
尝试
dscacheutil -flushcache
ping reddit.com
并汇报。
答案3
看来你需要运行
sudo niload -v -m hosts . < /etc/hosts
如果您希望更改生效,请在更新 hosts 文件后进行。