/ etc / hosts在Lion中重置


22

为了在本地计算机上进行Web开发,我使用该/etc/hosts文件定义了指向127.0.0.1的主机,我通过VirtualHosts将Apache提供给这些主机。这很有效,除了现在看来Lion经常重置我的/ etc / hosts文件。

其他人有没有经历过?有什么办法可以防止这种情况发生?

我从来没有在Snow Leopard中遇到过这个问题。


你有hosts.ac文件吗?或主机文件的任何其他副本?
2011年

@ user570144似乎您是对的。
丹尼尔·贝克

是。user570144是正确的。抱歉,我在这里没有看到评论。
Jimmy Z

我确实在Snow Leopard 10.6.8
bzx中

Answers:


37

我刚刚发现正在重置/ etc / hosts文件的内容。它是Cisco AnyConnect VPN客户端。每当我连接到组织的VPN时,都会将主机文件重置为默认值。我很少连接到VPN,因此问题似乎是间歇性的。

如果您使用Cisco的AnyConnect VPN客户端,请注意它将把您的主机文件重置为以下内容:/etc/hosts.ac

要解决此问题,请在/etc/hosts/etc/hosts.ac文件中对主机进行更改。

我从MacWorld得到了提示。


1
相同的经验,但猜测是来自Cisco Unified Personal Communicator(杯子蛋糕)。确保希望可以解决此问题。发生这种情况时,我使用的VPN不足以匹配。同样,这仅在我重新启动时发生。
doublejosh 2012年

1
很想阅读思科关于为什么这样做的解释
matt b

1
此行为已在2013年春季发布的AnyConnect v3.0.5080(或更高版本)中修复/更改。发行说明 -搜索hosts.ac
BrianC

2

目录服务(Tiger及更早版本中的NetInfo)具有自己的静态主机映射,地址解析器将在之前使用它/etc/hosts。这些可以通过Directory Utility或进行操作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

1

我还没有在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

由于某些原因,在迁移到新的Lion机器后第一次更新/ etc / hosts时,添加额外的127.0.0.1地址行无法正常工作。因此,我在127.0.0.1的第一行的localhost之后添加了一个条目。它现在可以正常工作,因此我添加了新行,并观察它是否再次重置。我本来一定做错了。我可以花更多时间进行验证后,将其标记为解决我的问题。谢谢!
吉米Z

我在最底端的默认localhost下面列出了域映射,今天早晨将其重置。
Jimmy Z

1

我目睹了与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'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.