Почему файл / etc / hosts не работает?

26

У меня были проблемы с этим на некоторое время и я попробовал все, что знаю, поэтому решил, что наконец-то пришло время попросить о помощи.

Любое редактирование, которое я делаю для /etc/hosts , просто не работает.

Пример:

[email protected]:~$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   ifrit
192.168.1.100   dev.julianfernand.es

В приведенном выше примере, когда я обращаюсь к dev.julianfernand.es (этого не существует), он должен загружаться с 192.168.1.100 .

Если я пингу, он работает нормально. Однако, когда я получаю доступ к dev.julianfernand.es с помощью Google Chrome или Firefox, это не так.

Теперь, после того как я перезапустил пару раз, он работает. Но поскольку я работаю в управляемой хостинговой компании WordPress, я занимаюсь многими ситуациями, когда мне приходится редактировать свой файл, чтобы увидеть сайт клиента на нашем сервере.

Я просто не могу перезапустить свой компьютер. Это неэффективно. Перезапуск сетевой службы не работает, то же самое для очистки кеша (даже внутреннего кэша DNS Chrome).

Есть ли у кого-нибудь идея? Это происходит с elementaryOS (на основе Ubuntu 12.04) и Ubuntu 13.10 (ежедневно). Не пробовал ни с какой другой версией.

PS: , если это так, у меня есть сервер NGINX, работающий на этом компьютере с PHP-FPM и MySQL.

Заранее спасибо:)

    
задан Julian Fernandes 18.09.2013 в 15:59
источник

8 ответов

13

В Ubuntu, если вы хотите сбросить DNS-кеш, вам нужно перезапустить демон nscd .

Установите nscd , используя следующую команду:

sudo apt-get install nscd

Очистить кеш DNS в Ubuntu Используя следующую команду:

sudo service nscd restart

ИЛИ

sudo service dns-clean start

Ссылка: Ссылка

    
ответ дан Arnold 18.09.2013 в 16:42
6

Для меня решение заключалось в том, чтобы отредактировать файл /etc/nsswitch.conf (вы можете использовать команду sudo vim /etc/nsswitch.conf ). Я изменил строку:

hosts:          files mdns4_minimal [NOTFOUND=return] dns

в

hosts:          dns files mdns4_minimal [NOTFOUND=return]

, и теперь он работает как ожидалось!

    
ответ дан jmarceli 23.04.2015 в 21:22
5

Следующие работали для меня: добавить

addn-hosts=/etc/hosts

в

/etc/NetworkManager/dnsmasq.d/hosts.conf

убить dnsmasq и

service NetworkManager restart
    
ответ дан Ruediger 20.02.2016 в 18:23
4

Принятый ответ работает с 12.04 по 13.04, отключив dnsmasq , но он перестал работать для меня в 13.10. Я нашел следующее новое решение для 13.10.

Измените свой / etc / default / dnsmasq и измените ENABLED=1 на ENABLED=0 и перезапустите.

    
ответ дан Mark E. Haase 18.02.2014 в 22:18
3

От: Ссылка

Новая «функция» в настольной версии Ubuntu 12.04 предназначена для использования dnsmasq в качестве плагина для NetworkManager для локального DNS. Dnsmasq предназначен для ускорения работы служб DNS и DHCP, но имеет один неудачный побочный эффект: dnsmasq кэширует локальный DNS и игнорирует изменения в /etc/hosts . Я часто вношу изменения в файл hosts во время работы на веб-сайтах, поэтому эта «функция» была довольно неприятной.

Решение состоит в том, чтобы отключить dnsmasq в файле конфигурации Networkmanager. Откройте /etc/NetworkManager/NetworkManager.conf и закомментируйте строку:

dns=dnsmasq

Мой файл NetworkManager.conf содержит следующее:

[main]
plugins=ifupdown,keyfile
# dns=dnsmasq

[ifupdown]
managed=false

См. также Ссылка

    
ответ дан Panther 18.09.2013 в 17:32
1

Простой и обновленный

  1. Создать /etc/NetworkManager/dnsmasq.d/hosts.conf .
  2. Поместите в него строки, такие как address=/whatever/1.2.3.4 . См. документы . (ищите --address ). Возможны подстановочные знаки: address/.whatever./1.2.3.4 .
  3. Убейте dnsmasq ( ошибка ).
  4. Перезагрузите его: $ service network-manager restart .
ответ дан mightyiam 11.08.2015 в 22:28
0

Похоже, что ваша установка очень похожа на мою. У меня есть ящик с Ubuntu как мой офисный сервер и хост разработки. В этом окне я запускаю приложения Nginx, Apache, Tomcat, Rails и все, что мне нужно.

Из моего Mac я могу просто добавить запись хоста и загрузить сервер с любым именем, которое мне нужно, но с ElementaryOS-клиентом, который не работает.

Я пробовал исправления выше, без успеха.

Что я сделал, так это запустить Squid Proxy Server и добавить имена хостов в / etc / hosts на сервере. (Редактирование требует перезапуска кальмара.)

После этого сделайте соответствующие настройки прокси-сервера в своем браузере или панели управления ОС.

    
ответ дан Jim O'Connell 05.02.2014 в 22:01
0

Проверьте права доступа к файлу /etc/hosts .

На моем облачном сервисе после клонирования сервера разрешения на файл хостов изменились с 644 на 600 , поэтому файл не мог быть прочитан apache ( www-data ), я думаю. Я побежал sudo chmod 644 hosts из /etc и зафиксировал его.

Проблема началась с:

MongoConnectionException Failed to connect to: localhost:27017: Previous connection attempts failed, server blacklisted. 

Я отследил его до переменной сервера в MongoClient, указывая на localhost. Я не смог выполнить ping localhost или имя хоста.

    
ответ дан user228414 01.10.2015 в 18:03