Использование редиректора

Январь 26, 2007

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

Соответственно экономии банерного трафика мы не получаем.
Для этого необходимо предпринять несколько другие действия, например использовать программу редиректа банерных и порно УРЛ на что-то иное.
Реализация
(Все примеры приведены для ОС Linux)
Итак: необходимо подменить запрашиваемый УРЛ банерной или порно системы на другой, который находится в пределах локальной сети, т.е. не тянет инет-траффик.

1. Конфигурирем сквид. Необходимо вписать в переменную redirect_program конфигурационного файла сквида путь к программе редиректору, например:
redirect_program /usr/local/redir/redir.php
И чуть ниже есть переменная, отвечающая за количество запускаемых процессов редиректора.
redirect_children 15
Каждый может подобрать себе значение подходящее для его системы, в зависимости от количества пользователей. Мне сложно сказать как его правильней расчитать, но для сети с 20-25 одновременными пользователями сквида значение 15 вполне подходит.
Так же Вам для при использовании редиректора больше не понадобятся строки
http_access allow NoBanners
http_access deny Banners
http_access deny Porno
Закомментируйте их.

2. Скачиваем программу редиректора здесь и распаковываем ее в каталоге /usr/local/redir/.(Посмотрите страницу ниже и вы увидите варианты редиректора на c, perl, bash, возможно какой-то из них Вам подойдет больше, я бы советовал разобраться с редиректором написанным на Си)
Получаем следующие файлы:
-rw-r–r– root.root phpcm.ini Конфигурационный файл для ПХП-скрипта, запускаемого из коммандной строки
-rw-r–r– nobody.nogroup redir.log Лог-файл редиректора, его необходимо поместить в каталог, соответствующий указанному в самом скрипте(следующий файл).
-rwx—— nobody.root redir.php Собственно скрипт редиректора

3. Обратите внимание! Все права на запуск и доступ к файлам редиректора и лог-файла должны быть соблюдены, т.к. сквид работает в системе под юзером nobody, т.е. он должен иметь права на запуск редиректора, а редиректор, соотвественно, права на запись в свой лог-файл. 8)
4. Открываем для редактирования скрипт redir.php:
$banner=’/etc/ban’; // Путь к банер-листу
$reurlb=’http://my.host/banner.html’; // УРЛ, на котрый будет заменятся банерный УЛР
$porno=’/etc/por’; // Путь к порно-листу
$reurlp=’http://my.host/pr.html’; // УРЛ, на который будет заменяться пороно-УРЛ
$nobanner=’/etc/noba’; // Путь к небанер-листу
$log=’/usr/local/squid/logs/redir.log’; // Путь к лог-файлу.
Изменяем значения переменных в соответствии с Вашими настройками. Если вы пользуетесь настройками, описанными на основной странице, то Вам ненужно менять пути к стоп-листам.
В переменные подменяемых УРЛ лучше вписать что-то находящееся на Вашем локальном веб-сервере, например на писать малеьную страничку с записью о том, что доступ запрешен или еще что-то подобное. Если у Вас нет в локальной сети веб-сервера, тогда либо установите его, либо оставьте эти строки пустыми, что должно привести сквид в непонимае происходящего(честно скажу, что такую конфигурацию я не проверял). 8)
5. Обратите внимание на заголовок скрипта редиректора:
#!/usr/local/bin/php -qc /usr/local/lib/phpcm.ini
Здесь важно подставить ввиде файла настроек ПХП файл, находящийся в архиве. Т.е. удостоверьтесь, что путь верный. Также проверьте путь в вашему php-процессору.

6. Проверка работы скрипта:
Запустите скрипт из коммандной строки:
./redir.php
Сразу после запуска скрипт записывает в массивы все содержимое стоп листов и ждет ввода данных. Вы можете вручную написать совершенно любую последовательность символов и нажать ввод. Скрипт должен ответить Вам точно такой же последовательность:
sdffdhsdgs(Вы)
sdffdhsdgs(cкрипт)
Теперь проверка отработки банера, вводми следующее:
banner(Вы)
http://my.host/banner.html(cкрипт)
Другими словами скрипт обнаружил УРЛ банера и подменил его. Вы можете это проверить еще вводя любые другие УРЛ, которые расположены в стоп-листе банеров. Так же при осуществлении подмены скрипт пишет информацию об этом в лог-файл, проверьте:
07.12.2002 13:12:36 > [banner]banner
Формат: дата время IP-адрес > [тип подмены]урл
адрес ИП появиться только при работе со сквидом.
Теперь вы можете проверить порно-лист:
sex.com(Вы)
http://my.host/pr.html(скрипт)
И т.д. Если вы введете УРЛ, котрый подходит под маску, например, порно и одновременно присутствует в списке небанеров, тогда подмена не будет произведена.
Далее советую проверить правильную расстановку прав доступа к файлам используемым редиректором, для этого нужно запустить редиректор от пользователя nobody(или подставьте сюда пользователя от которого работает ваш squid):
shatpav:/usr/local/redir# su - nobody -c /usr/local/redir/redir
Can’t open log file /usr/local/squid/logs/redir.log - 13
Здесь проблема с правами на запись в лог файл. Поправьте права и все будет в порядке.

