更新(2):OSX 10.10.5 带来了mDNSResponder
.
更新:OSX 10.10 Yosemite 已将 mDNSResponder 替换为“discoveryd”。我还没有升级,所以我不确定发现的行为 w/r/t DNS 查找和/etc/hosts
.
Lion 上的系统 DNS 解析器就是mDNSResponder
进程。
您可能会想“但 mDNSResponder 是多播 dns 响应者”。你是对的; 这就是它最初的用途,它仍然实现了这个功能。但是,在较新的 MacOS 版本上,它也执行标准主机查找。
在 Lion 中,它似乎不会在更改时自动重新读取/etc/hosts
,至少并非总是如此。杀死mDNSResponder
(并允许它自动重新启动)似乎可以解决问题。
sudo killall mDNSResponder
应该做的伎俩。
以下是我对后代的原始答案。我想在某些情况下它可能仍然是一个问题。
确保您的/etc/hosts
文件是 unix 样式的文本文件,以换行符作为结尾而不是 cr。
使用 TextWrangler 或 unix 文本编辑器进行编辑应保留该文件。
如果你的文件已经搞砸了,试试这个来修复
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
将此修复归功于:
http://techpatio.com/2011/guides-how-to/fixed-mac-osx-lion-etc-hosts-bugs-dns