Чому файл / etc / hosts не працює?


29

Я мав певні проблеми з цим і перепробував усе, що знаю, тому зрозумів, що нарешті пора попросити допомогу.

Будь-яка редакція, яку я зробив, /etc/hostsпросто не працює.

Приклад:

julian@ifrit:~$ 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).

Хтось має тут ідею? Це відбувається з елементарнимOS (на базі Ubuntu 12.04) та Ubuntu 13.10 (щодня). Ще не пробував жодної іншої версії.

PS: якщо це не важливо, у мене на цій машині працює сервер NGINX з PHP-FPM та MySQL.

Спасибі заздалегідь :)


Важко пізнати проблему. Якщо доступ до сайту через ім'я хоста (dev.julianfernand.es) не вдається, чи можете ви отримати доступ до нього через ip-адресу (192.168.1.100)?
Пантера

@ bodhi.zazen Так, я можу. Однак оскільки наша компанія не використовує за замовчуванням ідею "IP-доступ до веб-сайту" від спільних хостів, це не працює.
Джуліян Фернандес

Я не пропонував вам отримати доступ до веб-сайтів через ip як довгострокове рішення. Інформація допомагає налагоджувати, хоча вона виключає інші проблеми від брандмауера до маршрутизації до проблем сервера.
Пантера

Що робити, якщо ви введете ip-адресу в адресний рядок свого браузера?
Сергій Колодяжний

Відповіді:


14

У Ubuntu, якщо ви хочете очистити кеш-пам'ять DNS, вам потрібно перезапустити nscdдемон.

Встановити nscdза допомогою наступної команди:

sudo apt-get install nscd

Очистіть кеш DNS в Ubuntu за допомогою наступної команди:

sudo service nscd restart

АБО

sudo service dns-clean start

Довідка: http://www.upubuntu.com/2012/05/how-to-flush-clear-dns-cache-under.html


Також перевірте свою конфігурацію та файл журналу помилок Nginx. Там, де ви переходите на сайт, має бути якась підказка.
Арнольд

7

Для мене працювало наступне: дод

addn-hosts=/etc/hosts

в

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

вбити dnsmasq і

service NetworkManager restart

6

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

hosts:          files mdns4_minimal [NOTFOUND=return] dns

до:

hosts:          dns files mdns4_minimal [NOTFOUND=return]

і зараз це працює, як очікувалося!


1
Ви, мабуть, хочете filesяк перший запис, якщо хочете /etc/hostsмати перевагу над результатами з DNS-серверів.
муру

Це дивно, але це не помилка, я повинен мати саме такий наказ, щоб він працював.
jmarceli

4

Прийнята відповідь працює з 12.04 по 13.04 відключенням dnsmasq, але вона перестала працювати для мене в 13.10. Я знайшов таке нове рішення для 13.10.

Відредагуйте / і т.д. / по замовчуванням / Dnsmasq і зміни ENABLED=1до ENABLED=0і рестарт.


2
у мене немає жодного файлу dnsmasq у вказаному шляху. Я на linux 15.04
Hiren

Прийнятої відповіді більше немає. Про яку відповідь ви говорите?
toon81

3

Від: http://blog.calebthorne.com/2012/08/broken-etchosts-in-ubuntu-1204.html

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

Рішення полягає у відключенні dnsmasqу файлі конфігурації Networkmanager. Відкрийте /etc/NetworkManager/NetworkManager.confі прокоментуйте рядок:

dns=dnsmasq

Мій NetworkManager.confфайл містить таке:

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

[ifupdown]
managed=false

Дивіться також https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/993298


1
Спробував це 13.10 і елементарноOS, все ще нічого. Але дякую за допомогу! :)
Джуліян Фернандес

@JulianFernandes Здається, це не працює 13.10. Я дотримувався цієї поради, і вона спрацювала 12.04, але після оновлення до 13.10, dnsmasq повернувся, і я не можу його позбутися.
Марк Е. Хааз


1

Простий та оновлений

  1. Створіть /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Покладіть лінії, як address=/whatever/1.2.3.4у ній. Дивіться документи (шукайте --address). Wildcards можливі: address/.whatever./1.2.3.4.
  3. Убити dnsmasq( помилка ).
  4. Перезапустіть його: $ service network-manager restart.

0

Здається, ваша установка дуже схожа на мою. У мене є ящик під управлінням Ubuntu як мій сервер офісу та хост розробки. У цьому вікні я запускаю програми Nginx, Apache, Tomcat, Rails та все, що мені потрібно.

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

Я випробував виправлення вище, не маючи успіху.

Що я зробив, це запустити проксі-сервер Squid і додати імена хостів до / etc / hosts на сервері. (Для редагування потрібен перезапуск кальмарів.)

Після цього зробіть відповідні налаштування проксі у вашому браузері чи на панелі керування ОС.


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. Мені не вдалося пінг локального хосту або імені хоста.


У таких випадках мені інколи вдалося змінити "localhost" на "127.0.0.1"
pbr

0

Відредагуйте /etc/nsswitch.conf, прокоментуйте нижче рядка, додавши # перед рядком

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname

і додати

hosts:          files mdns4_minimal [NOTFOUND=return] dns

В основному конфігурація перепорядкована. Тепер процес пошуку домену спочатку проконсультується з файлом, /etc/hostsа потім - з DNS. З конфігурацією за замовчуванням спочатку звертається до DNS перед будь-якими іншими відповідними службами чи файлами.

Для швидкого тестування ви можете використовувати його чи ні

sudo python -m SimpleHTTPServer 80

щоб створити простий сервер HTTP для обслуговування файлів з каталогу, а потім прокоментувати нижче рядок у /etc/hostsфайлі

127.0.0.1      localhost
127.0.1.1      01hw730983

і додати

127.0.0.1       content

потім перейдіть до браузера і введіть content/, якщо ви зможете побачити структуру Директорії, що працює, ще ні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.