即使在杀死mDNSResolver后,Mac OSX更改/ etc / hosts也没有任何效果

时间:2017-02-15 18:22:00

标签: macos dns hosts

我在Windows(10)中没有遇到类似的问题,我在文档上搜索的内容似乎没有说明为什么,如果这不起作用,那就是这种情况

  • 我打开终端并编辑/ etc / hosts(我已经在PC上做了很多次,几年前也在OSX上做过)
  • 如果不起作用,只是为了笑容,我输入sudo killall -HUP mDNSResponder
  • 然后为了更多的笑容,我重新启动

这绝对没有效果。谁能指出我为什么?感谢。

更新:令人尴尬的事实是,我在/etc/hosts中输入的行是反向的,即域名优先,如下:

mydomain.com  192.168.33.10    #wrong
192.168.33.10    mydomain.com  #what it should have been

然而,接受的答案是写得很好并且受到赞赏。

2 个答案:

答案 0 :(得分:3)

我在macOS(/ OS X)上使用/ etc / hosts时遇到了两个常见问题:

  • 格式不正确:/ etc / hosts文件中的每个条目必须是IP地址,后跟空格或制表符,后跟名称,然后是行末尾的换行符。尝试使用cat -vet / etc / hosts打印hosts文件,以使通常不可见的字符可见。每一行应该看起来像其中之一:

    127.0.0.1^Iwww.example.com$
    127.0.0.1 www.example.com$
    

    (" ^ I"是一个标签," $"是该行末尾的换行符。)如果条目也可以列出了多个名称(也用空格或制表符分隔)。

    如果你看到" ^ M" (回车)就在" $"之前,你有DOS / Windows格式的文本,你需要删除回车符。

  • 错误的测试:不要使用命令行工具dighostnslookup,因为它们都直接测试DNS,因此绕过/ etc / hosts文件。浏览器有时会缓存内容,这会产生误导性的结果。 "权利"测试系统名称解析系统的方法是使用dscacheutil命令:

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

    ...但由于那令人讨厌的冗长,我倾向于使用ping,并查看它所说的要测试的地址。

答案 1 :(得分:0)

我遇到了这个线程,试图在macOS Catalina上解决相同的问题,但没有成功。这是因为macOS Catalina还有另外一件事。仅当您以root用户身份更改主机文件时,该更改才会生效(不使用sudo命令完成)!

默认情况下,您的系统上没有root用户,因此下面是一个包含逐步指南的链接: https://support.apple.com/en-us/HT204012

那我能够:

su
nano /etc/hosts

有关更多信息: https://discussions.apple.com/thread/250805304