Тоже пример... Конфиг "Редиректора для замены баннеров посредством squid. Автор Владимир Олейник." Без изменений и почти без комментариев...
# Пример рабочей версии # конфигурационного файла редиректора # для squid по переназначению баннеров # # D - адреса клиентов, на которых идет директом # R - адреса клиентов, для которых идет переназначение # L - описание типа записи в логфайл # P - склейка acl, назначенных ранее через D,R,L или P # S - назначение url/ip/mask/time как переменной # U - url ( маски: bash/ksh glob *?!@(pats|pats)*?[!a-z]\ , # ^ логика NOT: но не следующие) # или F - файл с масками -------- // ----------- # I - подключить файл для вставки дополнительных конфигов # A - проверка изернет аппаратного адреса клиентов # J - обход анонимайзеров и поисковых редиректоров # Формат acl (списка доступа): # R_или_D имя_листа список_IP время_действия # допускается опускать время действия, что аналогично: всегда - * # ip и mask и время можно использовать через переменные, # назначив их опцией S, # маску можно задавать в битах, /0 = 0.0.0.0 # одиночное_IP: IP.IP.IP.IP или IP.IP.IP.IP/MASK.MASK.MASK.MASK # или IP.IP.IP.IP/MSK_bits # если /маска не указана, по умолчанию берется /255.255.255.255 # диаппазон_ip: IP1-IP2 # список_IP: одиночное_IP__или__диаппазон_ip+список_IP # пример: # 1.1.1.1+192.168.0.1-192.168.0.10+192.168.1.0/24+10.10.2.0/255.255.255.248 # # # # Формат описания типа записи в логфайл: # L имя_листа действие опции # где: # действие: R или D или *, т е записывать в лог только события # по редиректингу или директу или все соотвественно # опции: набор выводимой информации, перечислять буквы подряд или через запятую # D: дата в формате time_t # U: входной url # C: клиент # M: имя сработавшей маски # N: имя сработавшего acl # выходной url (упортеблять одну из нижеследующих опций): # O: полный выходной url # R: только когда произошло переназначение # -: тоже что и R, но когда произошел директ - записывать символ '-' # Порядок следования будет в логфайле соответствовать этому описанию. # При отсутствии опций по умолчанию подразумевается U,C,- # ВНИМАНИЕ! Правило склейки с acl R/D и области действия L: # Acl L действует на все acl слева-направо склеиваемые через P. # Подробнее см. в примере описания команды P. # # P новое_имя_листа имя_листа1+имя_листа2... # допускается старый формат: # P новое_имя_листа имя_листа1 имя_листа2+имя_листа3... # как следствие, работает такой формат: # P новое_имя_листа имя_листа1 имя_листа2 # # Особенность склейки с правилами логирования L. # пример: # P alc_rd2 acl_rd0+acl_l0 # P alc_p acl_rd1+acl_rd2+acl_l1+acl_rd3+acl_l2 # где alc_rdX - правила R/D, а acl_lX - правила L. # В результате этого примера ВСЕ результирующее правило acl_p # будет логироваться по acl_l2, # а правила acl_rd1 и acl_rd2 будут логироваться с опциями дополнительно # из правила acl_l1, если там есть опции, отсутствующие в acl_l2, # но правила логирования не распространяются на предыдущие листы при склейки # acl только типа R/D, даже если они были ранее склеены с правилами # логирования предыдущими командами P, т е только на правило acl_rd2 из acl_p # будет распространяться _дополнительные_ к alc_l1 и acl_l2 опции из acl_l0. # Отдельное применение далее acl_rd2 будет логироваться только по acl_l0. # Встроенный acl с именем "*" (все адреса с переназначением без логирования) # R * 0.0.0.0/0 * # # Пример склейки со встроенным acl * в реальных настройках (см ниже) # # По умолчанию добавляется в конечный acl - "никого не переназначать" # D default_policy 0.0.0.0/0 * # примечание: default_policy добавляется логически, acl как таковой - # не определен, а * - acl определен и поэтому не переопределяемый # Формат времени_действия acl: # * - всегда # день_недели:время или день_недели-день_недели:время # день_недели: от 0 до 6, где 0 - воскресенье, * - любое, *-5 - воскр-пятн # время: * или чч.мм-чч.мм (например, 7-* означает 07.00-23.59) # время_действия,время_действия... # # Пример нерабочего времени: # 0:*,1-5:0-7.59,1-5:17-*,6:* # Пример для рабочего времени - в реальных настройках в переменной $WT # Формат переназначений: # U/F url/file_соответственно url_куда_переназначить имя_acl # # D not_work_time 10.0.0.0/8 0:*,1-5:0-7.59,1-5:17-*,6:* # U http://www.sex.ru http://myhost/deny_sex.gif not_work_time # # Допускается не указывать встроенный acl * (редиректить всех и всегда) # Если не указаны протоколы http:// или ftp:// для входящего url, # по умолчанию подставляется http:// # U www.my_provider.ru/* http://www.myhost.ru/my_provider/mirror/ # # Маски в url или файле составляются по принципам: # * - любой набор символов в том числе и пустой # [A-Z] - символ из диаппазона (регистр не учитывается!) # ? - любой один символ # ksh/bash расширения: # [?*+@!](pat-list), где pat-list - список из одной или # нескольких масок, разделенных `|'. # Необходимый модификатор перед '(' означает: # ?(patlist) ищется пустое или одиночное количество вхождений # *(patlist) ищется любое, в том числе пустое, количество вхождений # +(patlist) ищется любое непустое количество вхождений # @(patlist) ищется в точности такое вхождение # !(patlist) ищется любое вхождение, за исключением # любого из указанных # маска1^маска2 - если удовлетворяет входной url первой маске последующие # маски запрещают совпадения # Пример: count*^country*^countri* - если это "счетчик", но не "страна/ы". # маскирование с помощью символа \ : \? # Все параметры могут быть объявлены через переменные # Формат обхода анонимайзеров или поисковых редиректоров (прыжки): # J URL url_что_пропустить имя_acl # # На примере будет наглядно: # J ?(+([!/.]).)ya?(ndex).ru/redir\?*url=@(ht|f)tp://* ?(+([!/.]).)ya?(ndex).ru/redir\?*url= # J ?(+([!/.]).)rambler.ru/click\?*URL=@(ht|f)tp://* ?(+([!/.]).)rambler.ru/redir\?*URL= # # Ищется по маске URL и если совпало и alc сработал на редирект, # то происходит "прыжок" на "величину" маски url_что_пропустить, тем самым # пользователь открывает url, находящийся за редиректингом анонимайзера # или счетчика поисковиков. # Для примера: http://www.ya.ru/redir?url=http://www.simtreas.ru # редиректор даст на выходе URL = http://www.simtreas.ru . # Пояснение к маске: # Маски составляются по принципам описания формата к U/F # *(+([!/.]).) - любое количество субдоменов в том числе и пустое # @(ht|f)tp:// - http:// или ftp:// обязательно присутствующее # \? - символ '?', а не как спецсимвол маски # # Необходимо, чтобы url_что_пропустить в точности повторял начальную часть # URL, т е был короче и состоял из тех же символов маски. # Допускается не указывать встроенный acl = *, как в примере выше. # Если не указаны протоколы http:// или ftp:// в начале масок, # по умолчанию подставляется http:// # Формат определения локального хоста и url для переназначения: # S variable value # или, что равнозначно # S $variable value # или (пробелы вокруг `=' обязательны): # S var = value # # Допускается формирование url из нескольких переменных. Разделители: $/+ # Переменная должна быть объявлена до ее использования # Пример в рабочих настройках # Формат подключения дополнительных конфигурационных файлов: # I тип_проверки_на_ошибку файл # тип_проверки_на_ошибку: E или W. E - при обнаружении ошибки прекращать # работу, W - записать предупреждение и продолжить, если это возможно, # работу с основным конфигом. # Формат проверки изернет аппаратного адреса # A ip arp URL_to_deny # или # A ip/acl_L arp URL_to_deny # если клиент (IP) имеет отличный от указанного аппаратный адрес происходит # редирект любого запрошенного URL на указанный URL_to_deny и если указан # acl логирования (acl_L), то в лог будет произведена запись в соотвествии # с конфигурации acl_L, причем в поле имени acl: ARP_NO_MATCH, # а в поле маски: * ; если заказано логирования соотвествующего # сработавшего acl с директом, то записей в логе будет две. # # arp-адрес берется из данных программы /sbin/arp, необходимо настроить # посылку сигнала редиректору о изменении arp в соотвествии с п. 14 README # Проверка соотвествия происходит только в самом конце всех # указанных в конфиге правил и срабатывает только при окончательном # директном обращении. # допускается указывать IP и URL через переменные # также допускается указывать несколько arp для одного IP (просто # указанием несколько правил A с одним IP), при этом если контроллируемый # IP не имеет ни один из указанных arp-адресов, произойдет редирект и # логирование по первому упоминанию этого IP в конфиге и # для последующих правил с одинаковыми IP можно опускать URL для редиректа, # а правило логирования тем более не имеет смысла # Примеры: # A 192.168.10.1 00:60:52:09:EC:E6 http://www/arp_deny.html # L nearp R # A $CLIENT1/nearp 00:60:52:09:EC:E7 $WWW/$REDIR/arp_deny.html # A $CLIENT1 00:60:52:09:EC:EE # # Логические следствия: # 1. Если некоторый диаппазон получает IP от DHCP и доступ запрещен, # поставте acl в squid запрет на эти все IP # 2. Если некоторый диаппазон получает IP от DHCP и доступ разрешен, # не указывайте эти IP в правилах A # 3. Если выбор разрешенных комбинаций IP/ARP ограничен, укажите все # эти комбинации в правилах A # Мои рабочие настройки # Определение локального хоста и готовых url для переназначения S MYHOST http://www S RDR /redir.www S URLRDR $MYHOST$RDR S 1X1 $URLRDR/gif1x1.gif S TOP100 $URLRDR/top100.gif S COUNT $URLRDR/list.gif S TOP1000 $URLRDR/1000.gif # Определение адресов any_host и рабочего времени S AH 0.0.0.0/0 S WT 1-5:8-17 # "Хорошие юзверя" - директ D good_users 192.168.10.0/255.255.255.248 R acl_wt 192.168.0.0/16 $WT D real_ip 195.9.147.0/24 D my_real_ip 195.9.147.0/255.255.255.248 P rulez_acl good_users+acl_wt+real_ip P good_r my_real_ip * # А этим - редирект в рабочее время R acl_dt1 192.168.10.22 $WT R acl_dt2 192.168.10.13 $WT R acl_dt3 192.168.10.24 $WT R acl_dt4 192.168.10.11 $WT R acl_dt5 192.168.10.4 $WT R acl_dt6 192.168.10.31 $WT R acl_dt7 192.168.10.27 $WT R acl_dt8 192.168.10.23 $WT R acl_dt9 192.168.10.14 $WT P acl_dt acl_dt1+acl_dt5+acl_dt8+acl_dt6 # запрещения качания в рабочее время U http://* $URLRDR/deny_traf.html acl_dt U ftp://* $URLRDR/deny_traf.html acl_dt # Банеры и счетчики режу для всех и всегда # U */1pix*.gif* $1X1 U *zdnet.com/adverts/* $1X1 U *extreme-dm.com/* $1X1 U */1x1.gif $1X1 U */image.ad\?* $1X1 U a*.g.*.net/* $1X1 U links.cnt.ru/*.jpg $1X1 U */images/empty.gif $1X1 U www.*.geocities.com/include/branding/.*.js $URLRDR/empty.js F redir.urls/open-win.urls $URLRDR/close_win.html U */top100.* $TOP100 U */rambler*.gif $TOP100 U *infoart.ru/cgi-bin/ihits/counter.* $URLRDR/infoart.gif U *count*^*country*^*countri*^http://ftpsearch.lycos.com/cgi-bin/search\?* $COUNT U *.hitbox.com/*.cgi $COUNT U *.hitbox.com/*\?* $COUNT U */cgi-bin/ping.cgi\?* $COUNT U *.ru/*/stat.pl\?* $COUNT U */cgi-bin/cnt.cgi\?* $COUNT U */cgi-bin/1000* $TOP1000 U www.statistic.ru/* $TOP1000 U *pingwin.ru/img/pingwin* $URLRDR/pingwin2.gif U img.one.ru/*one88x31a.gif* $URLRDR/one.gif U www.runetnews.ru/img/rnt.gif $URLRDR/rnt.gif F redir.urls/banners.urls $URLRDR/empty.gif # Блокировка sex в рабочее время # F redir.urls/sex.urls $URLRDR/nosex.jpg rulez_acl # Блокировка для конкретных IP всегда (незанятые IP или недопущенные до халявы) D acl_blk_xa1 192.168.10.0/26 R acl_blk_xa2 192.168.0.0/16 L log r d,u,c P acl_blk acl_blk_xa1+acl_blk_xa2+log U http://* $URLRDR/deny_traf.html acl_blk U ftp://* $URLRDR/deny_traf.html acl_blk # Обход редиректоров Рабмлера, Яндекса и Альтависты, сайта "Закладки.ru" J *(+([!/.]).)ya?(ndex).ru/redir\?*url=@(ht|f)tp://* *(+([!/.]).)ya?(ndex).ru/redir\?*url= J *(+([!/.]).)rambler.ru/click\?*URL=@(ht|f)tp://* *(+([!/.]).)rambler.ru/click\?*URL= J *(+([!/.]).)altavista.com/r\?*&r=@(ht|f)tp* *(+([!/.]).)altavista.com/r\?*&r= J *(+([!/.]).)zakladki.ru/*\?*&url=@(ht|f)tp* *(+([!/.]).)zakladki.ru/*\?*&url= # Мой ARP никому не отдам, IP - два, один реальный, другой - дает vmware A 192.168.10.2 00:50:56:64:C0:50 $URLRDR/deny_arp.html A 195.9.147.1 00:60:52:09:E3:3F $URLRDR/deny_arp.html
Я в нем не разобрался. А вам слабо?