Windows计算机上的主机文件用于将某些名称字符串绑定到特定的IP地址,以覆盖其他名称解析方法。

通常,一个人决定更改主机文件,并发现更改拒绝采取效果,或者甚至忽略了hosts文件中的旧条目。许多“陷阱”错误可能导致此错误,并且弄清楚哪个错误可能会令人沮丧。

当Windows忽略主机文件的问题时,什么是全面的故障排除协议,


这个问题在SO上有重复项,例如HOSTS文件被忽略

但是,这些趋向于处理特定情况,并且一旦发生发现OP犯下的错误,讨论结束了。如果您不是碰巧犯了同样的错误,那么这样的讨论不是很有用。因此,我认为有一个通用的协议来解决所有与主机有关的问题,将涵盖所有情况,这会有所帮助。

评论

另外,就像其他人发布的一样,请勿使用“ nslookup”进行测试,因为该命令将忽略hosts文件。而是使用“ ping”。

HOSTS文件的可能重复项被忽略

我终于找到了解决方法。在chrome中,chrome:// flags /->安全DNS查找->禁用。

#1 楼

根据我自己的经验以及在谷歌搜索时遇到的事情,可以尝试以下操作:

1。您检查它是否正常工作吗?

对主机的更改应立即生效,但是Windows会缓存名称解析数据,因此一段时间以来可能会使用旧记录。打开命令行(Windows + R,cmd,Enter),然后键入:

ipconfig /flushdns


以删除旧数据。要检查它是否有效,请使用(假设您的主机中有一个ipv4条目用于www.example.com,或者您的主机中有一个ipv6条目用于ipv6.example.com):

ping www.example.com -n 1
ping -6 ipv6.example.com -n 1


,看看它是否使用正确的IP。如果是,则您的主机文件很好,问题出在其他地方。

此外,您还可以使用以下方式重置NetBios缓存(以管理员身份打开控制台,否则将失败):

nbtstat -R


您可以使用以下方法检查DNS缓存中的当前数据:

ipconfig /displaydns | more


2。基础知识


您的主机文件名称正确吗?应该是hosts而不是host等。
扩展名正确吗?它应该没有扩展名(hosts而不是hosts.txt)-请注意,如果您已将窗口配置为隐藏已知扩展名,请检查属性以确保:正确的主机文件类型将仅显示为“文件”。
您没有遵循正确的语法?
3 ..您是否偶然使用了表示注释的哈希(#)前缀?空格

每行的格式为www.example.com,然后为水平制表符(转义码example.com,ASCII IP address,十六进制\t)或单个空格(十六进制HT),然后是主机名,即。 0x09,然后最后是回车符,后跟换行符(转义码0x20,ASCII www.example.com,十六进制\r\n)。

样本条目,使用Unicode控制图片指示控制字符。 (不要将这些副本复制并粘贴到您的主机文件中!) Notepad ++还将显示特殊字符(查看->显示符号),因此您可以轻松检查空白字符的数量和种类。

如果从某处复制并粘贴主机条目,则可能会出现多个空格。从理论上讲,主机支持将两列分开的多个空格,但是如果没有其他作用,则尝试另一回事。

为了安全起见,请确保主机文件中的所有行都使用制表符或空格,但不能同时使用。

最后,用空行终止文件。

4。注册表项

有一个注册表项,用于指定主机文件的位置。据说Windows实际上并不支持将hosts文件放在其他位置,但是您可能要检查一下。密钥为:

192.0.2.1␉www.example.com␍␊
2001:db8:8:4::2␉ipv6.example.com␍␊


条目应为:

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath


5。权限

有时文件,文件属性和类似内容的权限存在问题。要使用默认权限重新创建文件,请执行以下操作:


在桌面上创建一个新的文本文件。
将当前主机文件的内容复制并粘贴到记事本中的该文件中。 br />保存新文本文件并将其重命名为CRLF
将文件复制(不要移动)到0x0d 0x0a目录中,并覆盖旧文件。最后一点很重要:复制有效,移动无效。

本地hosts帐户必须能够读取主机文件。确保(在Windows 7中):


在Windows资源管理器中导航到%SystemRoot%\System32\drivers\etc
如果看不到Users文件,请确保可以看到隐藏文件和系统文件。 。
右键单击%SystemRoot%\System32\drivers\etc文件,然后从上下文菜单中选择hosts
hosts窗口中,单击Properties选项卡。
检查hosts Properties框中的名称列表。如果存在Security,请单击它以查看权限。
如果Group or user names:不存在,或者存在但不具有%COMPUTERNAME%\Users权限,请单击Users
如果Read不存在,请单击Edit...,键入Users ,单击Add...,然后单击确定或按Enter。
选择Users,并确保在Check Names列中选中了Users。单击确定。如果弹出Read & execute警报框,请选择Allow继续。
单击“确定”关闭Windows Security窗口。
转到此答案的第1部分,并按照说明检查它是否现在可以工作。

6。编码

主机文件应使用ANSI或UTF-8编码,且不带BOM。您可以使用文件->另存为。

7。代理

如果配置了代理,它可能会绕过主机文件。解决方案是不使用代理,或将其配置为不执行此操作。

要检查,请转到Internet Explorer-> Internet选项->连接-> LAN设置。如果所有内容均为空白,并且选中了“自动检测设置”,则说明您未使用代理。

如果您依赖代理访问网络,因此不想禁用它,则可以可以通过以下方法添加例外:Internet Explorer-> Internet选项->连接-> LAN设置->代理服务器/高级。然后将您的例外添加到“例外”文本框中。例如。 Yes

8。 DNS地址

(这也可以解决代理问题。)

转到网络连接属性,然后单击TCP / IP设置,并将第一个DNS服务器更改为hosts Properties(本地主机) )。第二个可能应该是您实际的DNS的IP。