7. Когда вы убедились, что закат солнца вручную проходит нормально - можно перезапускать сквид.
killall -1 squid
Смотрим в логи сквида, точнее в лог, куда он пишет свое состояние, обычно это syslog. Наблюдаем строку
helperOpenServers: Starting 15 ‘redir.php’ processes
и смотри, что бы далее небыло никаких ошибок. Будем надеяться, что все в порядке. Проверяем, работает ли у нас вообще доступ в инет…работает. 8) Тогда смотрим лог-файл редиректора и лезем на любой портал… наблюдаем в лог-файле данные о подменах. Пытаемся лезть на sex.com, наблюдаем нашу страницу и данные о подменах в лог-файле. Наслаждаемся жизнью. 8) Не забывайте, что теперь Вам нужно перезапускать не только сквид, но и редиректор, т.к. лучший вариант - это убить редиректор и перезапустить сквид.

Опять очень надеюсь, что все описано правильно и понятно и прошу прощения за грамматические ошибки, неуч. 8) Спасибо.

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

BASH: Нашел…8) redir.sh Это очень упрощенный вариант, он имеет ряд недостаков. Одним из главных его недостатков является сканирование стоп-листов при каждом запросе УРЛа. Да, в некотором смысле это и приемущество, т.к. при изменении стоп листов нет необходимости в перезагрузке сквида и редиректора, т.к. изменения автоматически будут перечитаны.
И не забудте про права на запуск, при установке этого редиректора!
PERL: Написал…8) redir.pl Полностью функциональный редиректор. Такой же, как и на ПХП, алгоритмически. Смотрите, используйте.
Си: Это простейший вариант, написанный в свободное время - redir-0.7.0.c.tar.gz(24.09.2005) Полностью функциональный редиректор. Такой же, как и на ПХП или Перл, алгоритмически. Этот редиректор самый ‘правильный’ из всех, под ‘правильностью’ в данном случае понимается нагрузка на процессор и использование памяти. При тесте в top, этот редиректор ни разу не попал в список наиболее ресурсоемких процессов, в то время как ПХП и ПЕРЛ - редиректоры на пике загрузки периодически попадали на первое место. Другими словами я советую разобраться и использовать именно этот вариант. (Ну или может кто-то возмется и напишет лучше). Недостатком данного варианта является жесткая прописка в коде Си используемых настроек. Т.е. для изменения настроек Вам прийдется перекомпилировать редиректор.
Для использования:
- стяните архив,
- распакуйте в любой удобный каталог,
- откройте для редактирования файл redir.c
- в начале файла вы увидите все неоходимые для работы установки, вот их и меняйте в соответствии с Вашими нуждами(ВНИМАНИЕ1 для версии >=0.3 здесь нужно указать только расположение конфигурационного файла, все остальные настройки делаются в конфигурационном файле)(ВНИМАНИЕ2 в версиях >=0.6 появился список IP-адресов, для которых никакие редиректы не выполняются, список хранится в отдельном файле и определяется переменной noredirip - этот файл обязательно должен присутствовать, хотя бы пустой! Еще обратите внимание на то, что бы в этом файле не было лишних пробелов в начале или в конце IP-адреса(ов))
- Обратите внимание на переменную logyes=1 - логфайл включен, logyes=0 - логфайл выключен. Для отладки используйте включенное значение, после отладки лучше выключить.
- даем команду make - и получаем файл redir, который и есть наш редиректор.
- можете проверить работу редиректора, просто запустив его из шелла, так, как это описано выше в инструкции для ПХП-варианта. Не забываем при отладке смотреть в логи.
- копируем редиректор в нужное место, меняем настройки сквида, перезапускаем сквид и наслаждаемся жизнью.

New Еще один вариант редиректора, написанного на Си. - redir-aa-2.c.tar.gz. Этот редиректор улучшенный вариант ранее описанного редиректора, его любезно предоставил Андрей(aaakh№zaz.zp.ua). (make,make install,make clean, make deinstall)
Я воспользовался Вашим редиректором, тем который на с. Настроил, работает. Когда глянул в код программы, увидел что можно написать лучше. Присылаю свой вариант. Основное отличие - все адреса хранятся в связных списках и занимают в памяти ровно столько места, сколько нужно. По информации в top мой вариант программы занимает в 2 раза меньше места в памяти. Быстродействие тоже должно увеличиться. Программа писана на с++, по-другому не умею ;) Andrew

ЗЫ Про скрипт написанный на ПХП - к сожалению у меня сейчас на месте теста и сквида машина с php-4.2.3, на других версиях пока не тестировал, но теоритически должно работать без проблем

И на последок хочется сказать, что скрипты эти в зависимости от нагрузки на прокси-сервер по показателям мониторингов заметно грузят систему(исключением является редиректор написанный на Си), в связи с чем я советую после отладки скрипта отключить логирование редиректов. В любом случае там много информации, которая в большинстве своем является ссылками на банеры и потому безсмыслена. 8)
Павел Шатерник

Все версии редиректораdistrict 9 neill blomkamp District 9 trailers district 9;
2 girls 1 cup original video 656. myspace login District 9 two girls one cup original 147.

Оставить комментарий