为了在本地机器上进行 Web 开发,我使用该/etc/hosts
文件定义指向 127.0.0.1 的主机,Apache 通过 VirtualHosts 向该主机提供服务。这种方法效果很好,但现在 Lion 似乎会不时重置我的 /etc/hosts 文件。
有其他人遇到过这种情况吗?有什么方法可以防止这种情况发生吗?
我在 Snow Leopard 中从来没有遇到过这个问题。
答案1
我刚刚发现是什么重置了我的 /etc/hosts 文件。它是 Cisco AnyConnect VPN 客户端。每当我连接到组织的 VPN 时,它都会将 hosts 文件重置为默认值。我很少连接到 VPN,因此问题似乎时有时无。
如果您使用 Cisco 的 AnyConnect VPN 客户端,请注意,它会将您的主机文件重置为以下内容:/etc/hosts.ac
/etc/hosts
为了解决这个问题,请在和文件中对主机进行更改/etc/hosts.ac
。
答案2
目录服务(Tiger 及更早版本中的 NetInfo)有自己的静态主机映射,地址解析器将在 之前使用该映射/etc/hosts
。这些可以通过目录实用程序或 进行操作dscl
。
dscl localhost -create /Local/Default/Hosts/www.myhost1.com IPAddress 127.0.0.1
dscl localhost -create /Local/Default/Hosts/www.myhost2.com IPAddress 127.0.0.1
dscl localhost -create /Local/Default/Hosts/www.myhost3.com IPAddress 127.0.0.1
dscl localhost -create /Local/Default/Hosts/www.myhost4.com IPAddress 127.0.0.1
答案3
我在 Lion 上没有看到这种行为,并且我有一个自定义的 /etc/hosts。
是整个文件都恢复了,还是只恢复了像 127.0.0.1 这样的常见条目的前几行?
某些操作系统操作可能会重新应用前几个“标准” /etc/host 行,因此我可能会尝试添加行,而不是编辑这些行......
我的情况看起来像这样,并且从未发生过神奇的改变:
## # 主机数据库 # # localhost 用于配置环回接口 # 在系统启动时。请勿更改此条目。 ## 127.0.0.1 本地主机 255.255.255.255 广播主机 ::1 本地主机 fe80::1%lo0 本地主机 # 在本地路由一些 Web 请求 127.0.0.1 www.myhost1.com 127.0.0.1 www.myhost2.com 127.0.0.1 www.myhost3.com 127.0.0.1 www.myhost4.com
答案4
我遇到了和 Jimmy Z 一样的问题。真的很令人沮丧,尤其是因为我有多个自定义主机。直到第 3 或第 4 次发生时我才意识到它总是在重启后发生。
我终于偶然发现这博客文章建议删除并重新创建 hosts 文件。我按照建议操作,重新启动后,发现 /etc/hosts 处于预启动状态,这让我松了一口气。下面是我所做操作的回顾。
cat /etc/hosts | pbcopy
sudo rm /etc/hosts{,.ac}
sudo touch /etc/hosts
sudo su root -c 'pbpaste > /etc/hosts'