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


40

Як говорить заголовок, працює os x 10.10.1. якщо у мене є запис у моєму файлі хостів і робити digабо nslookupвін все ще показує інший IP, ніж те, що є у моєму файлі хостів, навіть після спроби очистити різні кеші.

Я спробував наступне ..

  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

мій файл хостів виглядає так ..

% 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

3
Здається, Yosemite не використовує хостів так само, як раніше; він також не змиває кеш-пам'ять так само, і mDNS зайняв заднє місце - У цьому є ціла купа балаканини на цю тему - forums.macrumors.com/showthread.php?t=1741422 Редагувати ах ... я думаю ви вже дійшли до azchipka.thechipkahouse.com / ...
Tetsujin

дякую, так, я прочитав, що вже .. якщо ось так станеться x x .. її крихка: \
гораlative

1
Я радий, що мені не доведеться покладатися на хостів на Mac, tbh; Я схильний завжди грати в Win, коли мені потрібно це зробити, - хоча це не єдине, що тримає мене подалі від Yosemite зараз :(
Tetsujin

Так, мій rmbp - це основна машина розробників, яку я використовую для веб-розробки / sysadmin, на жаль, і мені потрібно зрозуміти це, інакше я повернуся до версії.
горілатив

Інші, можливо, захочуть просто відключити ipv6 на своїх робочих станціях, я виявив, що це пояснює ключ: technages.com/how-to-disable-ipv6-in-macos-sierra - Однак, навіть після відключення ipv6 на моїй нік, проблема зберігалася .
Джеймс Т Снелл

Відповіді:


61

/ приватний / 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працює так, як очікувалося ..
бурхливий

Якщо я оновлюю свій /etc/hostsфайл або свій /private/etc/hostsфайл, він взагалі не відображається за допомогою dscacheutil -q host -a name www.example.comбудь-якої іншої команди.
Поїздка

3
@Trip переконайтесь, що додані вами записи відформатовані належним чином: IP-адреса, а потім пробіл чи вкладка, а потім ім'я, потім подання рядка в кінці рядка. Спробуйте надрукувати файл хостів, 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 - використовуйте меню Перегляд> Текстовий дисплей> Показати невидимки, щоб побачити (і відредагувати) такі речі, як ті вагон повертається. Крім того, він безкоштовний і має варіанти показу / відкриття невидимих ​​файлів і папок (наприклад / тощо) та використання прав адміністратора для редагування системних файлів.
Гордон Девіссон

17

Я виявив ще одну зморшку з цим питанням.

Щоб виправити проблему, мені довелося додати записи файлів хостів у стилі IPv6.

Схоже, Safari не помітить записів IPv4, якщо у вас налаштування мережі IPv6.

Ви повинні додати повторювані записи, які вирішують адресу IPv6 localhost в / etc / hosts.

Запис IPv4 127.68.56.101 facebook.com

наприклад запис IPv6 fe80::1%lo0 facebook.com

тощо.


1
Зауважте, що я успішно отримав цю роботу, використовуючи найкоротші IP-адреси: 0.0.0.0 та :: 1
Ben Morrow

дякую, працювали і для мене. лущив голову після відновлення конфігурацій vhosts / apache після оновлення. цінується.
Гевін

Так, це було виправлено і для мене.
реклама2013

1

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

Єдине рішення, яке працювало для мене, - це використання цього безкоштовного плагіну GUI для редагування файлів хостів.

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


1

Я знайшов цю статтю, оскільки Yosemite 10.10.5 не збирав зміни файлів моїх хостів, і я нічого не міг зробити, щоб виправити її. (Я перезавантажив, спробував промити кеші, дотримувався всіх порад, які я міг знайти в Інтернеті і т. Д. Тощо).

Відповідь була такою простою, що насправді бентежить, але я думав, що поділюсь. Я використовував textedit для редагування файлу хостів, і це дозволило зберегти файл як hosts.txt. Як правило, я помітив щось подібне, але я використовую свіжу установку Yosemite і ще не ввімкнув "показати всі розширення файлів", тому це не виглядало так, як ім'я файлу змінилося, коли я переглядав його на робочому столі.

Отже, це очевидно, і більшість людей, які читають цю публікацію, напевно, вже зробили це, але не забудьте перевірити, чи файл вашого хоста насправді є і його не замінив hosts.txt .

Щоб увімкнути показ розширень імен файлів, перейдіть до Finder> Preferences> Показати всі розширення імені файлу

Щоб зупинити додавання TextEdit розширення .txt до файлів, відкрийте файл у редагуванні тексту та виберіть « Файл»> «Зберегти як» (якщо ви не бачите пункт меню « Зберегти як », натисніть клавішу опції після натискання « Файл» та « Зберегти як слід» з'являються в меню). Шукайте опцію Якщо розширення не передбачено, використовуйте ".txt" та зніміть його з вибору.


0

Я вірю, що Apple визнає це помилкою (сьогодні я представив її). Я помітив, що нові записи в /etc/hostsпідбираються, але зміни в існуючих записах ігноруються. Отже .... зміна імені хоста записів (наприклад, web1 на web1a) забезпечила для мене вирішення.

Старий / тощо / запис хостів: 54.173.164.18 web1

НОВИЙ / тощо / хост запис: 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 так любить, щоб використовувати вбудовану автоматичну корекцію, щоб замінити їх -на свою -.

Файл хостів виглядав ідеально, і важко було знайти цю проблему. Коли я видалив рядки і записав їх назад вручну, вони почали працювати.

Це було так важко зрозуміти, що я заглибився всередину, чому клієнт MacOS повинен ігнорувати файл хостів та переходити безпосередньо до роздільної здатності імен.


0

Просто була ця проблема. Це було викликано виготовленням копії / вставки з hipchat замість написання адреси.

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

Переписання рядка вирішило проблему.


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

працює.


Я не впевнений, як це взагалі відповідає на питання. Здається, це лише якесь випадкове спостереження, не пов'язане з питанням.
Тецуджин

1
Чи можете ви додати деякі подробиці про те, де саме ви змінили що і як це стосується питання?
nohillside

Питання полягало в тому, чому файл хостів ігнорується з 10.10.1 ... Я був у тій же ситуації, що ручні записи були проігноровані, але записи, зроблені через додаток SelfControl, працювали за призначенням. Те, чого бракувало у моїх попередніх записах, була друга частина, домени з "www.". Не вдалося зрозуміти, що ще не так у моїх записах, оскільки всі працювали нормально до 10.10.1.
needlol
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.