Страница 1 из 1

FreeBSD+Cisco+WCCP2+Squid

Добавлено: 2011-03-10 6:58:00
berserkdeep
Задача поставлена редеректить пользователей на спец страницу по истечению определенного лимита, ну и писать в лог кто куда ходит или резать всякое социальное зло по типу однотабуреточники. Пользователи терменируются на роутере в главных ролях которого cisco 7206. В роли палача веб трафика будет Squid под чутким руководством FreeBSD.


Настроим Cisco
у меня это Cisco IOS Software Version 12.2(33)SRC6
ip wccp web-cache redirect-list test password 7 *****
где redirect-list test это acl в котором надо запретить прямое обращение к freebsd
ip access-list standard test
deny IP.freebsd.mashine
permit any
и password 7 **** собственно пароль для авторизации squid`a

теперь надо на итерфейсе через который топают пользователи добавить
ip wccp web-cache redirect in
С настройкой Cisco закончили

Теперь настроим FreeBSD 7.3

Включаем firewall и форвард пакетов, добавим и скомпилируем ядро с параметрами
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=1000
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT
options LIBALIAS

options IPDIVERT
options IPSTEALTH
options DUMMYNET
установим Squid 2.7
/usr/ports/www/squid

с доп модулями
[X] SQUID_WCCPV2 Enable Web Cache Coordination Prot. v2
[X] SQUID_IPFILTER Enable transp. proxying with IPFilter
минимальный конфиг для сквида
http_port 127.0.0.1:3128 transparent
cache_mem 50 MB
maximum_object_size 16000 kb
forwarded_for on
visible_hostname wccp server
wccp2_router IP.Cisco.router ## Кстати сюда можно через пробел дописать еще IP роутеров если они у вас есть, ну и конечно надо будет повторить настройки по типу ger2, gre3 etc.
wccp2_rebuild_wait on
wccp2_forwarding_method 1
wccp2_assignment_method 1
wccp2_return_method 1
wccp2_service standard 0 password=***** ##пароль для авторизации на Cisco
url_rewrite_program /usr/local/bin/squidGuard ##Заворот на сквид гуард

access_log /var/log/squid/access.log squid

acl all src 0.0.0.0/0.0.0.0
http_access allow all
установим SquidGuard
/usr/ports/www/squidguard

Он понадобиться для манипуляций с веб трафиком

У меня задача была на первом этапе редиректить все попавшие пакеты определенных IP на определеную страницу.
source ban {
ip *IP адреса жертв* ## можно всех под нож вот так 0.0.0.0/0
}

acl {

ban {
pass none
redirect http://www.****.ru/nomoney.html
}

default {
pass none
redirect http://www.*****.ru
}
}
после манипуляций с файлами и конфигами squidguard надо ему права пользователя выставлять, иначе все работать будет через опу
squidGuard -d -C all
chown -R squid:squid /var/db/squidGuard/
Создадим Gre тунели для Заворота трафика с Cisco
ifconfig gre0 create
ifconfig gre0 IP.freebsd.mashine 10.20.30.40 netmask 255.255.255.255 link2 tunnel IP.freebsd.mashine IP.Cisco.router
где 10.20.30.40 фейковый адрес, но он необходим

Завернем входящий трафик с Cisco на сквид
ipfw add 1020 fwd 127.0.0.1,3128 ip from any to any 80 via gre0 in
собственно это все, все конфиги взяты с рабочей схемы... В рабочем режиме на сиске можно увидеть колво пакетов направлены в гре тунель
sh ip wccp web-cache detail

WCCP Client information:
WCCP Client ID: IP.freebsd.mashine
Protocol Version: 2.0
State: Usable
Redirection: GRE
Packet Return: GRE
Assignment: HASH
Initial Hash Info: 00000000000000000000000000000000
00000000000000000000000000000000
Assigned Hash Info: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Hash Allotment: 256 (100.00%)
Packets s/w Redirected: 2530
Connect Time: 2d16h
Bypassed Packets
Process: 0
CEF: 0
Errors: 0
В двух словах описать работу можно так:

Пакет Http (cisco не редиректит https) попавший на интерфейс Cisco отправляется по гре тунелю на freebsd, где фаерволом форвардится на порт 3128 squid`a, squid по правилам acl решает что с ним делать (у меня подставляется страница), а в принципе в прозрачном режиме запрос просто регистрируется(кешируется) и отправляется на назначенный хост с IP клиента в заголовке пакета. Пакет возвращается с внешнего мира уже минуя сквид к клиенту. Трафик получается асинхронный. На гре туннеле вы увидите только входящие пакеты.

Re: FreeBSD+Cisco+WCCP2+Squid

Добавлено: 2011-03-25 12:49:51
Alex Keda
а что не работает-то?

Re: FreeBSD+Cisco+WCCP2+Squid

Добавлено: 2011-03-25 13:05:36
berserkdeep
все работает

Re: FreeBSD+Cisco+WCCP2+Squid

Добавлено: 2012-02-07 14:38:39
гость
отправляется на назначенный хост с IP клиента в заголовке пакета. Пакет возвращается с внешнего мира уже минуя сквид к клиенту
А это работает только при WCCP? Потому что настроив без него squid подменяет на свой адрес.

Re: FreeBSD+Cisco+WCCP2+Squid

Добавлено: 2012-06-01 11:47:36
f1nka
Народ помогите, не могу понять в какую сторону копать уже.При поднятии gre тунеля пропадает досту по 80 порту в инет.
Я не могу понять где у меня этот порт закрыть, по идее squid настраивался как прозрачный
вот rc.firewall #!/bin/sh
NET_IF="gre1"
IPFW="/sbin/ipfw -q"

$IPFW -f flush
$ipfw add fwd 127.0.0.1,3128 tcp from any to any 80 via gre1 in
$ipfw add fwd 127.0.0.1,3128 tcp from any to any 80 via ae0 in
$ipfw pass all from any to any такое подозрение, что трафик не перенаправляется на gre интерфейс, tcpdump на gre1 подтверждает это. Сам squid.conf

# created by SAMS _sams_ 2012-6-1 0:12:10
http_port 127.0.0.1:3128 transparent
cache_mem 50 MB
maximum_object_size 16000 kb
forwarded_for on
visible_hostname wccp server
wccp2_router 10.8.0.1
wccp2_rebuild_wait on
wccp2_forwarding_method 1
wccp2_assignment_method 1
wccp2_return_method 1
#wccp2_service standard 0 password=1234567
wccp2_service standard 0
#url_rewrite_program /usr/local/bin/squidGuard ##Заворот на сквид гуард
wccp2_address 0.0.0.0
#wccp_version 4

#access_log /var/log/squid/access.log squid

acl all src 0.0.0.0/0.0.0.0
http_access allow all Может есть у кого мысли