После обновления до Mac OSX Lion я понял, что / etc / hosts больше не ищется в первую очередь для разрешения имен. Это приводит к некоторым побочным эффектам, например:
- Записи в / etc / hosts решаются мучительно медленно
- Вы не можете не изменять существующие домены, например 127.0.0.1 www.google.com.
- Если вы получаете записи домена поиска от DHCP, скажем .lan, и какой-то забавный парень настроил localhost.lan на что-то еще, а не на 127.0.0.1 в локальном DNS, вы больше не сможете достичь своего localhost.
Это поведение задумано? Есть ли в этом смысл? И самое главное, как мне вернуться к прежнему поведению.
macos
dns
osx-lion
hosts-file
Meik
источник
источник
Ответы:
Я думаю, дело в том, что Lion обрабатывает TLD .local по-разному, потому что он зарезервирован для некоторых функций Multicast DNS (используемых Bonjour). Единственный способ решить эту проблему, который я нашел, - это использовать другой TLD для хостов разработки (например, .dev). У меня это работает, надеюсь, это будет полезно другим!
источник
http://foo.dev/
; После этого Chrome поймет, чтоfoo.dev
это домен, а не запрос.Что касается переопределения доменов в файле hosts, я обнаружил, что в некоторых случаях Lion запрашивает адрес IPv6 для домена, если обнаруживает, что домен недоступен в сети IPv4.
Я обнаружил это, когда заметил рекламу, которую никогда раньше не видел на Snow Leopard, потому что перенаправил рекламные домены на
127.0.0.1
. Я запустил wirehark и заметилAAAA
(записи DNS IPv6) запросы, следующие заA
запросами IPv4 (IPv4). Рекламные серверы действительно имеют адреса IPv6 и могут предоставлять мне их контент.Решение этого - иметь
запись для каждого
запись в вашем файле hosts.
Интересно, что если у вас работает локальный веб-сервер,
127.0.0.1:80
и ваш браузер получает ответ от веб-сервера (ошибка или иначе),AAAA
запрос не выдается, поскольку кажется, что TCP-соединение было хотя бы возможно.В связи с этим, если вы активно используете файл hosts (для блокировки рекламы, локальной веб-разработки и т. Д.), Вы можете захотеть запустить свой собственный локальный преобразователь DNS. Из-за необходимости чтения
/etc/hosts
по каждому запросу возникает значительная нагрузка на диск / процессор , поэтому в ваших интересах, чтобы этот файл был очень легким.Одним из преимуществ запуска чего-то вроде
dnsmasq
локального (помимо значительного повышения производительности) является то, что вы можете перенаправлять целые домены верхнего уровня обратно на свой локальный компьютер. Это позволяет вам иметь все пространство имен * .dev для разработки (например), без необходимости индивидуального ввода каждого домена, который вы хотите разрешить локально./etc/hosts
источник
/etc/hosts
- ОС будет кэшировать файл, если он используется часто.Проблема заключалась в том, что я создал символическую ссылку на файл / etc / hosts. Если / etc / hosts простой файл, все в порядке.
источник
Обновление (2): OSX 10.10.5 возвращает
mDNSResponder
.Обновление: OSX 10.10 Yosemite заменил mDNSResponder на «discoveryd». Я не обновлялся, поэтому я не уверен в поведении обнаружения при поиске в DNS и
/etc/hosts
.Системный DNS-преобразователь на Lion - это
mDNSResponder
процесс.Вы можете подумать: «Но mDNSResponder - это многоадресный DNS-ответчик». Ты прав; это то, для чего он изначально был, и он до сих пор выполняет эту функцию. Однако в более новых версиях MacOS он также выполняет стандартный поиск узлов.
В Lion это не кажется автоматически перечитываемым
/etc/hosts
при изменении, по крайней мере, не всегда. УбийствоmDNSResponder
(и разрешение на автоматический перезапуск), похоже, решает проблему.должен сделать свое дело.
ниже мой оригинальный ответ для потомков. Я полагаю, что в некоторых случаях это все еще может быть проблемой.
Убедитесь, что ваш
/etc/hosts
файл представляет собой текстовый файл в стиле unix, с окончанием строки, а не cr.При редактировании с помощью TextWrangler или текстового редактора unix файл должен быть сохранен.
Если ваш файл уже испорчен, попробуйте это исправить
кредит за это исправление:
http://techpatio.com/2011/guides-how-to/fixed-mac-osx-lion-etc-hosts-bugs-dns
источник
У ive была эта проблема какое-то время, так как я работал с командой разработчиков, поэтому возникла необходимость использовать .local, а не .dev или .localhost, я нашел эту статью очень полезной.
iTand.me - локальные домены Lion и другие хосты ..
В итоге;
Но если вам нужно использовать .local, самое элегантное решение, которое я нашел, - это утилита dscl. Использовать его очень просто. Чтобы добавить хост с именем mydev.local и указать его на localhost, просто сделайте следующее:
Чтобы увидеть все определенные в настоящее время хосты и их IP-адреса
И чтобы удалить хост:
В целом, довольно просто и хорошо работает. Я по-прежнему предпочел бы иметь возможность редактировать / etc / hosts, но это лучшая альтернатива необходимости переименовывать все наши .local серверы.
источник
До перехода от Snow Leopard к Lion у меня было несколько записей для конкретных приложений
/etc/hosts
, например:После обновления загрузка моих локальных приложений была ОЧЕНЬ медленной. Я заметил, что задержка произошла до того, как запрос появился в файле журнала, и что как только это произошло, само приложение работало так же быстро, как обычно.
Теперь у меня есть две строки для каждого приложения, например:
... и снова все быстро.
Видимо это добавляет адреса IPv6? Я не совсем понимаю, но это работает.
источник
Моя ситуация была аналогичной, но задержки, составляющие ровно 5 секунд, имели место только для URL-адресов, заканчивающихся на .local. При просмотре сайтов, заканчивающихся на .dev, задержек не было.
У некоторых других разработчиков в моем офисе была эта проблема, а у некоторых - нет. Я надеялся на простое исправление и не хотел переименовывать сайт в «.local» из-за других зависимостей.
Я выполнил следующую команду в Терминале и сравнил свой результат с несколькими другими пользователями в офисе.
Этот раздел был единственным отличием:
Мой Mac был привязан к моей учетной записи iCloud, и у меня была включена функция «Назад к моему Mac». Как только я отключил функцию «Вернуться к моему Mac», дополнительный преобразователь исчез и исчезла 5-секундная задержка.
источник
Вау, какой кошмар. Я прочитал абсолютно все по этому поводу, и все, что было предложено до сих пор, было поразительно близко к тому, что я испытывал, но ни одно из решений не помогло мне.
И я понял почему.
В отличие от других, я не использовал / etc / hosts для настройки локальных доменов. Мой файл / etc / hosts был стандартным и содержал только записи, необходимые для интерфейса обратной связи и хоста вещания. Более того, это был правильно закодированный файл unix, так как я из тех людей, которые редактируют его только из командной строки с помощью emacs. И, слава богу, мне не пришлось прибегать к запуску собственного DNS-сервера, такого как DNSmasq, чтобы обойти эту проблему.
(Для ясности, симптом, который привел меня к этой проблеме, заключался в том, что для запуска emacs требовалось около 10 секунд, но только тогда, когда я был подключен к Wi-Fi. Если я отключил Wi-Fi, emacs запустился бы мгновенно, как ожидалось.)
Мое решение: у моего ноутбука есть имя «терминатор». (Да, его блестящий алюминиевый корпус напомнил мне о персонаже Арнольда Шварценеггера.) Мне просто нужно было добавить в / etc / hosts имя самой машины:
Я нашел имя своего хоста, выполнив простую команду в терминале:
... который вернулся с выводом: "терминатор". После изменения / etc / hosts, чтобы он содержал эти две записи, emacs теперь может быстро разрешить имя моего ноутбука.
Я надеюсь, что это поможет кому-то.
источник
У меня были проблемы со скоростью при использовании OSX Lion в качестве окна веб-разработки ... Используя комбинацию предложений, я прибег к отключению сети ipv6 и маршрутизации ipv6 на localhost6 ... все немного ускорилось ...
/ etc / hosts ...
источник
Я думаю, что были исправлены некоторые ошибки. Я видел много упомянутых проблем, и ни одна из них, похоже, не применима в настоящее время (например, размещение нескольких псевдонимов в одной строке теперь отлично работает для меня).
В любом случае кажется, что с Lion Apple внесла некоторые радикальные изменения в mDNSResponder, который обрабатывает все запросы DNS и (по крайней мере, с Lion) также обрабатывает кеширование / etc / hosts. У меня также сейчас работают упреждающие запросы. Но обратный поиск (например, поиск 1.2.3.4 вместо google.com) не работает.
После долгой боли похоже, что mDNSResponder преобразует этот поиск в 4.3.2.1.in-addr.arpa и выполняет поиск по имени. Возможно, DNS предпочитает работать именно так, но с / etc / hosts он вообще не работает.
Если, конечно, вы не добавите псевдоним 4.3.2.1.in-addr.arpa для каждого хоста, где 4.3.2.1 - это IP-адрес в порядке, обратном тому, в котором вы привыкли его видеть. Это все исправляет для меня. Вот пример записи в / etc / hosts:
1.2.3.4 foo foo.example.com alias.example.com 4.3.2.1.in-addr.arpa
источник