Как я могу заставить OSX Mavericks заметить изменение DNS в `/ etc / hosts`?

24

Обычный способ «заблокировать» веб-сайт (например, устранить его как отвлекающий фактор) - отредактировать /etc/hostsи указать домен по адресу обратной связи. Например:

# Stop goofing off
127.0.0.1 youtube.com

На Mavericks я обнаружил, что подобные изменения, похоже, игнорируются ОС; после редактирования файла (с помощью sudo) и сохранения сайт, который должен быть заблокирован, по-прежнему загружается.

Я попытался сбросить кэш DNS следующим образом:

dscacheutil -flushcache
sudo killall -HUP mDNSResponder

Но сайт все еще загружается.

Как я могу заставить OSX Mavericks заметить изменение /etc/hosts?

Натан Лонг
источник
1
Может ли быть так, что кеш браузера DNS не очищается? Какой IP ping youtube.comиспользует?
Леонид Шевцов
Примечание: если вы используете DNS для временной блокировки сайтов, selfcontrolapp.com для OSX работает хорошо. Он изменяет файл hosts и, похоже, автоматически очищает кеш браузера. Они также упоминают аналогичные приложения для других платформ: github.com/SelfControlApp/selfcontrol/wiki/FAQ
Натан Лонг,

Ответы:

19

Согласно странице руководства hosts (5) , /etc/hostsфайл используется mDNSResponder. Ваши попытки корректно очищают кеш компьютера, но вам также необходимо очистить личный кеш браузера.

После каждого редактирования /etc/hostsсброса mDNSResponderкеша, используя эту техническую заметку Apple, OS X: Как сбросить кеш DNS :

sudo dscacheutil -flushcache

После этого сбросьте кеш браузера :

  • Safari: используйте пункт меню Safari > Сбросить Safari .
  • Chrome: используйте пункт меню Chrome > Очистить данные просмотра .
Грэм Милн
источник
1
Это исправило это. В Chrome «Очистить данные просмотра» есть флажки для типов данных. «Очистить кеш» является релевантным.
Натан Лонг
5

Удалите кеш браузера и добавьте 127.0.0.1 www.youtube.comв свой файл хоста.

youtube.comрешает до www.youtube.com. Ваш браузер кэширует эту информацию и перенаправляет вас на www-страницу.

napcae
источник
0

В OS X 10.9 Mavericks существуют проблемы с попыткой перечислить несколько имен хостов в одной строке / etc / hosts. Я пробовал все остальные советы, связанные с DNS, в этом посте и посте, но безрезультатно, пока не наткнулся на ссылку «проблемы» выше.

Раньше у меня было что-то вроде этого:

127.0.0.1 localhost host1 host2 host3 ...

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

Изменение его на следующий формат сделало все для меня нормально, и теперь все работает отлично с ping, в браузере и везде:

127.0.0.1 localhost
127.0.0.1 host1
127.0.0.1 host2
127.0.0.1 host3

Подробнее .

Скотт Дадли
источник
0

Поверх ответа Грэма попробуйте chrome: // net-internals / # dns (для Google Chrome), чтобы увидеть, что кешируется. Затем нажмите Очистить кэш хоста, чтобы стереть все это.

Дэвид Хэмпи
источник