Предисловие:

Пару недель назад мне позвонил один мой друг и спросил, могу ли я ему помочь с компьютером, я согласился. Проблема была довольно забавная, хотя в наше время этому удивляться грешно. Интернет уже давно не безопасное место и стоит следить куда заходишь и на что кликаешь. В данном случае задача была как раз в том что бы заблокировать пару-тройку сайтов и сервисов. Думаю, это особо актуально тем кто хочет ограничить доступ для своих детей, но тем кто хочет заблокировать рекламу и тому подобное это тоже поможет.

Какие варианты?

Вариантов блокирования сайтов и сервисов масса. Если поискать в интернете то можно найти кучи программ которые обещают что заблокируют все и вся. Я не собираюсь тут обсуждать как они работают или делать какой либо обзор, так как есть довольно хороший альтернативный способ. А именно речь пойдет о двух вещах: Hosts file и DNS.

А как это работает?

По сути Hosts file и DNS похожи, так как делают одну и туже вещь только на разных уровнях. Но перед тем как перейти к том как этим все пользоваться “на благо народа”, нужно понять базовый принцип работы. И так начнем с того как же интернет работает.

Интернет работает на IP протоколе, то есть у каждой машины которая подсоединена к интернету есть IP адрес. Вот пример адрес: 173.194.32.104 и если вы напишите этот адрес в браузер то откроется сайт Гугл (google.com). Для аналогии можно интернет сравнить с телефонной сетью, набираете номер и получаете секс по телефону, заказ пиццы или что вы ещё хотите. Далее по аналогии, многие люди не запоминают номера телефонов, а запоминают названия компаний, сервисов и так далее. То есть вы можете представить себе ситуацию когда вам говорят: “… я тут заказал пиццу от 416-967-1111 и она классная…”, обычно говорят: “… я тут заказал пиццу от Pizza Pizza и она классная…”, а дальше если вы хотите с ними связаться и воспользоваться их сервисом, то вы открываете желтые страницы и смотрите номер телефона ассоциированный с Pizza Pizza. Конечно я перегнул с желтыми страницами, так как я не знаю кто ещё пользуется книжкой, обычно смотрят в интернете, но важен тот факт что для того что бы получить сервис нужно знать имя компании, потом посмотреть телефон (или адрес) в книге и позвонить (или приехать).

Интернет работает примерно так же. То есть вы вводите имя (доменное имя/domain name) в браузер, а далее происходит почти тоже самое что и в примере с телефоном. Другими словами браузер смотрит на имя и делает запрос в DNS (по аналогии в желтые страницы), получает номер, а дальше идет по нему и скачивает данные (страницу, файл и так далее).

Пример:

Компьютер —- запрос: google.com —-> DNS ( Domain Name System )
Компьютер <—- ответ: 173.194.32.104 —- DNS
Компьютер —- запрос: страница —-> 173.194.32.104
Компьютер <—- ответ: первая страница —- 173.194.32.104

Теперь рассмотрим разницу между Hosts фаил и DNS. Практическая разница состоит в том что Hosts файл расположен прямо у вас на компьютере ( в операционной системе ), а DNS находиться в интернете. И что более важно это факт того что перед тем как компьютер воспользуется сервисом DNS, он сперва проверит Hosts файл на наличии записи. Если запись существует в Hosts файле, то DNS сервисом пользовать не нужно, а если записи нет то компьютер делает запрос к DNS. Давайте посмотрим на пример Hosts файла:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##

255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
127.0.0.1 localhost

127.0.0.1 yandex.ru
127.0.0.1 www.yandex.ru

Из файла можно увидеть следующее: существует запись yandex.ru и IP адрес который ассоциирован с этим. То есть если я напишу в брузере “http://yandex.ru” то компьютер посмотрит в Hosts файл и увидит что запись существует и адрес является 127.0.0.1. После этого браузер попробует открыть страницу по адресу 127.0.0.1. Теперь можно спросить, а что 127.0.0.1 за адрес такой? Этот адрес является адресом местной машины, то есть адрес самой себя. Он не когда не меняется и используется для внутренних нужд системы. Другими словами у каждого компьютера есть 127.0.0.1 адрес и он по конвенции он указывает на этот же компьютер. Теперь можно спросить, а зачем мы “yandex.ru” указываем на собственную машину? Ну в данном случае это действительно не нужно, но представьте что вы хотите заблокировать yandex.ru, тогда все что нужно сделать это прописать “127.0.0.1 yandex.ru” в Hosts файле и каждый раз когда вы будите писать yandex.ru в браузер, он будет пытаться открыть страницу по местному адресу ( 127.0.0.1 ) где обычно ничего не находиться и в результате yandex.ru открываться не будет. Другими словами мы только что заблокировали yandex.ru не используя никаких навороченных программ.

Теперь стоит вернуться к DNS, зачем он нам нужен, если Hosts файл по идее делает такую же работу? Это правда, DNS нам был бы не нужен если бы в нашей сети было бы 100 сайтов ( серверов ), но в интернете миллионы сайтов и их количество продолжает расти каждый день. В итоге нам нужно что-то динамичное, то что может следить за новыми сайтами и содержать их адреса, в результате мы получили DNS – Domain Name System или система доменных имен. Этот сервис работает по примерно такому же принципу как и Hosts файл, то есть компьютер делает запрос DNS с именем google.com и получает в ответ 173.194.32.104. Как я и говорил ранее это похоже на желтые страницы, где вы ищите по названию и получаете телефон и адрес.

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

Где DNS и что с ним делать?

И так у нас теперь есть понятие о том как компьютер запрашивает сайты. Но перед тем как мы перейдем к тому что бы начать блокировать все и вся, нужно чуть поговорить о DNS. DNS как вы уже поняли, является сервисом который находиться где-то в интернете. Вопрос напрашивается сам по себе, а как мой компьютер знает “кому звонить” или как соединиться с DNS? Обычно DNS настройки идут вместе с TCP/IP настройками и типично определяются вашим интернет провайдером. То есть когда вы подсоединяете к сети, то ваш компьютер запрашивает сетевые настройки и тогда получает в ответ интернет адрес, DNS адреса и ещё пару-тройку вещей. Тогда следующий вопрос: а как я могу поменять DNS настройки? Сменить DNS легко, все что вас нужно это найти в интернете DNS сервис, например я пользуюсь openDNS ( http://www.opendns.com/ ) и проставить DNS адреса у себя в системе на те которые предоставлены openDNS-ом. Вот например: DNS адреса с http://opendns.com – 208.67.222.222 и 208.67.220.220. Прописываем эти адреса в системных настройка и усе готово.

Вот как это выглядит на маке:

А вот как это выглядит на Windows XP:

Подробные инструкции о том как настроить Windows XP можно найти тут, а если ссылка не работает то я сделал pdf, можете скачать и прочитать.

А вот как это выглядит на Linksys роутере:

Подробные инструкции для настройки DNS в роутерах можно найти тут, а если ссылка не работает то я сделал pdf, можете скачать и прочитать.

Hosts vs DNS:

Вопрос чем лучше пользоваться Hosts файлом или DNS? Все зависит от задачи, ограничений и личного выбора. Например если у вас дома дети и вы хотите ограничить доступ для всего дома, то конечно стоит воспользоваться DNS и проставить настройки в роутере, что бы любое устройство в доме будь то iPad, iPhone или ваш старый компьютер не давали возможности похода на facebook. Но если вы хотите просто отгородить свой личный компьютер от facebook-а то можно просто прописать его в Hosts файле. Теперь нужно упомянуть об одной проблеме/недостатке в Hosts файле, у Hosts файла нету так называемого символ-джокера. Что это значит? А то что каждый сайт который нужно прописать в Hosts файле нужно прописывать с поддоменами. Для простоты приведу пример, возьмем для примера yandex.ru:

Как и раньше мы прописываем в Hosts файле следующее:

127.0.0.1 yandex.ru

И это ограничит доступ на http://yandex.ru, но на yandex.ru можно будет зайти используя под-домен: http://www.yandex.ru и для того что бы заблокировать и этот адрес нужно прописать следующее:

127.0.0.1 www.yandex.ru

Тогда оба адреса будут заблокированы. Другими словами в Hosts файле нужно прописывать все конкретно и нельзя указать одной строкой блокировку всего что является частью yandex.ru. Хотя это и недостаток, но не очень большой и всегда можно соорудить свой список того что нужно блокировать, раз настроено и работает всегда.

Что касается DNS тут проблема другого рода, для начала надо найти DNS сервис который позволяет вводить ограничения. Например я нашел openDNS.com и на нем есть много разных настроек фильтра и блокирования сайтов/доменных имен, но бесплатная часть сервиса разрешает вам блокировать только 25 доменных имен, если нужно больше то прийдется платить. Есть так же русский вариант называется Rejector, но я им не пользовался и поэтому не могу ничего сказать о сервисе. Так же отмечу что можно сделать свой DNS сервис, настроить его как нужно, но это не простая работа и вдаваться в подробности я не буду.

Итого и тут и там есть свои недостатки, но можно комбинировать и то и другое и получить лучшее от обоих “миров”.

Hosts:

И так вы решили воспользоваться Hosts, все что для этого нужно это отыскать файл у себя в системе и написать туда что блокировать по выше приведенным примерам. Размещение Hosts файла в разных операционных системах хорошо описано в вики, или pdf. Для того что бы новые параметры вступили в работу нужно обновить кэш, перегрузите браузер и посмотрите работает ли оно. Если не помогло, то проверьте записи в Hosts файле и перегрузите всю машину (хуже не будет). В Mac OS X нужно сбросить кэш, в консоли терминала (terminal) напишите “dscacheutil -flushcache” или перегрузите компьютер.

В интернете есть замечательный сайт, где люди собирают и обновляют лист сайтов/мест паразитов. Вы можете скачать готовый Hosts файл и разместить у себя на машине тем самым блокируя эти сайты.

DNS:

Что же касается DNS, то как я уже говорил ранее, есть сервис openDNS где вы можете зарегистрироваться и начать пользоваться их услугами. На сайте есть большое количество информации и настроек. Можно фильтровать/блокировать не только индивидуальные сайты, а так же целые группы. Например если вы хотите заблокировать сайты с оружием или социальными сетями, то ставите галочку и все готово. Так же openDNS предоставляет статистику интернет “походов”, что может оказаться полезным если вы следите за своими детьми. Бесплатный аккаунт предоставляет все выше описанные, но если нужно больше то вы всегда можете подписаться на платный сервис. Итого все сделано красиво, просто и работает замечательно.

Как все обойти?

Можно ли все эти блокировки обойти? Короткий ответ да, все можно обойти со временем и ресурсами. Длинный ответ, да можно, но не так просто как хотелось бы. Если вы все настроили и закрыли доступ для изменения системных настроек, то это будет сложно. Например что сделал я когда блокировал одну машину для родителей. После того как прописал Hosts файл и выставил настройки для OpenDNS, я закрыл доступ к настройкам системы на Windows 7. Потом закрыл доступ к BIOS что бы умный ребенок не могу загрузиться с Линук диска и не пошел в интернет. Так как для обхода DNS все что надо, так это прописать в настройках адреса другого DNS сервиса и вуаля, все ограничения OpenDNS больше не работают, так как компьютер не больше не пользуется OpenDNS сервисом. Так же если нету доступа к системным настройкам то нельзя изменить Hosts файл, но если загрузиться с Линукс диска ( то есть с другой системы ) то там Hosts файл не модифицирован и как следствие нету никаких ограничений. Но даже с учетом того что машина вся закрыта, всегда можно сменить жесткий диск и результат будет такой же. Итого способы обойти всю эту блокировку есть и все зависит от того на сколько человек хочет обойти все это. Да чуть не забыл, всегда можно для обхода этого всего использовать Web-proxy – это просто и работает на ура. Хотя всегда можно проставить блокировку проксей… все это напоминает в игру кошки-мышки и на самом деле это так и есть, одни пишут защиту, а другие её ломают и пока что не видно конца и края этому процессу.

Итого:

Итого заблокировать свой дом и компьютеры можно и это довольно просто и бесплатно. Однако нужно отметить что абсолютной защиты пока не существует. Единственный выход так это “закрутить болты” потуже и надеяться на лучшее.

Ресурсы:

DNS сервисы:
openDNS
Rejector

Hosts файл:
Готовый лист паразитов и другой информации

Инструкции:
DNS настройки Windows XP
DNS настройки для роутеров

Вики:
Символ-джокер
Размещение Hosts файла


2 Responses to 'Блокируемся'

Subscribe to comments with RSS

  1. monya said,

    on November 14th, 2010 at 07:38

    В роутерах D-Link есть встроенная функция родительского контроля.
    Можно как запретить определенные сайты, так и сделать чтобы заходило только к тем сайтам что ты разрешил.
    Даже расписание есть в какое время можно заходить а в какое нет.
    Например чтобы дети не смогли зайти на http://www.facebook.com/ после 22.00, очень удобно.
    Вот так выглядит: http://dl.dropbox.com/u/5746940/%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C.png

  2. monya said,

    on November 27th, 2010 at 08:17

    Вот еще DNS серверы расположенные в Москве и Питере: http://www.skydns.ru

Leave a Reply