Не работает команда host

Поиск DNS завершается ошибкой, например, `ping`, но работать с` host`

Использование сети Windows с помощью Responder и MultiRelay

Я использую pfSense 2.0rc3, и я настроил его в качестве сервера пересылки DNS и включил «Регистрировать аренду DHCP в сервере пересылки DNS», и насколько я понимаю, это все соответствующие настройки для получения DNS-сервера для локального поиска.

Он работает как ожидалось с Linux, в частности, я могу запускать host abc и ping abc (и другие приложения), и все они работают как положено.

Однако в Mac OS X Lion 10.7 это не работает должным образом. В частности, только поисковые запросы с host команда вроде работает, т.е.

Почему поиск abc работать при использовании host команда, но не с ping (и другие приложения)?

Спасибо за прочтение.

  • Я оказался в такой же ситуации на новом Yosemite (10.10) MBP. После долгого поиска и настройки вот ответ, который сработал: apple.stackexchange.com/a/152892 Для записи без какой-либо конфигурации —AppendSearchDomains

Почему они сделали это изменение, я не знаю, но на какое-то время это сводило меня с ума.

Я не знать почему все работает для хоста, но не пинг, но я считать это связано с характером этих двух утилит. Ping — это простая (хотя и очень полезная) диагностическая утилита для отбрасывания пакетов по сети, которые должны быть возвращены вам. Функциональность поиска имени хоста — это всего лишь побочный эффект работы и передана рекурсивному преобразователю системы (я полагаю — я не проверял, проверяя связанные библиотеки или что-то в этом роде). Основная задача хоста — выполнять разрешение DNS-имен, поэтому он реализует свой собственный рекурсивный преобразователь.

Рекурсивный преобразователь Apple — это mDNSResponder. По какой-то причине версии mDNSResponder в Lion требуется параметр командной строки «-AlwaysAppendSearchDomains», чтобы вести себя так же, как в Snow Leopard (по крайней мере).

Вот быстрый способ исправить это:

(В начале предпоследней строки выше должно быть два символа табуляции, но я не мог понять, как заставить этот маленький редактор вставлять вкладки, поэтому я добавил 16 пробелов. Любой из них должен работать, но вкладки лучше соответствовать интервалу исходного файла.)

Это добавит аргумент «-AlwaysAppendSearchDomains» в файл plist запуска mDNSResponder (и сохранит резервную копию), но, поскольку это управляется launchd, этой системе необходимо указать перезапуск mDNSResponder.

Теперь, если вы проверите свой запущенный процесс mDNSResponder, вы должны увидеть, что он работает с вашим новым аргументом:

(Реквизиты для http://www.makingitscale.com/2011/fix-for-broken-search-domain-resolution-in-osx-lion.html и http://kavassalis.com/2011/07/wtf-bug -in-os-x-10-7 /, где я нашел ответы на эту проблему.)

  • Это исправление также работает для Mountain Lion (10.8). Я просто применил его к своему ноутбуку.
  • Здорово! Рад, что смог помочь.
  • 1 К вашему сведению: это не сработало при Йосемити. Если вам нужен AlwaysAppendSearchDomains в Йосемити, попробуйте: apple.stackexchange.com/a/157017/65787 Это НЕ решило для меня проблему .local в Йосемити, но это помогло =) apple.stackexchange.com/a/152892
  • Не работает в Эль-Капитане. И кажется, что проще сделать sudo defaults write /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist ProgramArguments -array-add ‘–AlwaysAppendSearchDomains’
  • У меня такая же проблема с именем хоста, которое разрешает мой внутренний DNS-сервер. Это не просто команда хоста. Dig также подтверждает, что локальные DNS-серверы правильно разрешают IP-адрес хоста. Однако ping, Safari, Chrome, ssh и т. Д. Ведут себя так, как будто имя хоста неизвестно.

На странице руководства host (1):

Команда host не использует имя хоста и разрешение адреса или механизмы маршрутизации запросов DNS, используемые другими процессами, работающими в Mac OS X. Результаты запросов имени или адреса, напечатанных хостом, могут отличаться от результатов, найденных другими процессами, использующими Mac. Собственные механизмы разрешения имен и адресов OS X. Результаты DNS-запросов также могут отличаться от запросов, которые используют библиотеку маршрутизации DNS Mac OS X.

К сожалению, нет информации о том, как именно команда host разрешает имена хостов. Такое поведение делает его несколько бесполезным для отладки, ИМХО.

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

Команды host и dig были созданы как «перезапись» для nslookup. Они статически связываются с функциями системного преобразователя. Системный преобразователь — это набор функций в стандартной библиотеке C UNIX или UNIX-подобной системы (в Mac OS X эти функции являются частью библиотеки netdb). Таким образом, команды host и dig всегда работают так же, как и системный преобразователь для любой ОС, для которой они созданы, но они не полагаются на нее. Таким образом, они являются отличными диагностическими инструментами в случаях, когда системный преобразователь неисправен.

ПРИМЕЧАНИЕ. И Host, и dig читают список серверов имен из /etc/resolv.conf, если им не предоставлен конкретный сервер имен для общения. Только команда host использует список поиска в файле /etc/resolv.conf; dig не работает, поэтому всегда нужно давать полное доменное имя dig, чтобы разрешить что-либо. В остальном обе команды полностью самодостаточны; например, файл /etc/resolv.conf — единственное, чего нет в используемом двоичном файле.

mDNSresponder — это Bonjour. Я не углублялся в это слишком глубоко, но подозреваю, что этот параметр конфигурации не исправляет это или, по крайней мере, не исправляет это напрямую. Я только что столкнулся с той же проблемой в Mac OS X 10.9.1, и простой перезапуск mDNSresponder устранил ее для меня. Я никогда раньше не видел этой проблемы на 10.5 -> 10.8 / 10.9 на любой другой системе. Кроме того, это не повлияло на приложения с графическим интерфейсом, ломались только инструменты командной строки, такие как ping и ssh.

Если я найду время еще немного покопаться в библиотеке, я посмотрю, смогу ли я найти более полное объяснение.

Я собрал сценарий оболочки для автоматизации исправления (и программу удаления, если она вам понадобится позже), здесь:

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

.local зарезервирован для многоадресной рассылки. mDNS и DNS-серверы в одной сети с использованием .local могут быть проблематичными.

  • 1 Мне бы хотелось получить здесь больше объяснений или ссылку на документацию. Спасибо за лакомый кусочек!

Хост добавляет суффикс .local dns. Пинга нет. Если вас это смущает, вы можете добавить .local в качестве суффикса по умолчанию в настройках сетевой системы, и система добавит его при попытке разрешить имена хостов.

  • Это хороший момент, и извините, что я не сказал этого в вопросе, но ping abc.local тоже не работает (хотя host abc.local делает). Я исправил вопрос. pfSense автоматически добавляет локальный домен в качестве домена поиска при отправке аренды DHCP, так что это не будет проблемой.
  • Вау — странно. Что произойдет, если вы полностью квалифицируете local с трейлингом. ? ping abc.local.
  • 1 Тот же результат. Очевидно, что в Mac есть два механизма поиска. Трудно представить, чем они отличаются.
  • Я не уверен, что этот ответ работает на Йосемити и других более новых ОС. Может быть, мы сможем получить лучший ответ?
  • В документации есть предупреждение, что файл / etc / hosts используется только в однопользовательском режиме. Не правда. Я предотвращаю непреднамеренный доступ к большому количеству злоумышленников, помещая их имена в / etc / hosts, перенаправляя на 127.0.0.1. Я не думаю, что это имеет значение для этого вопроса, хотя это определенно показывает, что у Apple есть несколько странностей. Я также заметил, что OS X часто меняла мой resolv.conf, поэтому я установил задание cron, чтобы восстанавливать его до желаемого состояния каждые десять минут.

