繁体   English   中英

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

[英]Mac OSX changing /etc/hosts has no effect even after killing mDNSResolver

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

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

    这完全没有效果。 谁能指出我为什么? 谢谢。


    更新<\/strong>:这件事令人尴尬的事实是,我在\/etc\/hosts<\/code>中输入的行是相反的,即域优先,如:

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

    "

我发现在 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 格式的文本,您需要删除回车。

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

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

    ...但由于这很烦人,我倾向于只使用ping ,然后查看它说要测试的地址。

我遇到了这个线程,试图在 macOS Catalina 上解决同样的问题,但没有成功。 这是因为 macOS Catalina 有另一件事要做; 如果您以 root 用户身份更改主机文件,它只会使主机文件中的更改生效(这不是使用 sudo 命令完成的)!!

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

然后我能够:

su
nano /etc/hosts

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

以下步骤对我有用

  1. 刷新 DNS sudo killall -HUP mDNSResponder (或在活动监视器中杀死 DNS 并让它重新加载)

2.更改/etc/host文件的读写权限应该是-rw-r--r-- 使用命令$ sudo chmod g+r /etc/hosts和$ sudo chmod o+r /etc/hosts

  1. 添加条目你想在主机文件中添加 ipxxx.xx.xx.com

  2. 最后移动了这两行 255.255.255.255 broadcasthost ::1 localhost Administrators-MacBook-Pro.local

  3. 再次执行第 1 步

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM