/ etc / hosts被改写


14

正确的编辑方式是/etc/hosts什么?我想添加一些IP地址和主机名。它可以工作一段时间(几个小时),然后恢复为原始版本。是否有任何检查状态/etc/hosts并将其还原的过程?

我正在与Mountain Lion一起攻读MBA。


FWIW,这不会发生在我身上。我在/ etc / hosts中有一个到我的专用网络中的计算机(地址10.0.0.2)的条目,该条目从未被系统删除。但是,也许它只留下本地网络中的地址(10 / 8、172.16 / 12和192.168 / 16 –参见RFC 1918),并删除指向全局IPv4地址的地址?</speculation>
Harald Hanche-Olsen 2013年

实际上,我不久前添加了一些条目,但它们仍然存在。新的将被删除。两者都在相似的子网中。
Mohammad Moghimi

您是否能够确定哪个进程正在更改文件?像fseventer这样的工具可能会帮助您了解正在编辑文件的内容。由于它通常归root:wheel所有,因此可以编辑文件的程序列表应该很小。您也可以在文件上设置不可变标志,而无需还原更改。
bmike

Answers:


10

作为帮助您找到罪魁祸首的工具,这是一个dtrace oneliner,它打印打开文件以供写入的任何进程的pid和名称以及文件名:

dtrace -qn 'syscall::open*:entry /arg1&3/ { printf("%d %s %s\n", pid, execname, copyinstr(arg0)); }'

它需要以root身份运行(例如,使用sudo)。用管道将其插入,grep hosts以避免淹没输出并丢失您要查找的内容:

sudo dtrace -qn 'syscall::open*:entry /arg1&3/ { printf("%d %s %s\n", pid, execname, copyinstr(arg0)); }' | grep hosts

希望这将告诉您什么进程正在覆盖文件。只要让它在终端窗口中运行直到触发即可。


13

如果您使用的是Juno Pulse VPN客户端,则会/etc/hosts被覆盖/etc/jnpr-pulse-hosts.bak


11

对我来说,它在文件中

/etc/pulse-hosts.bak

您必须编辑此文件以自定义主机指令

当您要使用Pulse Secure VPN重新连接/连接时,它将合并来自

/etc/pulse-hosts.bak

与Pulse指令中的内容并创建

/etc/hosts

2018更新

使用较新版本的Pulse Secure,您必须首先退出程序(检查活动进程)。

修改您的主机(/ etc / hosts),然后重新启动Pulse Secure。


8

您是否使用思科的AnyConnect VPN客户端?如果是这样,则需要编辑/etc/hosts.ac,然后将其复制到实时文件中。请参阅此MacOSXHints文章,以及前面的 问题

编辑:我找不到有关Janos Pulse的任何东西,但是Juniper的Ne​​twork Connect与/ etc / hosts混在一起,我怀疑Pulse可能会做同样的事情。根据此博客文章,如果您在连接时进行更改,则在断开连接时将还原它们,但是在断开连接时所做的更改将保留下来。


不,我不使用AnyConnect,也没有/etc/hosts.ac。但是,我使用的是另一种代理软件:Junos Pulse
Mohammad Moghimi

1
我可以使用Junos Pulse 5.1.8确认这种行为。/etc/hosts必须在断开连接时进行更改,否则您将丢失它们。
MisterEd 2016年

-1

进入VPN后,我无法使用quickstart cloudera VM。要解决此问题,我按照以下步骤操作。

步骤1:在中添加条目,/private/etc/hosts例如

127.0.0.1 quickstart.cloudera

步骤2:输入VPN,例如我正在使用F5 VPN

步骤3:/etc/hosts使用以下命令验证上述条目

猫/ etc / hosts

我希望它会有用。


这如何解决问题中描述的问题,即“东西”覆盖/etc/hosts
nohillside

嗨,@ nohillside,我127.0.0.1 quickstart.cloudera/etc/hosts文件中添加了条目,但是当我连接到VPN时,它被擦除/覆盖。要127.0.0.1 quickstart.cloudera永久添加条目,我在/private/etc/hosts文件中添加了它。在内部,只要您尝试连接到VPN,它就会将所有条目从复制/private/etc/hosts/etc/hosts。我希望现在有道理。
Shreyash Limbhetwala

嗨@nohillside,仅供参考...我正在使用F5 Big-IP Edge客户端,并且我使用的是Mac OS。
Shreyash Limbhetwala

在Mac OS /etc是一个符号链接private/etc,以便/etc/hosts/private/etc/hosts实际上是相同的文件(运行ls -li /etc/hosts /private/etc/hosts检查)。
nohillside

1
您说对了@nohillside,但是在/private/etc/hosts我的问题中添加条目后,问题得到解决,并且连接到VPN之后,我的条目也不会被擦除/覆盖。
Shreyash Limbhetwala

-1

更改/ etc / hosts文件时,请确保未连接到VPN(至少在使用Juniper Networks的Network Connect时)。

https://mcphersonz.wordpress.com/2009/11/12/etchosts-file-is-reverting-to-a-previous-state-in-os-x/中所述


1
这个问题从六年前就已经被接受。原始帖子未提及正在使用的VPN。尽管您的问题对使用VPN时遇到此问题的其他用户(尤其是Jupiter Networks的用户)可能有所帮助,但与原始帖子没有多大关系。
IconDaemon

@IconDaemon谢谢您的热烈欢迎。这与6年前无关紧要,因为该页面仍然是搜索引擎中的第一热门。另外,已经有其他4个答案提到VPN可能引起完全相同的问题(与我自己的情况相同),即使公认的答案似乎已经解决了OP的问题。但是,即使他在给Gordon的评论中也承认他使用了VPN(Junos Pulse)。也许您应该否决我的答案,因为在Stanislas的答案更新中已经提到了禁用VPN(但这不是您所说的)。
米歇尔
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.