Если вы попробовали все вышеперечисленное, и ничего не получилось, вы можете добавить свой серверы имен и пути поиска к System Preferences>Network>Advance(bottom right of the window)>DNS tab

Это обновления /etc/resolv.conf и ping теперь должен работать. Обновление пути поиска путем редактирования /etc/resolv.conf на самом деле не работает, но по какой-то причине это работает.

ОБНОВИТЬ:

Редактирование /etc/resolv.conf не работает, потому что ОС перезаписывает файл в соответствии с настройками панели «Системные настройки».

  • 1 «редактирование /etc/resolv.conf на самом деле не работает», потому что ОС перезаписывает его на основе панели pref.
  • 1 Это действительно помогло мне в отличие от принятого ответа.

У меня недостаточно репутации, чтобы комментировать пост Ламонта Петерсона. Перезапуск mDNSresponder работал у меня в Mac OS X 10.7 (Lion). В отличие от Ламонта Петерсона, эта проблема вызвала у меня проблемы с одним приложением с графическим интерфейсом пользователя — Safari не мог разрешить общедоступные или частные имена хостов. Вот конкретные шаги, которые я сделал и которые, как я подозреваю, сделал и Ламонт Петерсон:

В unload выключает mDNSresponder и load снова запускает.

Это сразу решило проблему; перезагрузки не требуется.

Вы можете убедиться, что он успешно перезапустился, используя list команда:

Наличие идентификатора процесса (PID) означает, что он запущен. 708 будет меняться в зависимости от назначения ОС. Если в статусе отображается что-то, кроме дефиса или нуля, что-то пошло не так.

я не знаю как mDNSResponderHelper взаимодействует с mDNSResponder ; Мне нужно было только перезапустить mDNSResponder .

Пожалуйста, обратите внимание, что имена OSX могут быть нестандартными, поэтому для полноты:

  • FQDN доступны для проверки связи
  • имена в файлах «hosts» доступны для проверки связи

Имена Mac в общем случае НЕ используются: необходимо сделать два исправления: а) заменить пробелы на «-» б) добавить .local

так, например, мой Mac: MacBook Pro от ingconti

Источник

Записки молодого админа

. для себя и для всех

среда, 26 мая 2010 г.

Если в windows не работает hosts

Сегодня постучался товарищ, просил помочь с hosts. Дело было в том, что как не правь этот файл, системой он не обрабатывался. Перепробовав кучку вариантов, проблему решить все же удалось.
О вариантах решения проблем в таких ситуациях сегодня и пойдет речь.

Во первых, попробуйте закрыть все браузеры и выполнить в консоли команду:Данная команда очищает dns-кеш.

Во вторых, проверьте в «HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters» параметр «DataBasePath», он должен иметь тип «REG_EXPAND_SZ» и значение «%SystemRoot%\System32\drivers\etc».

В третьих
, убедитесь, что к файлу есть доступ на чтение для всех юзеров.

В четвертых, попробуйте переименовать файл hosts в, например, hosts.bak. Потом создайте новый файл hosts, откройте его блокнотом и напишите туда ручками (именно ручками, а не скопируйте):(porno.com тут приведен для примера, реально надо писать тот сайт, который вы хотите заблокировать)

В пятых, убедитесь, что запущена служба DNS-клиент. Если не запущена, то запустите и поставьте ее в автозапуск.

ЗЫЖ Товарищу помог четвертый пункт.

UPD: Не забывайте, что сначала должны идти IP, а потом, через пробел или таб, имя хоста.

Кому ничего не помогает советую заглянуть в настройки подключения сетевухи. У меня там рядом с настройками Тсp/ip нашлась такая вот дрянь: «lplir lightweight Filter (x64 edition)». Снимаем галку и радуемся жизни.
Что интересно, гугл ничего про дрянь не знает. Откуда оно взялось не ясно.

