Файл OS X 10.10.1 / etc / hosts & / private / etc / hosts игнорируется и не разрешается

40

Как видно из названия, работает OS X 10.10.1. если у меня есть запись в моем файле hosts и я делаю a digили nslookupона все еще показывает другой IP, чем тот, который находится в моем файле hosts, даже после попытки сброса различных кэшей.

Я попробовал следующее ..

  1. очистите кэши mdns и udns, запустив:
    1. sudo discoveryutil mdnsflushcache;
    2. sudo discoveryutil udnsflushcaches;
  2. очистить кэш используя dscacheutil -flushcache
  3. перезагрузите discoveryd.plistфайл
    1. sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist
    2. sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist

мой файл hosts выглядит следующим образом ..

% cat /private/etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##

127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0 localhost
166.78.60.102   admin.devsite1.com
gorelative
источник
3
Кажется, Yosemite не использует хосты так же, как раньше; он также не сбрасывает кэши так же, & mDNS отошел на задний план - у этого есть целая куча болтовни на эту тему - forums.macrumors.com/showthread.php?t=1741422 Редактировать ааа ... я думаю вы уже дошли до azchipka.thechipkahouse.com/...
Tetsujin
спасибо, да я читал , что уже .. если это то , как OS X будет .. его вшивой: \
gorelative
1
Я рад, что мне не нужно полагаться на хосты на Mac, tbh; Я всегда играю в Win, когда мне нужно это делать - хотя это не единственное, что удерживает меня от Yosemite прямо сейчас :(
Tetsujin
Да, мой rmbp является основной машиной для разработки, которую я, к сожалению, использую для веб-разработки / sysadmin, и мне нужно разобраться с этим, иначе я вернусь к индивидуалистам.
Горелатив
Другие могут захотеть просто отключить ipv6 на своих рабочих станциях, я нашел это, которое объясняет ключ: technipages.com/how-to-disable-ipv6-in-macos-sierra - Однако, даже после отключения ipv6 на моем компьютере, проблема сохранялась ,
Джеймс Т Снелл

Ответы:

61

/ private / etc / hosts, кажется, работает нормально для меня в Yosemite (версия 10.10.1). Нет необходимости очищать кэш или сбрасывать discoveryd(преобразователь DNS в Yosemite); sudo fs_usage | grep private/etc/hostsпоказывает discoverydчтение файла сразу после сохранения изменений в нем.

[Обновление: discoverydиспользовалось только в версиях OS X 10.10.0 - 10.10.3. Как в более ранних, так и в более поздних версиях, mDNSResponderпредоставляет ту же функцию ... и также сразу замечает изменения в / etc / hosts.]

Однако dig, nslookupи hostне будет отображаться записи в нем , потому что они обходят распознаватель системы и сделать сырые DNS поиск. Они всегда так делали, так что это не ново в Йосемити. «Официальный» способ поиска через системный преобразователь в OS X - использовать dscacheutil:

dscacheutil -q host -a name www.example.com

... но так как это мучительно многословно, я, как правило, просто использую pingвместо этого (а затем смотрю на первую строку, где перечислены IP-адреса, которые проверяются). Начиная с версии 10.9, вы также можете использовать вкладку «Утилиты поиска» (до этого она использовалась digи поэтому обходила политику поиска системы).

Кстати, пожалуйста, не обращайте внимания на нить макрумор, которую связывал Тецудзин; в нем полно людей, которые не совсем понимают, что делают, и не понимают результатов своих собственных ошибок.

Гордон Дэвиссон
источник
1
спасибо Гордон, да я понял , после того, как я отправил это , что dig, nslookupи hostне использовать локальное разрешение DNS. Это, как говорится, /etc/hostsработает, как ожидалось ..
Gorelative
Если я обновлю свой /etc/hostsфайл или мой /private/etc/hostsфайл, то он вообще не будет отражаться ни с dscacheutil -q host -a name www.example.comкакой-либо другой командой ..
Поездка
3
@Trip убедитесь, что добавленные вами записи правильно отформатированы: IP-адрес, затем пробел или табуляция, затем имя, затем перевод строки в конце строки. Попробуйте распечатать файл hosts, cat -vet /etc/hostsчтобы сделать видимыми обычно невидимые символы. Каждая строка должна выглядеть как «127.0.0.1 ^ Inetsecuritybureau.com $» («^ I» - это вкладка, а «$» - перевод строки) или «127.0.0.1 netsecuritybureau.com $». Если вы видите «^ M» (возврат каретки) перед «$», у вас есть отформатированный текст в DOS / Windows, и вам нужно удалить возврат каретки.
Гордон Дэвиссон
Ах, вау, большое спасибо за помощь. Я последовал вашему примеру, чтобы убедиться, что это табуляция или пробел. Моя строка гласит: « M127.0.0.1^Iyoutube.com^M^MЯ тогда выполнил, dscacheutil -flushcache; sudo killall -HUP mDNSResponderи при переходе на youtube.com он по-прежнему вызывает YouTube, а не localhost.
Поездка
@Trip Существует несколько способов очистки невидимых символов, таких как символы в командной строке, но я порекомендую графический редактор TextWrangler - используйте меню «Вид»> «Отображение текста»> «Показать невидимки», чтобы увидеть (и отредактировать) такие вещи, как эти. возврат каретки. Кроме того, он бесплатный, и имеет возможность показывать / открывать невидимые файлы и папки (например, / etc), а также использовать права администратора для редактирования системных файлов.
Гордон Дэвиссон
17

Я обнаружил еще одну морщинку с этой проблемой.

Чтобы решить проблему, с которой я столкнулся, мне пришлось ДОБАВИТЬ записи в файле хостов в стиле IPv6.

Похоже, что Safari пропустит записи IPv4, если у вас есть настройки сети IPv6.

Вы должны добавить дубликаты записей, которые разрешают IPv6 адрес локального хоста в / etc / hosts.

Запись IPv4 127.68.56.101 facebook.com

например, запись IPv6 fe80::1%lo0 facebook.com

и т.п.

Дж. Б. Смит
источник
1
Обратите внимание, что я успешно заставил этот работать с использованием самых коротких IP-адресов: 0.0.0.0 и :: 1
Бен Морроу
спасибо, сработало и у меня. царапал мою голову после восстановления конфигов vhosts / apache после обновления. оценили.
Гэвин
Да, это исправило это и для меня.
advert2013
1

Мой файл hosts продолжал игнорироваться после того, как я отредактировал текстовое редактирование. Я попробовал несколько способов исправить окончания строк, добавив записи IPv6 к существующим записям IPv4, но безуспешно после ответа JB Smiths выше . Я подозреваю, что его ответ сработает, если моя компания поддерживает IPv6, который я узнал после моих попыток.

Единственное решение, которое сработало для меня, - использовать этот бесплатный плагин GUI для редактирования файла hosts.

https://github.com/specialunderwear/Hosts.prefpane/blob/master/README.mdown

Danger14
источник
1

Я нашел эту статью, потому что Yosemite 10.10.5 не принимал изменения моего файла hosts, и я ничего не мог сделать, чтобы это исправить. (Я перезагрузился, попытался очистить кеш, следовал всем советам, которые я мог найти в Интернете и т. Д. И т. Д.).

Ответ был настолько прост, что на самом деле смущает, но я думал, что поделюсь. Я использовал textedit для редактирования файла hosts, и он взял на себя смелость сохранить файл как hosts.txt. Обычно я заметил бы что-то подобное, но я использую свежую установку Yosemite и еще не включил «показывать все расширения файлов», поэтому не выглядело, как будто имя файла изменилось, когда я просматривал его на своем рабочем столе.

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

Чтобы включить отображение расширений файлов, перейдите в Finder> «Установки»> «Показать все расширения файлов».

Чтобы остановить TextEdit от добавления расширения .txt к файлам, откройте файл в разделе « Редактирование текста» и выберите « Файл»> «Сохранить как» (если вы не видите пункт меню « Сохранить как» , удерживайте нажатой клавишу «Option» после нажатия « Файл» , и « Сохранить как» следует появляются в меню). Ищите опцию Если расширение не предоставлено, используйте «.txt» и отмените его выбор.

Сандры
источник
0

Я полагаю, что Apple признает это как ошибку (я отправил одну сегодня). Я заметил, что новые записи /etc/hostsпринимаются, но изменения существующих записей игнорируются. Итак ... изменение имени хоста записи (например, web1 на web1a) предоставило мне обходной путь.

Старая / etc / hosts запись: 54.173.164.18 web1

НОВАЯ запись / etc / hosts: 54.174.161.12 web1a

отметка
источник
sudo dscacheutil -flushcache - очистит кэш службы каталогов.
Кевин
0

В моем случае я бы настроил .ssh / config

#Host *.ourdemo.ca
  User jumpy
  ProxyCommand ssh ourjumpbox.ca -W %h:%p
Мартин Кливер
источник
Не могли бы вы объяснить, что делает файл конфигурации и как это связано с вопросом?
Кланомат
1
Вопрос был в том, почему была проигнорирована запись в локальном файле / etc / hosts. В моем случае это игнорировалось, потому что я дал указание туннелировать весь трафик на набор машин (* .ourdemo.ca) через прокси-сервер (ourjumpbox.ca). SSH послушно проксировал соединение, так что в конечном итоге это был файл / etc / hosts прокси, используемый для разрешения адреса, а не мой локальный файл / etc / hosts.
Мартин Кливер
0

У меня была очень похожая проблема, в которой я получил по почте две строки для добавления в мой /etc/hosts

Домен содержал -подобноеmy-domain.com

Проблема оказалась в почтовом клиенте отправителя, не говоря уже о MS Outlook, который преобразовал ASCII -в длинный -символ, который Microsoft так сильно любит использовать встроенную автоматическую коррекцию, чтобы заменить -их -.

Файл hosts выглядел идеально, и эту проблему было трудно найти. Когда я удалил строки и написал их вручную, они начали работать.

Это было так трудно понять, что я углубился в то, почему клиент MacOS должен игнорировать файл hosts и перейти непосредственно к разрешению имен.

Marco
источник
0

Просто была эта проблема. Это было вызвано копированием / вставкой из hipchat вместо написания адреса.

Процесс копирования добавил некоторые пробелы вместо пробелов и вызвал проблему.

Переписывание строки решило проблему.

Tata
источник
0

Я использую приложение SelfControl (на самом деле на macOS mojave 10.14.4) уже довольно давно и решил проверить, как SelfControl делает свои записи ... они выглядят так:

0.0.0.0 xyz.com
:: xyz.com
0.0.0.0 www.xyz.com
:: www.xyz.com

основываясь на этом, я изменил все на свой локальный хост, так

127.0.0.1
::1

работает.

needlol
источник
Я не уверен, как это отвечает на вопрос вообще. Это похоже на случайное наблюдение, не связанное с вопросом.
Тецудзин
1
Можете ли вы добавить некоторые детали о том, где именно вы что-то изменили, и как это связано с вопросом?
холме
Вопрос был в том, почему файл hosts игнорируется с 10.10.1 ... Я находился в той же ситуации, что и ручные записи игнорировались, но записи, сделанные через приложение SelfControl, работали как задумано. Чего не хватало в моих предыдущих записях, так это второй части, домены с "www.". Не смог выяснить, что еще не так с моими записями, так как до 10.10.1 все работало нормально.
Needlol