Очевидно, мой файл hosts игнорируется.
Это содержит:
127.0.0.1 локальный хост.localdomain локальный хост
127.0.0.1 mydomain.com
127.0.0.1 нигде
Если я пингую локальный хост или «нигде», я получаю ошибку «неизвестный хост». Если я пингую mydomain.com, пинг завершается успешно, но он сообщает IP-адрес в Интернете (с внешнего сервера имен) для mydomain.com.
На сервере работает выносливая Ubuntu. Есть ли способ отключить (и снова включить) файл / etc / hosts?
Я нашел проблему.
Файл / etc / hosts имел чрезмерно ограничительные права доступа -rw ------ (я считаю, что это восьмеричное число 600). Изменение этого режима на 644 устранило проблему.
Мои тесты с ping проводились с обычным Priv, и файл hosts не читался. Моя первоначальная проблема заключалась в правильном запуске postgresql; он запускается с привилегиями root, но, очевидно, теряет привилегии перед запуском своих дочерних процессов для автоочистки и тому подобного, поэтому к тому времени, когда ему потребовалось разрешить домен, он не смог прочитать файл hosts.
Спасибо всем, кто ответил. Это было поучительно.
Проверьте /etc/nsswitch.conf
У вас должна получиться такая строка:
hosts: files dns
если часть "файлы" отсутствует, / etc / hosts не будет проверяться.
файл hosts иногда странный на каком-то дистрибутиве, попробуйте поместить все псевдонимы localhost в одну строку
как это :
127.0.0.1 localhost.localdomain localhost mydomain.com nowhere
Я просто потратил час, потому что обновил копию и вставил в мой /etc/hosts
имел tab
вместо пробела, разделяющего ip и имя. Так что еще одна вещь, которую стоит проверить, игнорируется ли запись без видимой причины.
Не уверен в специфике ubuntu, но похоже, что ваш локальный преобразователь настроен неправильно. Ты должен попытаться man resolv.conf
или man nslookup
чтобы увидеть, как его настроить.