Информация с сайта http://angel2s2.blogspot.com/. Если Вы читаете информацию на другом сайте, пожалуйста свяжитесь с автором сайта http://angel2s2.blogspot.com/.

Похожие статьи

45 коммент.:

Спасибо angel2s2 до такого варианта было реально тяжело додуматься 🙂

Благодарю за советы, помогло. А то ДВА дня парился с этой проблемой. Добавляю твой сайт в избранные.

Рад, что оказалось полезным и рад за вас, что помогло 🙂

Спасибо, дружище! 4 пункт помог!

Рад, что помогло 🙂

4 пункт однозначно решает. Настраивал несколько дней Апачи, не мог понять почему не работают Vhosts (c NameVirtualHost), а все дело в hosts оказалось. Непонятно только, почему hosts перестал работать. Кстати про вписывание руками директив: я все из старого скопировал, и работает, так что видимо можно и без лишнего рукописного ввода обойтись.

Да, я это тоже заметил. У всех комментаторов именно этот пункт.

У меня два предположения почему перестал работать:
1. Файл должен быть в формате ASCII, а он изначально в «UNICODE».
2. Внешнее воздействие: вирус, hotfix либо какой-нибудь антивирус. В смысле, изменил файл из ASCII в «UNICODE».
Ничего из этого я, конечно же, не проверял. Это только мое предположение.
Тут под «UNICODE» я имею ввиду следующее: если сделать экспорт из regedit какой-нибудь ветки, а потом полученный файл открыть, например, в gvim, то будет видно, что между буквами есть еще какие-то символы. Вот такой формат я и имел ввиду. Вроде это UTF-16. Хотя я точно не знаю.

> Кстати про вписывание руками директив
Ручками предложил вписать, чтобы избежать случайных косяков с кодировкой и непечатаемыми (служебными?) символами.

привет,а что мне не делать,если у меня на оборот не заход в контакт,одноклассники!!я уже заходил на host всё делал по инструкции,и всё равно не магу зайти на сайты(( хотя нет в этих строках на счёт того что сайты заблокированы. что делать? заранее спасибо!

Привет. Скорее всего у тебя есть скрытый системный файл hosts, а тот, что видишь ты, называется hosts.txt, но так как в проводнике отключено отображение расширений, то ты видишь просто hosts.
Скачай FAR, включи в настройках отображение скрытых и системных файлов, перейди в папку C:\Windows\System32\drivers\etc. Если увидишь файл hosts.txt значит все так и есть. Удаляй его и правь файл hosts (который без расширения). Так же обязательно проверь комп на вирусы (есть такая зараза, которая этот трюк проворачивает): лучше скачай Dr.Web LiveCD или Kaspersky Rescue Disk на другом компе, запиши на CD диск, загрузи свой комп с этого диска и проверь на вирусы (так на много надежнее, чем из винды, даже из безопасного режима, проверять).

спасибо огромное, ничего не помогало, но 4-й пункт это и правда хоть и нелепо, но работает

Спасибо, и мне 4 пункт помог =)

Спасибо! проблема решилась 4-м пунктом! ))

В основном проблема с файлом hosts в том, что вирусы/трояны заменяют букву «o» латинскую на букву «о» русскую. Вот система и не видит этот файл. А в проводнике всё смотрится окейно.

У меня было такое в свежепроинсаллированной ХРюшке (лицензионной). Не помню только какой там СП был.

Спасибо большое способ переименования помог!

Убил на поиск проблемы полтора часа , перепробовал всё что можно .

. спасибо , помог тоже 4-й пункт

спасибо большое, думал пропаду..

не пашет нихера, семерка, зараза, достала уже..

сижу значит пишу уже который час DynDNS-сервер на .cmd в связке с Netcat, для того чтобы слушать на порту можно было, всё отлично кроме одного — не потдягивают эти драные окна нихера! и руками и скриптом и головой уже в монитор этот фаел и обновлял и руками создавал и пересоздавал и делал через move, и через rename, и ХРЕН!