这对于主机文件来说不是必需的,但是如果某些配置奇怪,这可能会对您有帮助。

9。 .local地址

如果您使用的是myhost.local形式的.local域条目,但该条目被忽略,请尝试以下操作

%SystemRoot%\System32\drivers\etc


即使www.myhost.local可以不存在。 Windows某种程度上不会追加其工作组或localdomain。

评论


非常感谢您!我几乎要哭了,开始在两行之间出现空白条目时,我们很多人都为SPACE而疯狂。谢谢谢谢谢谢谢谢谢谢!!!!!

–user228087
2014年6月26日14:13

另一个陷阱是Windows的64位版本将32位应用程序(例如Notepad ++)的System32文件夹重定向到您,因此当您保存文件时,它会显示在SystemWOW64文件夹而不是System32中。最好的解决方法是仅使用64位Windows版本的记事本。第二好的方法是,如果使用32位编辑器,则连接到管理共享(\\ yourmachinename \ c $ \ Windows \ System32 \ drivers \ etc)以打开文件。

–蒂姆·刘易斯
2014-09-19 14:36

好的帖子,但是有一些错误。 1)如果您的网络确实提供了代理自动配置,则IE中的“自动检测设置”可能会导致您(甚至不知不觉)使用代理。 2)在网络设置中更改DNS服务器与使用主机文件的方式/时间/是否无关,将其更改为127.0.0.1实际上是错误,除非您实际上在以下位置运行DNS服务器你的电脑。

–马西莫
2014-09-24 21:19



#5(创建一个新文件并复制它)对我有用。 Win7的权限可能很有趣。

–克里斯
16年6月10日在9:48

我使用vim在Cygwin下编辑了hosts文件,我认为这导致了我的hosts文件停止工作的问题。我必须创建一个新文件并复制以前的主机文件的内容,然后对其进行修复。

– forloop
17年8月21日在13:08

#2 楼

确保先放置ipaddress,然后再放置“域”,如下所示:

127.0.0.1   bo.dev
127.0.0.1   www.bo.dev


评论


我更喜欢使用一行:127.0.0.1 bo.dev www.bo.dev ftp.bo.dev

– Xhynk
2014年3月28日在16:59

小心,Windows主机文件每行只允许输入9个或更少!这伤了我,花了一段时间才弄清楚。

– andrew
18-6-5'3:03



不要在本地使用.dev TLD,以免发生冲突。它是Google拥有的有效通用全球顶级域名(TLD),使用它会遇到很多问题。参见ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts

–帕特里克·梅夫克(Patrick Mevzek)
18/09/5在15:37



新秀的错误,但它起作用。 h!让他们倒回名字然后IP

–赎金
19年7月8日在18:11

#3 楼

