通常,一个人决定更改主机文件,并发现更改拒绝采取效果,或者甚至忽略了hosts文件中的旧条目。许多“陷阱”错误可能导致此错误,并且弄清楚哪个错误可能会令人沮丧。
当Windows忽略主机文件的问题时,什么是全面的故障排除协议,
这个问题在SO上有重复项,例如HOSTS文件被忽略
但是,这些趋向于处理特定情况,并且一旦发生发现OP犯下的错误,讨论结束了。如果您不是碰巧犯了同样的错误,那么这样的讨论不是很有用。因此,我认为有一个通用的协议来解决所有与主机有关的问题,将涵盖所有情况,这会有所帮助。
#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文件。(顺便说一下,制表符,空格和无回车符都与据我所知)。
评论
另外,就像其他人发布的一样,请勿使用“ nslookup”进行测试,因为该命令将忽略hosts文件。而是使用“ ping”。HOSTS文件的可能重复项被忽略
我终于找到了解决方法。在chrome中,chrome:// flags /->安全DNS查找->禁用。