Модификация / etc / hosts не работает должным образом. Что делать?


10

Я добавил эти строки в файл hosts:

127.0.0.1 localhost adobe.com
127.0.0.1 adobe.com

Он отлично работает на окнах. Но в Ubuntu 11.10, когда я пытаюсь получить к нему доступ через Firefox, сайт открывается.

Google chrome поддерживает конфигурацию / etc / hosts. Google Chrome отображает:

«Это работает! Это веб-страница по умолчанию для этого сервера. Программное обеспечение веб-сервера работает, но контент еще не добавлен».

Ответы:


10

Я могу подтвердить вашу проблему, которая, как представляется, затрагивает, между Chrome и Firefox, только Firefox. Это ответ для пользователей, затронутых одной и той же проблемой, и если они затронуты обоими / всеми браузерами. Выполните следующие шаги, чтобы это работало правильно. Предполагая, что вы уже отредактировали /etc/hostsфайл, для которого я рекомендую следующие 2 способа редактирования файла:

  • Gedit - gksudo gedit /etc/hosts(Теперь у вас есть дружественный для GUI способ редактирования файла. Gksu, который предоставляет gksudo, больше не поддерживается в официальных репозиториях 18.04 и более поздних версиях.)
  • nano - 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, и он работал. Вы изменили /etc/hostsмежду наличием и отсутствием записи для adobe.com, и она работала каждый раз, когда вы меняли ее. Но потом вы пошли с Firefox, он мог сработать в первый раз, но после изменения hostsфайла туда-сюда он как-то перестал работать. Это означает, что это проблема с кешем или проблема с правильным именем.

В случае Firefox и определения имени Firefox добавляет префикс www на веб-сайт Adobe, чтобы он выглядел как «www.adobe.com», а в Chrome - «adobe.com». Они оба указывают на одно и то же место, а префикс www как раз говорит о том, что посещаемое вами место - это веб-сервис. Но в случае вашей проблемы вам нужно добавить это в 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-кешем, вы можете установить надстройку для проверки DNS-кеша в Firefox. Я рекомендую DNS-кэш .

введите описание изображения здесь

После перезапуска Firefox вы должны увидеть шестеренку внизу (аналогично шестерёнке Ubuntu в верхнем правом углу). Вы можете щелкнуть левой или правой кнопкой мыши Cog, и вы должны увидеть такие опции, как Включить / Отключить DNS и Очистить его. Это поможет в случае проблемы, связанной с DNS-кешем Firefox. Играть с этим.

Я думаю, что у меня есть все способы, чтобы вы могли решить это. Если я что-то пропустил, дайте мне знать.


Если Firefox не поддерживает hostsфайл локальной машины (то есть, если проблема все еще возникает даже после wwwдобавления домена с поддоменом и даже после обновления страницы), я рекомендую сообщить об этом как об ошибке. (Я не уверен , что это будет ошибкой в , так как Firefox предположительно использует средства разрешения DNS операционной системы, которые делают , или , как предполагается, уважать его. Но вы можете сообщить об этом против firefoxв Ubuntu , а затем дальнейшее устранение неисправностей может , вероятно , перенастроить его оттуда.)
Элия ​​Каган

@EliahKagan Это также зависит от того, где и как находится хостинг / домен. Некоторые сайты предлагают возможность включить использование субдомена www, а некоторые не имеют его предварительно настроенного, поэтому при попытке зайти на www.eliah.com это не работает, но eliah.com делает.
Луис Альварадо

Ну конечно; естественно. Я не говорю, что www.foo.netдолжно работать только потому, что foo.netработает. Скорее, если foo.netи www.foo.netоба определены в 127.0.0.1in /etc/hosts, ввод foo.netв адресной строке веб-браузера и нажатие клавиши ввода должны привести к попытке браузера открыть соединение с 127.0.0.1:80. Если этого не произойдет, где-то есть ошибка.
Элия ​​Каган

@EliahKagan - Ах! да да конечно. В том случае, если он не работает, компьютер одержим демоном. Нам либо нужен экзорцист и много святой воды, либо лучшая диагностика проблемы.
Луис Альварадо

Экзорцист + святая вода и лучшая диагностика кажутся самым разумным ходом. :)
Элия ​​Каган

7

Я знаю, что этой теме уже год, но я наткнулся на нее в поисках ответов на ту же проблему. Я наконец нашел решение! Оказывается, что /etc/hostsфайл полностью обойден DNS. Чтобы изменить это, вы должны отредактировать /etc/nsswitch.confи включить filesв hosts. Пример ниже:

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 больше не нуждается в этой информации, но она все еще хороша для тех, кто ищет ответы на эту проблему.

Вы также должны перезапустить, чтобы это вступило в силу


У меня есть «файлы mdns4_minimal [NOTFOUND = return] dns mdns4» в Ubuntu 12.04, но / etc / hosts по-прежнему не работает ... похоже, я столкнулся с другой проблемой.
Шнацель

Можете ли вы вставить полный код?
Сэм Чонбури

Вот полный конфигурационный файл: pastebin.com/hDBGrrwn Полагаю, это Ubuntu 12.04 по умолчанию
Shnatsel

Все выглядит правильно. Что вы пытаетесь сделать?
Сэм Чонбури

Я не получил: что мне добавить в этой строке? /etc/hosts? hosts? Или что?
Привет, Ангел,

2

Я полагаю, etc/hostsчто используется в сетевом программном стеке гораздо чаще, чем сам браузер. Т.е. изменения в этом файле должны повлиять на любой браузер.

То, что вы видите, может быть результатом кэширования DNS-записей в Firefox - т.е. вы открыли веб-сайт в Firefox, Firefox запомнил IP-адрес, соответствующий домену adobe.com, изменил /etc/hostsи перезагрузил страницу - Firefox не выдает новый DNS-запрос и использует вместо этого кэшированные данные. Затем вы открываете Chrome, он делает новый DNS-запрос и использует все, что вы ввели в /etc/hostsкачестве IP-адреса для adobe.com

Перезапуск Firefox должен решить проблему.


2

Все ответы великолепны, но самый короткий способ исправить это:

после изменения / etc / hosts (и, возможно, перезапуска Firefox) перезагрузите проблемную вкладку с помощью Ctrl+Shift+R. Он будет обходить любой тип кэша, который может иметь Firefox.


1

Моя проблема была, у меня было несколько записей для одного доменного имени. Система увидела только первый случай.

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

0

Не могли бы вы попробовать:

  1. Отредактируйте файл / etc / hosts.
  2. Добавить следующие строки

     # /etc/hosts
     127.0.0.1  localhost
     127.0.1.1  myhost01
     127.0.1.2  myhost02
    

0

в Ubuntu 14.04 изменение файла / etc / hosts так, чтобы он работал только на одном хосте на строку, я изо всех сил пытался часами работать с хостом хоста IP, а затем переключался на хост IP в каждой строке, и это работало>. <


0

У меня была такая же проблема на разных версиях Ubuntu. Последний поднял свою уродливую голову 17.04 и 16.04. Я обнаружил, что мне нужно отформатировать файл hosts следующим образом:

127.0.0.1 localhost

127.0.0.1 www.facebook.com facebook.com

т.е. вам нужно поместить в URL как WWW, а затем снова без. Я понятия не имею, почему это работает. Просто сохраните файл, а затем проверьте связь с URL-адресом как в:

пинг www.facebook.com

и он должен разрешить адрес обратной связи или любой другой адрес, который вы хотите.eg:

80.82.xxx.xxx www.example.com example.com

Работал на меня.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.