если найдешь решение или знаешь что-то из того, что тут
не описано — буду офигенно рад если кинешь на мыло!

dasknix много_животных почта_на_гмайл-точка-ком

..ну и все описанные способы, конечно, тоже
перепробовал — не помогло, иначе бы не писал.

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

Да. Такое тоже бывает 🙂
Отдыхай больше 😉

Блин, у меня проблема месяца два уже. Правда раньше не к спеху было, ну я и забил, а сейчас острая необходимость — и сижу бьюсь. Респект, сработал 4 пункт 🙂

Спасибо ГРОМАДНОЕ
Чего только не делал до этой статьи
Помогло создание нового файла hosts

Кому ничего не помогает советую заглянуть в настройки подключения сетевухи. У меня там рядом с настройками Тсp/ip нашлась такая вот дрянь: «lplir lightweight Filter (x64 edition)». Снимаем галку и радуемся жизни.

Что интересно, гугл ничего про дрянь не знает. Откуда оно взялось не ясно.

Спасибо, добавил в пост.

подскажите пожалуйста, можно ли с помощью hosts заблокировать приложения вконтакте? лично у меня не получается. другие адреса блокируются

Можно. Но нужно знать IP адрес, на котором это приложение висит. Дело в том, что сами приложения, как правило, хостятся не на серверах вконтакта, а на сервере разработчика.

Все дело в том, что реальный файл хостс скрыт (сделайте его видимым с помощью соответствующей настройки в свойствах папки) и тогда будете вносить изменения в действующий файл.

Хостс перестал работать после чистки программой Dr.Web CureIt.
Ни что из вышеперечисленного его не воскресило работу файла.
Виндовс XP SP2.
Посоветуете, что либо или дешевле для нервов просто переустановить систему?

Манори, я знаю только один случай, когда делаешь правку файла hosts, а эффекта нет.
В папке было два файла — hosts и hosts.txt, но т.к. в проводнике был отключен показ скрытых файлов и их расширений, пользователь видел только один файл — hosts.txt, но видел его как hosts. Поэтому hosts и не работал.

Roma Shagrov, у меня включен показ скрытых файлов(лечил от вируса-скрывалки папок флешку, которую у соседей к «динозавру» полному вирусов подключал, из-за чего, собственно и использовал Dr.Web CureIt). Скрытых файлов там нет, и он работал до обработки антивирусником Dr.Web CureIt.

Файл имеет атрибут «системный»? Какие права на файл (владелец и тп)?
У меня с cure it такого никогда не было.

А разве эта фича не в Win7 появилась?
Хотя, может, я-нуб, незнающий куда смотреть.

Манори, точно не скажу. Давно винду не юзаю, линуксоид.

яснопонятно. я б тож давно перешёлна линукс, да не охото с эмуляторами возиться. приходится терпеть всю эту фигню ради игор. Т.Т

А у меня проблема оказалась в папках etc\Save1 etc\Save2, в которых я хранил копии hosts.
Пока их не убрал, основной hosts не обрабатывался.

Этот комментарий был удален автором.

Откатить систему помогает. Понятно, что поздно с советом, но может другим поможет после лечения cureit

Olga A, откат системы не всегда поможет, т.к. изменения в системе, связанные с hosts могли произойти давно, а понадобилось, что в hosts менять, только сейчас.

помогло только после nbtstat -R с правами адиминистратора + ipconfig /flushdns

Не вышло у меня все проверил не один раз и как назло когда реально понадобилось, такая магия что без бубна не разберешься, на 7, 10 проверил все гуд, а вынь 8*64 ни вкакую час времени потрачено бесполезно (.

Так и не понял, что именно помогло, но в конце концов оно почему-то заработало, когда я уже забил) Указанный в статье фильтр — это фильтр антивируса, он просто сам блокирует некоторые сайты и по идее не должен влиять на блокировку от hosts.

Источник

Читайте также:  Не работает пульт от ворот came что делать
Оцените статью