Mei*_*eik 96 dns macos hosts-file osx-lion
在升级到Mac OSX Lion之后,我发现/ etc/hosts不会在名字解析的第一位被查找了.这会导致一些副作用,如:
这种行为是有意的吗?它有意义吗?最重要的是,我怎样才能回到旧的行为.
小智 78
我认为重要的是Lion处理.本地TLD的方式不同,因为它保留了一些多播DNS功能(由Bonjour使用).我发现解决此问题的唯一方法是为开发主机使用不同的TLD(即:.dev).它对我来说很好,希望它对别人有用!
gun*_*uns 50
关于覆盖hosts文件中的域,我发现在某些情况下,Lion会在感知到域名无法通过IPv4网络访问时查询域的IPv6地址.
当我发现一些我以前从未见过的关于Snow Leopard的广告时,我发现了这一点,因为我已将广告域重定向到127.0.0.1.我启动了wireshark,并注意到AAAAIPv4 A查询(IPv4)后的(IPv6 DNS记录)查询.广告服务器确实有IPv6 addesses,并能够为我提供他们的内容.
对此的解决方案有一个
::1 mydomain.com
Run Code Online (Sandbox Code Playgroud)
每个人的入场券
127.0.0.1 mydomain.com
Run Code Online (Sandbox Code Playgroud)
您的主机文件中的条目.
有趣的是,如果您碰巧运行了本地Web服务器127.0.0.1:80并且您的浏览器收到来自Web服务器的响应(错误或其他),则不会AAAA发出任何查询,因为它似乎认为TCP连接至少是可能的.
在相关说明中,如果您大量使用hosts文件(用于广告拦截,本地Web开发等),您可能需要考虑运行自己的本地DNS解析程序./etc/hosts每次请求都必须读取相当大的磁盘/ CPU ,因此保持该文件非常轻便符合您的最佳利益.
运行dnsmasq本地(除了显着的性能提升)之外的一个优点是,您可以将整个顶级域重定向回本地计算机.这允许您拥有整个*.dev命名空间用于开发(例如),而无需单独输入您想要在本地解析的每个域/etc/hosts
小智 17
问题是我在符号链接/ etc/hosts文件.如果/ etc/hosts是普通文件,一切正常.
Dan*_*tts 14
更新(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
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩.
以下是我对后代的原始答案.我想在某些情况下它可能仍然是一个问题.
确保您的/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
Run Code Online (Sandbox Code Playgroud)
此修复的功劳:
http://techpatio.com/2011/guides-how-to/fixed-mac-osx-lion-etc-hosts-bugs-dns
| 归档时间: |
|
| 查看次数: |
63463 次 |
| 最近记录: |