/ etc / hosts修改无法正常工作。 该怎么办?

我已将这些行添加到hosts文件中:

127.0.0.1 localhost adobe.com 127.0.0.1 adobe.com 

它在Windows上完美运行。 但是在Ubuntu 11.10中,当我尝试使用Firefox访问它时,该网站正在打开。

谷歌Chrome虽然支持/ etc / hosts配置。 Google Chrome正在显示:

“它有效!这是该服务器的默认网页。网络服务器软件正在运行,但尚未添加任何内容。”

我可以确认它似乎影响Chrome和Firefox之间的问题,只有firefox。 对于受同一问题影响且受所有浏览器影响的用户,这是一个答案。 请按照以下步骤使其正常工作。 假设您已经编辑了/etc/hosts文件,我建议使用以下两种方法来编辑文件:

Gedit Way – gksudo gedit /etc/hosts (你现在有一个GUI友好的编辑文件的方式)
Nano Way – sudo nano /etc/hosts (你现在有一个终端友好的编辑文件的方式)

你有例如:

 127.0.0.1 localhost adobe.com 

要么

 127.0.0.1 localhost 127.0.0.1 adobe.com 

(两者都是一样的)

您首先测试它,看它是否从终端正常工作。 键入ping adobe.com ,它应该响应IP分配给它。 在这种情况下,它应该以127.0.0.1响应。 这意味着没关系。

然后我们继续浏览器测试。 您测试了Chrome,它运行良好。 您在拥有和没有adobe.com条目之间更改了/etc/hosts ,并且每次更改它都会有效。 但后来你使用firefox,它可能第一次工作,但在来回更改hosts文件之后,它会以某种方式停止工作。 这意味着它是一个缓存问题或解决正确名称的问题。

在Firefox和解析名称的情况下,Firefox将前缀www添加到adobe网站,因此它看起来像“www.adobe.com”,但在Chrome上它看起来像这个“adobe.com”。 它们都指向同一个地方,www前缀就是告诉您正在访问的地方是一个Web服务。 但是在你遇到问题的情况下,你需要将它添加到hosts文件中,这样当Firefox添加前缀www时就可以了。 所以它看起来像这样:

 127.0.0.1 localhost 127.0.0.1 adobe.com www.adobe.com 

或者只是一样

 127.0.0.1 localhost adobe.com www.adobe.com 

注意:请记住,您必须按F5刷新站点/ firefox选项卡或关闭选项卡并再次打开它进行测试。 不知怎的,像疯了似的按ENTER也行不通。

这应该解决一些用户的问题但是假设到目前为止你还没有解决问题,我们可以测试它可能是什么。

我们在这里有几个级别的缓存来检查。 你有你的程序缓存,在这种情况下是Firefox,然后你有你的系统缓存,在这种情况下是Ubuntu,然后你有你的硬件缓存,在这种情况下你的路由器。

据我所知,Ubuntu Desktop版本默认没有安装DNS缓存服务。 最常见的是nscd ,如果你安装了一个简单的/etc/init.d/nscd restart就行了。 但对于大多数人来说,他们不会安装这个。 所以我们可以推翻Ubuntu系统故障。

这留下了路由器和浏览器。 对于路由器,您必须将其配置为停止DNS缓存或重新配置它以解决此问题。 这完全取决于路由器型号,制造商等。并非所有路由器都执行DNS缓存,但有些会这样做,您需要在配置中查看,如果它有此选项并且启用了该选项。 但是,让我们假设您没有启用DNS缓存的路由器。

这离开了浏览器。

要查看Firefox是否与DNS缓存不良,您可以安装一个Addon来检查Firefox中的DNS缓存。 我推荐的是DNS缓存 。

在此处输入图像描述

重新启动Firefox后,您应该在底部看到一个齿轮(类似于右上角的Ubuntu齿轮)。 您可以左键单击或右键单击Cog,您应该看到启用/禁用DNS和刷新它等选项。 这将有助于问题是Firefox DNS缓存。 玩它。

我想我已经找到了解决这个问题的所有方法。 如果我错过了什么让我知道。

[这个工作!]

我知道这个post已经有一年了,但我偶然发现它正在寻找同样问题的答案。 我终于找到了解决方案! 事实certificate,DNS完全绕过/etc/hosts文件。 要更改此设置,您必须编辑/etc/nsswitch.conf并在hosts下包含files 。 示例如下:

 passwd: compat group: compat shadow: compat hosts: dns files myhostname <-- this line here. networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis 

这将确保/etc/hosts文件包含在名称解析检查中。 它将首先检查DNS,然后检查hosts文件。 我确信OP不再需要这些信息,但对于寻求这个问题答案的人来说,这仍然是个好消息。

我相信etc/hosts在网络软件堆栈中比浏览器本身更多地使用。 即该文件中的更改应该影响任何浏览器。

您所看到的可能是Firefox缓存DNS条目的结果 – 即您在Firefox中打开了网站,Firefox记住了与adobe.com域相对应的IP地址,您修改了/etc/hosts并重新加载了页面 – Firefox没有发布新的DNS查询并使用缓存的数据。 然后打开Chrome,它会生成一个新的DNS查询,并使用您在/etc/hosts输入的任何内容作为adobe.com的IP地址

重新启动Firefox应该可以解决问题。

所有答案都很棒,但修复它的最短路径是:

修改/ etc / hosts(并可能重新启动Firefox)后,使用Ctrl+Shift+R重新加载有问题的选项卡。 它将绕过Firefox可能拥有的任何类型的缓存。

我的问题是,我有相同域名的多个条目。 系统只看到了第一次出现。

 127.0.0.1 domain1.com domain2.com domain3.com # <-- WENT UNNOTICED # . # . 192.168.1.21 domain1.com # <-- DOESN'T WORK 

你能尝试一下:

  1. 编辑/ etc / hosts文件。
  2. 添加下一行

      # /etc/hosts 127.0.0.1 localhost 127.0.1.1 myhost01 127.0.1.2 myhost02 

在Ubuntu 14.04更改/ etc / hosts文件,每行只有一个主机为我工作,我努力工作几个小时与IP主机主机,而不是改为每个线路上的IP主机,它工作>。

我在各种版本的Ubuntu上遇到了同样的问题。 最新的一个在17.04和16.04开始了它的丑陋头脑。 我发现我必须像这样格式化hosts文件:

127.0.0.1 localhost

127.0.0.1 http://www.facebook.com facebook.com

即你需要在url中输入www然后再没有。 我不知道为什么会这样。 只需保存文件,然后pingurl,如下所示:

ping http://www.facebook.com

它应解析为环回地址或您想要的任何其他地址.eg:

80.82.xxx.xxx http://www.example.com example.com

为我工作。