1

Я пытался настроить Launchd для блокировки нескольких веб-сайтов на OSX 10.12.2 с 9:00 до 15:00 с понедельника по пятницу.

Я установил launchd в cp /etc/hosts_BLOCKED_sites.txt /etc/hosts

Launchd, похоже, правильно копирует файл.

$ ls -la /etc/hosts   

    -rw-r--r--  1 root  wheel  715 Jan 10 15:01 /etc/hosts

 

$ sudo cat /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   


    # Blocked sites redirected to 0.0.0.0  
    0.0.0.0 reddit.com   
    0.0.0.0 www.reddit.com  
    0.0.0.0 facebook.com  
    0.0.0.0 www.facebook.com  

Однако я могу открыть заблокированные сайты после того, как /etc/hosts настроена на блокировку доступа.

Любые предложения о том, почему /etc/hosts не блокирует доступ к сайтам?

Вещи, которые я пытался, но не смог заблокировать сайты в Chrome:

  • sudo killall -HUP mDNSResponder из командной строки
  • Я попытался очистить DNS-кеш Chrome через chrome://net-internals/#dns
  • Я попытался сбросить Chrome Sockets chrome://netinternals/#sockets
  • Я переключил файл hosts для перенаправления сайтов на 127.0.0.1, он не блокировал сайт, и мне сказали, что быстрее перенаправить на 0.0.0.0

Это не имело значения. Все заблокированные сайты по-прежнему доступны через Chrome v55.0.2883.95.

7 ответов7

4

Я заметил, что ваш файл /etc /hosts имеет разрешение 600. Разрешения для этого файла обычно должны быть 644. Если ваше приложение не может прочитать /etc /hosts, тогда оно просто использует DNS.

2

Вы убедились, что /etc/nsswitch.conf имеет такую строку:

хосты: файлы днс

Если в файле нет такой строки или если в строке есть dns перед файлами, то сначала выполняется dns-запрос, и если он получает правильный ответ, файл /etc /hosts даже не просматривается

2

Я открыт для того, чтобы быть неправым в этом, так как я не эксперт по сетям ...

0.0.0.0 является строго недействительным, не маршрутизируемым мета-адресом и поэтому может просто игнорироваться.

В контексте маршрутизации 0.0.0.0 обычно означает маршрут по умолчанию, то есть маршрут, который ведет к "остальной части" Интернета, а не где-то в локальной сети.

Вместо этого попробуйте 127.0.0.1, который является адресом обратной связи по умолчанию, то есть "я"

Я менее хорош в IPv6, но знаю некоторые проблемы, исправленные путем изменения
::1 localhost
в
::1 127.0.0.1

1

Попробуйте написать их как псевдоним для 127.0.0.1

127.0.0.1     localhost www.facebook.com www.reddit.com
1

Сначала определите источник проблемы, это от Chrome? это из кеша? Или, может быть, с самого файла hosts?

  1. Проверьте кодировку файла hosts, так как он должен быть ASCII, а не UTF-8.
  2. Попробуйте добавить веб-сайт, который вы никогда не посещали, в файл hosts, а затем проверьте, нет ли проблемы в кэше или файле hosts.
  3. Попробуйте использовать команду dig, чтобы проверить, не является ли кеш Chrome проблемой.

Предложение . Вы можете достичь своей цели в Chrome, используя такие расширения, как: https://chrome.google.com/webstore/detail/block-site/eiimnmioipafcokbfikbljfdeojpcgbh?hl=ru .

1

Введя записи hosts для ipv4 + ipv6 и запустив

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

чтобы очистить кеш, мне все равно пришлось перезапустить Chrome, чтобы записи хостов вступили в силу.

Мои записи хозяев:

127.0.0.1       youtube.com
127.0.0.1       www.youtube.com
fe80::1%lo0      youtube.com
fe80::1%lo0     www.youtube.com
0

В соответствии с переопределением файла хоста не работает в Mavericks | Официальные сообщества поддержки Apple:

Файл hosts кешируется. Перезагрузка OS X перезагрузит его. Вы также можете попытаться принудительно перезагрузить кэш с помощью следующей команды:

sudo killall -HUP mDNSResponder

<...> использование TextEdit может повредить файл. Файл должен быть простым текстом ASCII <...>. Используйте инструмент TextWrangler (бесплатно) или используйте редактор nano (или vim или emacs, если вы более знакомы с ними) <...>:

sudo nano /etc/hosts

файл /etc /hosts не используется в Snow Leopard | Официальные сообщества поддержки Apple предлагают:

убедитесь, что вы используете правильный синтаксис при редактировании, а также убедитесь, что он имеет правильные разрешения. он должен принадлежать системе и иметь 644 разрешения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .