OS X 10.10.1 / etc / hosts和/ private / etc / hosts文件被忽略并且无法解析


40

如标题所示,运行os x 10.10.1。如果我在主机文件中有一个条目并执行一个操作,dig或者nslookup即使尝试刷新各种缓存后,它仍显示出与主机文件中不同的IP。

我尝试了以下方法。

  1. 通过运行以下命令刷新mdns和udns缓存:
    1. sudo discoveryutil mdnsflushcache;
    2. sudo discoveryutil udnsflushcaches;
  2. 使用刷新刷新 dscacheutil -flushcache
  3. 重新加载discoveryd.plist文件
    1. sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist
    2. sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist

我的主机文件看起来像这样。

% cat /private/etc/hosts
##
# 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
166.78.60.102   admin.devsite1.com

3
优胜美地似乎不像以前那样使用主机。它也不以相同的方式刷新缓存,&mDNS排在后面-这在主题上引起了很大的争议-forums.macrumors.com/showthread.php?t=1741422 编辑ahh ...我猜你已经得到尽可能azchipka.thechipkahouse.com/...
铁人

谢谢,是的,我已经读过了..如果这就是os x的
样子

1
我很高兴我不必依赖Mac上的主机,TBH。当我需要这样做时,我往往总是在
赢球中打球

是的,不幸的是,我的rmbp是我用于Web开发/系统管理员的主要开发机器,我需要弄清楚这点,否则我会退回到特立独行的。
gorelative 2014年

其他人可能只想在其工作站上禁用ipv6,我发现了这一点,这解释了关键所在:technipages.com/how-to-disable-ipv6-in-macos-sierra-但是,即使在我的网卡上禁用了ipv6之后,问题仍然存在。
James T Snell'Mar

Answers:


61

/ private / etc / hosts在优胜美地(版本10.10.1)中似乎对我来说正常工作。无需刷新缓存或重置discoveryd(Yosemite中的DNS解析器);sudo fs_usage | grep private/etc/hosts显示discoveryd我保存更改后立即读取文件。

[更新:discoveryd仅在OS X版本10.10.0-10.10.3中使用。在早期版本和更高版本中,都mDNSResponder提供相同的功能……并立即注意到/ etc / hosts中的更改。]

然而dignslookuphost不会看到条目,因为他们绕过系统的解析器和做原料DNS查找。他们一直都这样做,所以这在优胜美地并不新鲜。通过OS X中的系统解析器进行查找的“官方”方法是使用dscacheutil

dscacheutil -q host -a name www.example.com

...但是由于这很麻烦,所以我倾向于只使用它ping(然后看第一行,它列出了要查验的IP)。从10.9开始,您还可以使用Network Utility的Lookup选项卡(在使用之前,dig因此绕过了系统查找策略)。

顺便说一句,请不要关注Tetsujin链接的微词线程;到处都是人,他们不太了解自己在做什么,并且误解了自己错误的结果。


1
感谢戈登,是的,我意识到我张贴这一点,后dignslookuphost不使用本地DNS解析。话虽这么说,/etc/hosts按预期工作..
gorelative

如果我更新/etc/hosts文件或/private/etc/hosts文件,则它根本无法通过dscacheutil -q host -a name www.example.com任何其他命令反映
行程

3
@Trip确保添加的条目格式正确:IP地址,后跟空格或制表符,后跟名称,然后在行末尾使用换行符。尝试使用打印主机文件,cat -vet /etc/hosts以使通常不可见的字符可见。每行应看起来像“ 127.0.0.1 ^ Inetsecuritybureau.com $”(“ ^ I”是一个标签,“ $”是换行符)或“ 127.0.0.1 netsecuritybureau.com $”。如果在“ $”之前看到“ ^ M”(回车符),则说明您使用DOS / Windows格式的文本,因此需要删除回车符。
戈登·戴维森

哇,非常感谢您的帮助。我遵循了您的指导,确保它是制表符或空格。我的行显示为:M127.0.0.1^Iyoutube.com^M^M,然后执行dscacheutil -flushcache; sudo killall -HUP mDNSResponder,导航到youtube.com时,它仍然显示youtube而不是本地主机。
2015年

@Trip有多种清除命令行中不可见字符的方法,但我建议使用GUI编辑器TextWrangler-使用“查看”菜单>“文本显示”>“显示不可见”来查看(并编辑)类似的内容回车。此外,它是免费的,并且具有显示/打开不可见文件和文件夹(例如/ etc)以及使用管理员权限来编辑系统文件的选项。
Gordon Davisson

17

我发现了这个问题的另一个皱纹。

为了解决我遇到的问题,我不得不添加IPv6样式的主机文件条目。

如果您具有IPv6网络配置设置,似乎Safari会忽略IPv4条目。

您必须在/ etc / hosts中添加解析为IPv6本地主机地址的重复条目。

IPv4条目 127.68.56.101 facebook.com

例如IPv6条目 fe80::1%lo0 facebook.com

等等


1
请注意,我成功使用最短的IP地址成功使用了该地址:0.0.0.0和:: 1
Ben Morrow

谢谢,也为我工作。升级后还原我的vhosts / apache配置后,我挠头。赞赏。
加文

是的,这也为我解决了。
advert2013年


1

我找到这篇文章是因为Yosemite 10.10.5并未获取主机文件更改,并且我无能为力。(我重新启动,尝试刷新缓存,然后遵循我可以在互联网上找到的所有建议,等等)。

答案是如此简单,实际上令人尴尬,但我想我会分享。我使用textedit编辑了hosts文件,然后将文件另存为hosts.txt。通常,我会注意到类似的情况,但我使用的是Yosemite的全新安装,并且尚未打开“显示所有文件扩展名”,因此当我在桌面上查看文件时,文件名似乎没有更改。

所以这很明显,大多数阅读这篇文章的人可能已经做到了,但是请确保检查您的hosts文件是否确实存在并且没有被hosts.txt取代

要打开显示文件扩展名的显示,请转到Finder>首选项>显示所有文件扩展名

要添加扩展名为.txt的文件停止文本编辑,在文本编辑打开一个文件,然后选择文件>另存为(如果您没有看到另存为菜单项,按住Option键单击后的文件,并另存为应出现在菜单中)。查找选项如果没有提供扩展名,请使用“ .txt”并取消选择它。


0

我相信Apple会将此视为错误(我今天提交了一个错误)。我确实注意到有新条目输入,/etc/hosts但是对现有条目的更改将被忽略。所以....更改条目的主机名(例如,将web1更改为web1a)为我提供了一种解决方法。

OLD / etc / hosts条目: 54.173.164.18 web1

新的/ etc / hosts条目: 54.174.161.12 web1a


sudo dscacheutil -flushcache-将刷新目录服务缓存。
凯文·布克斯

0

就我而言,我会设置一个.ssh / config

#Host *.ourdemo.ca
  User jumpy
  ProxyCommand ssh ourjumpbox.ca -W %h:%p

您介意解释配置文件的作用以及与问题的关系吗?
klanomath '16

1
问题是为什么本地/ etc / hosts文件中的条目被忽略。就我而言,它被忽略了,因为我被指示通过代理框(ourjumpbox.ca)将所有流量隧道传输到一组计算机(* .ourdemo.ca)。SSH顺服地代理了该连接,因此它最终是用于解析地址的代理的/ etc / hosts文件而不是本地的/ etc / hosts文件。
马丁·切弗

0

我有一个非常相似的问题,我通过邮件收到两行要添加到我的邮件中 /etc/hosts

该域包含一个-my-domain.com

原来,这个问题是发件人的电子邮件客户端-不管说,微软的Outlook -即转换的ASCII码-的长-字,微软这么喜欢使用其嵌入式自动修正来替代-它们-

主机文件看上去确实很完美,很难找到此问题。当我删除行并将其手动写回时,它们开始工作。

很难理解这一点,以至于我深入了解了MacOS客户端为何应忽略hosts文件并直接跳至名称解析的原因。


0

刚遇到这个问题。这是由于从hipchat复制/粘贴而不是写地址引起的。

复制过程中添加了一些不良字符而不是空格,从而导致了问题。

重写行即可解决问题。


0

我已经使用了一段时间的应用程序SelfControl(实际上是在macOS mojave 10.14.4上),并且想检查一下SelfControl如何执行其输入...它们看起来像这样:

0.0.0.0 xyz.com
:: xyz.com
0.0.0.0 www.xyz.com
:: www.xyz.com

基于此,我将所有内容都更改为本地主机,因此

127.0.0.1
::1

作品。


我不确定这怎么回答这个问题。似乎只是一些随机观察,与问题无关。
Tetsujin

1
您能否添加一些详细信息,说明您在什么地方进行了更改,以及更改与问题的关系?
nohillside

问题是为什么从10.10.1起就忽略了hosts文件...我处于一种情况,即手动输入被忽略,但通过应用程序SelfControl进行的输入却按预期工作。我先前输入的内容缺少的是第二部分,即带有“ www。”的域名。无法弄清楚我输入的内容还有什么问题,因为在10.10.1之前所有人都可以正常工作。
Needlol
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.