Как удалить рекламу с Pixelserv на DD-WRT
Существует множество способов заблокировать рекламу в вашем браузере, но что, если вы можете заблокировать их на маршрутизаторе? Вот как использовать прошивку DD-WRT и преднамеренное «отравление DNS» для блокировки рекламы для каждого устройства в вашей сети.
обзор
Обновить: Руководство обновлено, чтобы отразить обратную связь, предоставленную комментаторами, и обновило антирекламный пакет, добавив новый исполняемый файл pixel-сервера и журнал изменений.
Первый вопрос, который у всех на уме сейчас: «Почему бы просто не использовать рекламный блок?»
Для многих людей просто нет причин, особенно с новой возможностью Chrome реплицировать расширения, которые вы используете, на каждый компьютер, на котором вы используете Chrome.
Ответ лежит где-то между уменьшенными накладными расходами на то, что не нужно учить всех пользователей вашей сети о блокировке рекламы (я говорю с вами, мама, сестренка и офисный секретарь), и удобством того, чтобы вы не беспокоились об этом. каждый компьютер, который вы настраиваете. Это предполагает, что в вашей сети будут некоторые компьютеры, на которых вы не собираетесь настраивать свою личную среду (например, «основные серверы» или виртуальные машины)..
ЗаметкаНесмотря на то, что я использую метод, описанный ниже, на домашнем маршрутизаторе, я считаю, что рекламный блок является отличным дополнением к нему, и я рекомендую использовать оба метода в сочетании. Кроме того, если у вас нет маршрутизатора DD-WRT, для этого достаточно использовать рекламный блок. На самом деле, мне очень нравится программа, я пожертвовал ее разработчику, и я призываю всех сделать это, чтобы ее развитие продолжалось.
Как это работает?
По сути, это работает путем преднамеренного отравления нашего DNS, чтобы вернуть определенный IP для доменов в неутвержденном списке. Этот неутвержденный список будет содержать доменные имена сайтов, которые отвечают исключительно за доставку рекламного контента, поэтому мы не будем сильно скучать по ним.
Мы настроим дополнительный HTTP-сервер на маршрутизаторе, чтобы он служил прозрачным однопиксельным изображением в качестве ответа на любой URL-запрос. В сочетании с «неправильным» разрешением DNS это заставит сетевых клиентов запрашивать контент с нашего внутреннего пиксель-сервера и получать в ответ пустое изображение.
Чтобы создать неутвержденный список, мы создадим один личный список в сочетании с двумя динамически загружаемыми списками. динамические списки - это файл хоста MVPS и список доменов Yoyo, вместе они содержат очень обширный список рекламных сайтов. Используя эти списки, мы должны просто добавить дельту сайтов, которых еще нет ни в одном из них, в наш личный список..
Мы также создадим «белый список» для доменов, которые мы не хотим блокировать по какой-либо причине..
Предпосылки и предположения
- Терпение молодой, это долго читать.
- Эта процедура была создана и протестирована на DD-WRT (v24pre-sp2 10/12/10 mini r15437), поэтому для его использования на вашем маршрутизаторе должна быть уже установлена эта версия или более поздняя. Больше информации на сайте DD-WRT.
- Для простоты объяснения предполагается, что маршрутизатор восстановлен до «заводских настроек по умолчанию» или что используемые настройки не изменились по сравнению с их «стандартными» настройками с тех пор.
- Клиентский компьютер использует маршрутизатор в качестве DNS-сервера (по умолчанию).
- Место для JFFS (в случае сомнений, я рекомендую использовать мини версия DD-WRT).
- Предполагается, что ваша сеть * уже установлена и что это класс C (тот, который имеет подсеть 255.255.255.0) в качестве последнего IP-адреса в этой сети класса C (x.y.z.254) Будет назначен для программы «Пиксель-сервер».
- Готовность к установке winSCP.
* Скрипт не сможет корректировать списки блоков после первого запуска до следующего цикла обновления (3 дня).
кредиты
Обновить: Особая благодарность «mstombs» за великолепный кусок кода на C без его работы, все это было бы невозможно, «Oki» за компиляцию версии и цитаты, совместимой с Atheros ;-) и «Nate» за помощь в QA-ing..
Несмотря на то, что с моей стороны было проделано много работы по совершенствованию этой процедуры, парни вдохновили ее на форуме DD-WRT, и некоторые основы этого руководства можно найти в разделе «Блокировка рекламы с помощью DD-». WRT (простой) »,« pixelserv без Perl, без каких-либо jffs / cifs / usb free »и« Flexion.Org Wiki на DNSmasq «, а также другие.
Давайте взломать
Включить SSH для доступа к SCP
Включив SSH, мы, в свою очередь, даем возможность подключаться к маршрутизатору по протоколу SCP. с этим включением мы можем затем использовать программу winSCP для визуальной навигации по структуре папок маршрутизатора (как мы увидим позже).
Для этого с помощью веб-интерфейса перейдите на вкладку «Услуги». Найдите раздел «Безопасная оболочка» и нажмите кнопку «Включить» для настройки SSHd..
После этого веб-интерфейс должен выглядеть так, как показано ниже, и вы можете нажать «Сохранить» (не подать заявку еще).
Включить JFFS
Для того, чтобы сделать эту настройку таким образом, что было бы стабильный, Воспроизводимый и * являющийся «хорошим гражданином Интернета», мы будем использовать JFFS для хранения как можно большего количества конфигураций. Есть и другие способы сделать это без включения JFFS, если вы не можете из-за нехватки места, но они здесь не рассматриваются.
* другие методы позволяют вашему маршрутизатору загружать исполняемый файл и динамические списки сервера пикселей каждый раз при запуске сценария. так как это создает нагрузку на серверы, содержащие списки и исполняемые файлы, а это кому-то стоит денег, этот метод старается избегать его, если это возможно.
Если вы еще не знаете, что такое JFFS, это объяснение, взятое из вики-статьи DD-WRT о JFFS, должно прояснить ситуацию:
Журналируемая файловая система Flash (JFFS) позволяет вам иметь доступную для записи файловую систему Linux на маршрутизаторе с поддержкой DD-WRT. Он используется для хранения пользовательских программ, таких как Ipkg и данных, в недоступной во флэш-памяти. Это позволяет сохранять пользовательские файлы конфигурации, размещать пользовательские веб-страницы, хранящиеся на маршрутизаторе, и многое другое, что невозможно без JFFS..
Чтобы включить JFFS на вашем маршрутизаторе, перейдите на вкладку «Администрирование» и найдите раздел JFFS. на рисунке ниже показано, где вы можете найти этот раздел на вкладке «Администрирование».
В разделе «Поддержка JFFS2» нажмите переключатели «Включить» для «JFFS2» и (когда они появятся) настройки «Очистить JFFS2». После выбора нажмите «Сохранить».
После сохранения настроек все еще на вкладке «Администрирование» перезагрузите маршрутизатор с помощью кнопки «Перезагрузить маршрутизатор». Это применит настройки и выполнит необходимый «формат» «раздела» JFFS..
Когда webGUI вернется из перезагрузки на вкладку «Администрирование», подождите еще полминуты и обновите страницу..
В случае успеха вы должны увидеть, что у вашего монтирования JFFS есть свободное место, как на картинке.
Настройка сервера Pixel
Загрузите и распакуйте анти-рекламный пакет для zd-архива dd-wrt, который содержит исполняемый файл pixel-сервера (мы не берем кредит, только избегаем «горячих ссылок»), сценарий блокировки рекламы (написанный вами по-настоящему) и личный список доменов, созданный «Митридатом Vii Eupator» и I.
Пришло время загрузить файлы в монтирование JFFS на маршрутизаторе. для этого установите winSCP (это тип установки «следующий -> следующий -> закончить») и откройте его.
В главном окне заполните информацию следующим образом:
Имя хоста: IP-адрес вашего маршрутизатора (по умолчанию 192.168.1.1)
Номер порта: оставить без изменений на 22
Имя пользователя: корень (даже если вы изменили имя пользователя для webGUI, пользователь SSH всегда будет * root *)
Файл закрытого ключа: оставьте пустым (это необходимо только при создании аутентификации на основе пары ключей, которой у нас нет)
Файловый протокол: SCP
Нам также нужно отключить «Поиск группы пользователей», как показано ниже (спасибо mstombs за указание на это), потому что winSCP ожидает полноценного Linux с другой стороны, который разработчики DD-WRT, несмотря на всю отличную работу, не смогли предоставить. (в основном потому, что просто не хватает места). Если вы оставите этот флажок установленным, вы увидите страшные сообщения при подключении и сохранении отредактированных файлов..
Выберите Advance, а затем снимите флажок «Поиск групп пользователей».
Хотя это не является обязательным, вы можете сохранить настройки сейчас для дальнейшего использования. Если вы решите сохранить настройки, что рекомендуется, также рекомендуется (несмотря на откровенные вопли из «параноика безопасности» о том, что мы оскверняем само существование SSH), что вы сохраняете пароль.
Тогда ваше главное окно будет выглядеть, как на картинке, и все, что вам нужно будет сделать, чтобы подключиться к маршрутизатору, - это дважды щелкнуть по записи..
Поскольку вы впервые подключаетесь к маршрутизатору, winSCP спросит, готовы ли вы доверять отпечатку пальца другой стороны. Нажмите «Да», чтобы продолжить.
Разработчики DD-WRT внедрили приветственное сообщение Banner с некоторой информацией об установленной вами прошивке. когда он красный, нажмите кнопку «Никогда больше не показывать этот баннер» и «Продолжить».
После подключения перейдите в папку верхнего уровня (корневой каталог AKA «/»), а затем вернитесь к «/ jffs», так как это единственное место для постоянной записи в файловой системе маршрутизатора («/ tmp» не выживает после перезагрузки). а остальные только для чтения).
Создайте новую папку, нажав F7 или щелкнув правой кнопкой мыши пустое место, наведите курсор на «New» и нажмите «Directory».
Назовите новый каталог «DNS». мы создаем этот каталог, чтобы хранить вещи в каталоге jffs, организованные для будущего использования, и потому что мы в основном меняем принцип работы службы DNS.
Скопируйте файлы «pixelserv» и «disable-adds.sh» из zip-архива anti-ads-pack-for-dd-wrt, выбрав их (используйте клавишу «insert»), нажав «F5», а затем «Copy». ».
Примечание: если ваш маршрутизатор основан на Atheros (вы можете проверить это в вики DD-WRT), вам нужно будет использовать pixelserv_AR71xx, предоставленный Oki и включенный в пакет, и переименовать его в «pixelserv», прежде чем продолжить.
Когда файлы находятся на маршрутизаторе, нам нужно сделать их исполняемыми, выбрав их (снова используйте «insert»), щелкните правой кнопкой мыши, затем «properties».
В окне свойств нажмите на «X» для строки «Владелец». что даст разрешение на выполнение файлов.
Настройки роутера
Теперь, когда этап установлен, мы можем указать маршрутизатору запускать скрипт блокировки рекламы при запуске..
Для этого в webGUI перейдите на вкладку «Администрирование», а затем на вкладку «Команды»..
В текстовом поле «Команды» напишите расположение скрипта как «/jffs/dns/disable_adds.sh», как на рисунке, и затем нажмите «Сохранить запуск».
В случае успеха вы должны увидеть, что скрипт стал частью запуска роутера, как на картинке выше.
Настройка списка персональных заблокированных доменов (необязательно)
Этот список позволяет вам добавлять домены в неутвержденные списки, если вы обнаружите, что два динамических списка не ловят что-то.
Для этого есть два варианта, и они работают совместно, поэтому вы можете использовать оба варианта в зависимости от того, что вам удобнее.
Замечания: синтаксис важен, На самом деле мы создаем директивы конфигурации, которые демон DNSMasq (процесс, отвечающий за преобразование DNS-имени в IP) будет использовать напрямую. Таким образом, неправильный синтаксис здесь приведет к сбою службы и не сможет маршрутизатор разрешать IP-адреса для доменных имен (вас предупредили).
Чтобы найти блокирующие доменные имена нарушителей, вы можете использовать наше руководство «Найти секретные сообщения в заголовках веб-сайтов» в качестве учебного пособия. Шаги по поиску названий рекламных доменов практически одинаковы, только в этом случае вы ищете адрес вместо сообщения.
Первый и, по общему признанию, более доступным способом является помещение списка в поле конфигурации «DNSMasq» в wegGUI. Это связано с тем, что для добавления в этот список можно просто получить доступ к веб-интерфейсу пользователя, а не идти «под капот» для внесения изменений..
Перейдите на вкладку «Службы», найдите раздел «DNSMasq» и там найдите текстовое поле «Дополнительные параметры DNSMasq»..
В этом текстовом поле введите списки доменов, которые вы хотите заблокировать с помощью синтаксиса «address = / domain-name-to-block / pixel-server-ip», как показано на рисунке ниже:
Где в этом примере «192.168.1.254» - это IP-адрес, который генерируется для пиксельного сервера на основе «сетевого адреса» вашей локальной сети. Если ваш сетевой адрес отличается от 192.168.1.x, вам придется соответствующим образом настроить адрес для пиксельного сервера..
Когда закончите, нажмите «Сохранить» внизу страницы (пока не применяйте).
Второй вариант состоит в том, чтобы составить список доменов, которые вы хотите заблокировать, к файлу «personal-ads-list.conf», который собрал я и «Mithridates Vii Eupator». Этот файл является частью zip-архива, который вы скачали ранее, и это отличное начало для обоих методов.
Чтобы использовать его, при необходимости, используйте ваш любимый текстовый редактор для настройки IP-адреса пиксель-сервера (здесь применяются те же ограничения, что и выше). Затем просто скопируйте его в каталог «/ jffs / dns», как у вас есть другие файлы. После этого вы можете использовать WinSCP для редактирования и добавления доменов..
Настройка белого списка
Это список доменов, которые будут опущены в динамических списках «hosts» и «domains».
Это необходимо, потому что простая блокировка некоторых доменов приводит к сбоям в работе сайтов, использующих их. самый примечательный пример - «google-analytics.com».
Если мы заблокируем его домен, это не изменит того факта, что сайты, которые его используют, заставят ваш браузер загружать JavaScript, который запускается при таких событиях, как выход из страницы. Это означает, что для такого сайта ваш браузер попытается «позвонить домой», связавшись с доменом Google, не поймет ответ и вам придется подождать, пока не истечет время ожидания сценария, чтобы перейти к следующей странице. Это не очень приятное занятие для серфинга, и поэтому любой домен, содержащий «google-analytics» и «googleadservices», * жестко закодирован и освобожден от фильтрации.
Этот список создан для вас с упомянутыми выше доменами при первом запуске скрипта в каталоге «/ jffs / dns».
Чтобы использовать белый список, откройте файл с winSCP и **взвешивать в список доменов, которые вы хотите исключить, при этом соблюдайте осторожность, чтобы не оставить пустых строк (если оставить пустую строку, все домены будут удалены из всех списков).
* Хотя скрипт создает белый список с доменами в нем при первом запуске, он НЕ настаивает на их подарках для будущих запусков. поэтому, если вы считаете, что Google должен быть заблокирован, несмотря на вышеупомянутые проблемы, вы можете удалить домены из белого списка.
** Вы должны ввести новые домены, которые вы хотите в начале списка. Это из-за ошибки в том, как bash интерпретирует новые строки ... извините, у меня пока нет обходного решения.
выполнение
На этом, наконец, пришло время запустить скрипт и посмотреть результаты, просто перезапустив роутер..
Чтобы сделать это из веб-интерфейса пользователя, на вкладке «Администрирование» вернитесь к «Управление», в нижней части страницы нажмите «Перезагрузить маршрутизатор» и подождите, пока маршрутизатор не вернется..
Впервые сценарий может выполнить свои обязанности в течение нескольких минут..
На маршрутизаторах типа WRT54Gx вы будете знать, когда скрипт завершит выполнение, поскольку он будет мигать оранжевым светодиодом Cisco на передней панели маршрутизатора (другие маршрутизаторы должны иметь аналогичный знак «сказать хвост»).
Обновление: эта часть была * удалена после того, как было обнаружено, что она не является аппаратно-независимой функцией.
Поскольку мы пытаемся увидеть отсутствие элементов в Интернете, я рекомендую просто перейти на несколько сайтов, чтобы увидеть влияние.
Однако, если вы хотите убедиться, что процедура прошла успешно, первый шаг отладки в разделе устранения неполадок - отличное место для начала..
* Это на самом деле закомментировано, так что вы можете восстановить его, если вы уверены, что это не вызовет проблем в вашей настройке.
наслаждаться!
Поиск проблемы
Если вы столкнулись с проблемами, есть несколько вещей, которые вы можете сделать, чтобы проверить, что пошло не так.
- Проверьте, разрешен ли рекламный домен для IP-адреса pixelserv..
Вы можете сделать это, введя команду nslookup для «оскорбительного» домена. Например, «ad-emea.dubleclick.com» является частью заблокированных хостов из личного списка. Если в командной строке ввести «nslookup ad-emea.dubleclick.com», результат должен выглядеть следующим образом:
Где нормальный разблокированный ответ будет выглядеть так: - Сделать больше.
Чтобы убедиться, что ничего с настройками вашего роутера не конфликтует с конфигурацией рекламного блока, восстановите роутер до «Заводских настроек» и попробуйте снова. После успешного добавления добавьте свои пользовательские изменения в надежде, что они больше не будут конфликтовать. - Убедитесь, что ваш клиент использует маршрутизатор в качестве DNS.
Особенно при использовании VPN или сети, которая более сложна, чем обычная настройка маршрутизатора на компьютер, возможно, что ваш клиентский компьютер просто не использует маршрутизатор в качестве своего DNS. В приведенной выше команде очень легко увидеть, какой DNS-сервер использует клиент. Если IP-адрес не совпадает с маршрутизатором, вы обнаружили проблему. - Очистить кеш DNS ваших личных машин.
Это потому, что в противном случае вы все равно можете видеть рекламу на сайте, с которым вы тестируете, просто потому, что ваш компьютер уже знает, как получить рекламный контент самостоятельно, не обращаясь к нему за помощью в DNS. На окнах это будет «ipconfig / flushdns». - Закройте браузер.
Иногда браузер хранит информацию в кеше, поэтому очистка кеша DNS, как показано выше, не помогает. - Если есть сомнения, перезагрузите компьютер.
Иногда кэши могут сохраняться, и лучший способ избавиться от них - это перезагрузить компьютер. Начните с маршрутизатора и, если проблема не устранена, клиентский компьютер. - Используйте системный журнал.
Вы можете активировать демон системного журнала маршрутизатора, а затем просмотреть сообщения, чтобы выяснить, не возникает ли у сценария каких-либо проблем, изучив его сообщения. Также скрипт добавляет некоторые псевдонимы команд для облегчения отладки..
Для этого перейдите на вкладку «Службы» и включите демон системного журнала, как показано на рисунке ниже:
Примечание. «Удаленный сервер» используется, когда у вас есть сервер прослушивания системного журнала на другом компьютере (например, с киви) если у вас его нет, просто оставьте это поле пустым.
После включения вы можете увидеть сообщения отладки, посмотрев на / вар / журналы / сообщения файл в терминале.
* Для просмотра ВСЕХ сообщений при загрузке вы можете использовать «more / var / log / messages».
* Чтобы увидеть только сообщения от скрипта в журнале, используйте псевдоним «clog».
* Для просмотра сообщений по мере их поступления в режиме реального времени используйте «tail -f / var / log / messages» или его псевдоним «tlog». - Понять сценарий.
Несмотря на то, что я сделал это видео на YouTube для более старой версии этого руководства и сценария, в нем по-прежнему содержится много истин и объяснений, применимых к работе новой и улучшенной версии..