我在删除运行 Mac OS X 10.10.2(Yosemite)的 Mac 上的一些本地 DNS 设置时遇到了问题。
我通常使用该/etc/hosts
文件将开发站点的请求定向到我的客户 Vagrant VM。有时我在开发中使用实时站点的 URL,这样就无需在迁移数据库时替换路径。
在这种情况下,我有以下记录:
192.168.50.4 example.com www.example.com
上面的IP是我的Vagrant VM的IP。
我已将网站迁移到生产环境,但无法让 Chrome 连接到我服务器上的实时网站。当我使用该主机ping
名时traceroute
,Mac 仍会解析为192.168.50.4
已删除的 Vagrant VM 地址。
当我用手机访问该网站时,我得到了预期的行为。
到目前为止我已经完成了以下工作:
/etc/hosts
从我的文件中删除了该记录。- 重新启动了我的 Macintosh。
- 清理了本地缓存如这里所述。
- 通过访问此处刷新 Chrome 的 DNS 缓存:
chrome://net-internals/#dns
。 - 再次重新启动了我的 Macintosh。
- 重新加载并重新配置我的 Vagrant VM。
- 已重新启动。
我似乎无法让我的 Macintosh 连接到网络上的实时站点。我已将此流程用于我开发的最近 10-15 个项目。
关于如何防止我的机器在 Vagrant VM 上查找域,有什么想法吗?
更新:运行dscacheutil -q host
显示以下条目:
name: example.net
alias: # VAGRANT: 53475745d1ed12f00441552188bfdd8b (default) / 0eb4854a-a516-4d34-ac43-397240944175
ip_address: 192.168.50.4
name: www.example.net
alias: # VAGRANT: 53475745d1ed12f00441552188bfdd8b (default) / 0eb4854a-a516-4d34-ac43-397240944175
ip_address: 192.168.50.4
仍然不确定为什么我无法使用 Apple 推荐的任何命令来清除这个问题。
答案1
任何遇到这个问题的人,都有一个简单的解决方案:
- 检查你的
/etc/hosts
文件。 - 删除必要的条目。
- 仔细检查 hosts 文件条目是否已被删除:
dscacheutil -q host
- 清除本地缓存,具体取决于您的操作系统版本(参考这里)。
- 检查您的 Vagrantfile 并确保您在配置期间没有使用插件来更新主机文件。
- 重新加载 vagrant 并配置
vagrant reload --provision
- 再次检查您的主机文件,一直检查到最底部。
我碰巧正在使用 Vagrant 插件,它导致主机文件在配置期间更新,但是几个月前我就设置好了它,然后就忘记了。
一路顺利。