AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 452268
Accepted
Superbest
Superbest
Asked: 2012-11-27 08:28:09 +0800 CST2012-11-27 08:28:09 +0800 CST 2012-11-27 08:28:09 +0800 CST

hosts文件被忽略,如何解决?

  • 772

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

通常,决定更改 hosts 文件,然后发现更改拒绝生效,或者此后甚至忽略 hosts 文件的旧条目。许多“陷阱”错误都可能导致这种情况,弄清楚是哪一个可能会令人沮丧。

当遇到 Windows 忽略主机文件的问题时,可以遵循的综合故障排除协议是什么?


这个问题在SO上有重复,比如HOSTS file being ignored

然而,这些往往是针对特定案例的,一旦发现 OP 所犯的任何错误,讨论就结束了。如果您没有碰巧犯过同样的错误,那么这样的讨论就没有多大用处。因此,我认为拥有一个解决所有与主机相关的问题并涵盖所有情况的通用协议会更有帮助。

windows
  • 13 13 个回答
  • 506596 Views

13 个回答

  • Voted
  1. Best Answer
    Superbest
    2012-11-27T08:28:09+08:002012-11-27T08:28:09+08:00

    根据我自己的经验和我在谷歌搜索时遇到的情况,这里有一些尝试:

    1、你检查过它是否正常工作?

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

    ipconfig /flushdns
    

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

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

    并查看它是否使用了正确的 IP。如果是,则您的 hosts 文件没有问题,问题出在其他地方。

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

    nbtstat -R
    

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

    ipconfig /displaydns | more
    

    注意:nslookup不查看主机文件。看NSLOOKUP和NBLOOKUP给一个IP地址;PING 找到另一个

    2. 基础知识

    • 您的主机文件命名正确吗?它应该是hosts而不是host,等等。
    • 扩展是否正确?它应该没有扩展名(hosts不是hosts.txt) - 如果您已将窗口配置为隐藏已知扩展名,请小心,检查属性以确保:正确的主机文件类型将显示为“文件”。
    • 您是否遵循了正确的语法?您是否不小心在行前加上了#表示注释的井号 ( )?
    • 您是否处理了所有变体(www.example.com并且example.com-最安全的是同时添加两者)?

    3.空白

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

    示例条目,使用 Unicode 控制图片来指示控制字符。(不要将它们复制并粘贴到您的主机文件中!)

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

    可以使用十六进制编辑器插件在Notepad++中查看各个字节。Notepad++ 还将显示特殊字符(查看 -> 显示符号),因此您可以轻松检查空白字符的数量和种类。

    如果您从某处复制并粘贴主机条目,您可能会得到多个空格。理论上 hosts 支持分隔两列的多个空格,但如果没有其他方法可以尝试是另一回事。

    为了安全起见,请确保主机文件中的所有行都使用制表符或空格,而不是两者。

    最后,用一个空行终止文件。

    4.注册表项

    有一个注册表项指定主机文件的位置。据推测,Windows 实际上并不支持将主机文件放在其他位置,但您可能需要检查一下。关键是:

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

    该条目应为:

    %SystemRoot%\System32\drivers\etc
    

    或者,在命令提示符窗口中,键入:

    reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters -v DataBasePath
    

    它应该显示类似于:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
    DataBasePath    REG_EXPAND_SZ    %SystemRoot%\System32\drivers\etc
    

    5.权限

    有时文件权限、文件属性和类似问题存在问题。要使用默认权限重新创建文件:

    1. 在桌面上创建一个新的文本文件。
    2. 在记事本中将当前主机文件的内容复制并粘贴到该文件中。
    3. 保存新的文本文件并将其重命名为hosts.
    4. 将文件复制(不要移动)到您的%SystemRoot%\System32\drivers\etc目录,并覆盖旧文件。

    最后一点很重要:复制有效,移动无效。

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

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

    或者,在命令提示符窗口中,键入:

    icacls %SystemRoot%\System32\drivers\etc\hosts
    

    它应该显示如下内容:

    C:\WINDOWS\System32\drivers\etc\hosts NT AUTHORITY\SYSTEM:(F)
                                          NT AUTHORITY\SYSTEM:(I)(F)
                                          BUILTIN\Administrators:(I)(F)
                                          BUILTIN\Users:(I)(RX)
                                          APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
                                          APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(RX)
    

    你应该看到一个(R)after BUILTIN\Users。

    6.编码

    hosts 文件应该以 ANSI 或 UTF-8 编码,不带 BOM。您可以使用文件 -> 另存为来执行此操作。

    7.代理

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

    要检查,请转至您的 Internet Explorer -> Internet 选项 -> 连接 -> LAN 设置。如果一切都是空白,并且选中了“自动检测设置”,则说明您没有使用代理。

    如果您依赖代理访问网络,因此不想禁用它,您可以通过转到 Internet Explorer -> Internet 选项 -> 连接 -> LAN 设置 -> 代理服务器/高级来添加例外。然后将您的例外添加到例外文本框。例如localhost;127.0.0.1;*.dev

    8.DNS地址

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

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

    这不是 hosts 文件工作所必需的,但如果某些配置奇怪,它可能对您的情况有所帮助。

    9. 本地地址

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

    x.x.x.x myhost.local www.myhost.local
    

    即使www.myhost.local不存在。Windows 不知何故不会附加其工作组或本地域。

    10.行/计数限制

    (添加到此答案以使其可见,因为它已被多次提及)

    Windows 主机文件似乎有行或主机限制。如果一行中的字符超过 150 个或 IP 的主机条目超过 8 个,则新建一行

    例如,而不是:

    1.2.3.4 host1.com host2.com host3.com host4.com host5.com host6.com host7.com host8.com host9.com 
    

    尝试这个:

    1.2.3.4 host1.com host2.com host3.com host4.com host5.com
    1.2.3.4 host6.com host7.com host8.com host9.com
     
    
    • 289
  2. Gustaf
    2013-06-05T04:20:48+08:002013-06-05T04:20:48+08:00

    确保先输入 IP 地址,然后再输入“域”,如下所示:

    127.0.0.1   bo.dev
    127.0.0.1   www.bo.dev
    
    • 21
  3. David Siviour
    2014-10-10T15:29:00+08:002014-10-10T15:29:00+08:00

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

    • 13
  4. Unick
    2014-09-25T12:56:31+08:002014-09-25T12:56:31+08:00

    在我的案例中,我尝试了 Windows 7 创建的文件:C:\Windows\System32\drivers\etc\hosts.ics。

    主机.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 中的设置。

    • 10
  5. PSA4444
    2016-02-18T16:05:20+08:002016-02-18T16:05:20+08:00

    我遇到了同样的问题,主机文件条目被忽略。我尝试了这个和许多其他线程中的所有内容,但没有成功。我想我会发布对我有用的内容,以防其他人遇到这个问题。

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

    注意:单纯打开hosts文件删除内容,验证为0kb再重新添加是不行的。我怀疑该文件存在权限问题。

    • 4
  6. Bird on the Hand
    2015-02-17T13:00:33+08:002015-02-17T13:00:33+08:00

    花了几个小时,可能几天。

    IBM Trusteer Endpoint Rapport 安全性可能会导致此问题。

    我已将 mysite.com 添加到其受信任站点列表中。

    我认为作为其安全性的一部分,它可以防止恶意软件或病毒将您转移到其他站点。

    将 mysite 从受信任站点列表中取出,它不再检查和“更正”我的主机文件转移。

    希望能帮助某人解决他们的问题。

    • 1
  7. user287479
    2015-05-06T23:20:54+08:002015-05-06T23:20:54+08:00

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

    • 1
  8. knb
    2017-07-11T07:21:10+08:002017-07-11T07:21:10+08:00

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

    如果文件中只有一个条目,并且当您忽略注释文本时,就会发生这种情况。

    • 1
  9. Geln Yang
    2015-03-18T22:56:30+08:002015-03-18T22:56:30+08:00

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

    • 0
  10. Janos
    2015-05-19T00:12:02+08:002015-05-19T00:12:02+08:00

    就我而言,问题是我从加密目录复制主机文件并用它覆盖 etc/hosts。我不得不查看属性并取消选中“加密文件”复选框。

    • 0

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果 Windows 服务崩溃,如何自动重新启动它?

  • 无法安排任务(访问被拒绝)

  • 物理机重启时自动重启虚拟机(VMWare)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve