macos - 即使在杀死 mDNSResolver 后,Mac OSX 更改/etc/hosts 也没有任何影响

标签 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
    

    然而,接受的答案写得很好,值得赞赏。

    最佳答案

    我发现在 macOS (/OS X) 上使用/etc/hosts 有两个常见问题:

  • 格式不正确:/etc/hosts 文件中的每个条目必须是一个 IP 地址,后跟一个空格或制表符,然后是名称,然后是行尾的换行符。尝试使用 cat -vet/etc/hosts 打印主机文件以使通常不可见的字符可见。每行应如下所示:
    127.0.0.1^Iwww.example.com$
    127.0.0.1 www.example.com$
    

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

    如果您在“$”之前看到“^M”(回车),则您有 DOS/Windows 格式的文本,您需要删除回车。
  • 不正确的测试:不要使用命令行工具 dig , host , 和 nslookup ,因为它们都直接测试 DNS,因此绕过/etc/hosts 文件。浏览器有时会缓存内容,这可能会产生误导性的结果。测试系统名称解析系统的“正确”方法是使用 dscacheutil命令:
    dscacheutil -q host -a name www.example.com
    

    ...但由于这很烦人,我倾向于只使用 ping ,看看它说要测试的地址。
  • 关于macos - 即使在杀死 mDNSResolver 后,Mac OSX 更改/etc/hosts 也没有任何影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42257228/

    相关文章:

    c++ - Mac OS 的静态库

    java - 将 Windows 预期批处理转换为 OSX 批处理

    nginx - 如何在 Nginx 上游使用 Docker swarm DNS/服务名称

    apache - 如何为 apache2 调整主机?

    hosts - Windows 'hosts' 编码是什么?

    dns -/etc/hosts可以配置反向解析吗?

    macos - Get-Process 在类中不起作用 [PowerShell]

    macos - OS X 忽略的符号链接(symbolic link)主机文件;开发域重定向到 127.0.53.53

    windows - 修改所有传出数据包的 TCP/IP header 中的目标端口

    macos - 在 Mac OS X 中轻松进行 GUI 编程。针对 Windows 平台