请添加检查文件的权限。
我发现即使我对计算机(进而对主机)具有本地管理员权限。
直到我将本地用户添加到具有Read和Read&权限的主机文件权限后,执行,然后执行ipconfig / flushdns
,使主机变为活动状态。

评论


就是这样!多年来,我一直对此问题感到困惑。我添加了具有读取,读取和执行权限的(machine)\ USERS,并且在ipconfig / flushdns之后运行了。非常感谢。我很高兴终于将我的主机文件退回。

– Clement Cherlin
2015年6月10日15:37



#4 楼

就我而言,我尝试了Windows 7创建的文件:C:\ Windows \ System32 \ drivers \ etc \ hosts.ics。


# This file has been automatically generated for use by Microsoft Internet
# Connection Sharing. It contains the mappings of IP addresses to host names
# for the home network. Please do not make changes to the HOSTS.ICS file.
# Any changes may result in a loss of connectivity between machines on the
# local network.


因此,Windows将忽略C:\ Windows \ System32 \ drivers \ etc \ hosts中的设置,并从hosts.ics中使用它。

评论


来自support.microsoft.com/en-us/kb/309642/en-us,它很旧,因此可能不再准确:“ ICS使用Hosts.ics文件来存储有关动态配置的客户端的信息。这个文件是为了防止失去连接或数据。Hosts文件(不带文件扩展名)是向其中添加有关静态配置的客户端信息的文件。”因此,我不希望Windows仅因为存在Hosts.ics而忽略Hosts文件。其他原因可能导致Windows忽略您的Hosts文件,例如扩展名错误(但隐藏)。

– Arjan
15年6月21日在13:07

我看到此信息。但是我不知道,为什么我只能使host.ics编辑为主机才能工作。在编辑hosts.ics之前,我尝试了本主题中的所有方法,但是主机不起作用。

– Unick
15年6月22日在10:06

谢谢!你救了我的命。在Windows 10上工作

– Xatenev
19年1月31日23:58



#5 楼

我遇到了同样的问题,主机文件条目被忽略。我没有碰运气就尝试过此线程以及其他许多线程中的所有操作。我想我会发布对我有用的东西,以防其他人遇到此问题。


以管理员身份打开Windows资源管理器
删除主机文件
以管理员并创建一个新的主机文件
从头开始并添加条目。
确保主机文件没有.txt扩展名

注意:只需打开主机文件并删除内容,确认它为0kb,然后重新添加,则无效。我怀疑该文件存在权限问题。

评论


快速说明-修改系统文件(例如hosts文件)时,请谨慎选择先创建备份。为避免数据丢失,请考虑重命名现有的hosts文件(例如,hosts.bak),然后按照步骤3所述进行操作。

–nshiff
19年7月12日在15:06

#6 楼



花了数小时,也许是数天。

IBM Trusteer Endpoint Rapport安全性可能导致此问题。 />
我认为,作为其安全性的一部分,它可以防止恶意软件或病毒将您转移到其他站点。

将mysite列为受信任站点的列表,并且不再检查和“纠正”我的托管文件转移。

希望可以帮助某人解决问题。

#7 楼

请确保您输入的值是IP NAME,而不是NAME IP

如果文件中只有一个条目,而您忽略了注释文本,则可能会发生这种情况。 br />

#8 楼

上面的讨论中遗漏的一个问题是主机文件中的名称不合格(名称不包含句点)。此时,您的网络设置可能会启动,并自动将您自己的域添加到不合格域的末尾。因此,该名称可能无法解析,或者更糟的是,解析为一台完全不同的计算机。

#9 楼

在Windows中,确保HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ DataBasePath指向主机文件的目录。

#10 楼

就我而言,问题是我正在从加密目录中复制主机文件,并以此覆盖etc / hosts。我必须查看属性,然后取消选中“加密文件”复选框。

#11 楼

在(Windows 7)便携式计算机上建立网络连接之前,将忽略我的主机文件。连接到网络后,一切都会按预期进行。显然,没有网络我无法ping主机等。但是我仍然希望Windows从hosts文件中获取其IP地址。没有。即使断开连接后,它仍然可以查找地址,但是在重新启动计算机与首次连接网络之间,它会忽略hosts文件。

(顺便说一下,制表符,空格和无回车符都与据我所知)。