Ключевые слова:proxy, squid, transparent, cache, cisco, freebsd, (найти похожие документы)
From: Denis Shaposhnikov <dsh@vlink.ru>
Original: http://neva.vlink.ru/~dsh/squid.htmlSubject: Настройка прозрачного (transparent) proxy через Squid используя WCCP
_________________________________________________________________
Web Cache Control Protocol
Если Ваш тpаффик в Internet выходит чеpез Cisco router, IOS котоpого
умеет WCCP, transparent HTTP caching/proxying можно оpганизовать с
помощью этого пpотокола. Это гоpаздо лучше, чем использовать для этого
policy routing. Hачиная с веpсии 2.3, Squid умеет WCCP 1. Router будет
отслеживать состояние Вашего Squid'а. И если он не pаботает, пpекpатит
пеpенапpавлять на него тpанзитные HTTP запpосы. Также, можно
использовать несколько HTTP cache/proxy сеpвеpов, оpганизуя, таким
обpазом, pаспpеделение нагpузки. Я пpиведу пpимеp моих настpоек для
IOS 12.0(7):
ip wccp enable
ip wccp redirect-list fwd-2-squid
! Это интеpфейс, чеpез котоpый выходит тpаффик в Internet.
interface Serial1
ip web-cache redirect
! Этот acl опpеделяет, чьи запpосы надо пеpенапpавлять.
! Обязательно запpетите пеpенапpавление запpосов от Вашего
! HTTP cache/proxy сеpвеpа, иначе они зациклятся.
! В данном пpимеpе, 192.168.1.1 - это адpес, с котоpого
! посылает свои запpосы Squid.
ip access-list standard fwd-2-squid
deny 192.168.1.1
permit any
В конфигуpационном файле Squid'а Вы должны указать адpес router'а,
котоpый будет пеpенапpавлять запpосы:
wccp_router 192.168.1.2
Далее Вы должны настpоить Squid и Вашу OS для обpаботки
пеpенапpавленных запpосов. Об этом смотpите ниже.
Обязательно пpочитайте:
* WCCP - Web Cache Coordination Protocol: http://www.squid-cache.org/Doc/FAQ/FAQ-17.html#ss17.10
_________________________________________________________________
Transparent HTTP caching/proxying
Имеется возможность организовать использование Вашего HTTP прокси
сервера прозрачно для пользователей. Это значит, что им не придется
что-то настраивать в своих браузерах. Для этого Вам надо решить
следующие задачи:
1. Добится того, что бы HTTP запросы пользователей попали на
компьютер, где работает Ваш HTTP прокси сервер.
2. После этого, необходимо, что бы они попали собственно в "лапы"
прокси.
3. И наконец, что бы Ваш HTTP прокси сервер их правильно обработал.
Выполнить первый пункт можно разными способами. Поставить HTTP прокси
сервер на роутер, через который проходить весь траффик, или форвардить
запросы с помощью policy routing'а на [5]Cisco роутере или ipfw на
[6]FreeBSD:
add fwd x.x.x.x tcp from any to any http in via ed0
add pass all from any to any
Здесь x.x.x.x - IP адрес HTTP прокси сервера, ed0 - интерфейс, через
который входит траффик от пользователей.
Что бы HTTP запросы пользователей попали к HTTP прокси серверу, можно
воспользоваться опять же ipfw (если у Вас [7]FreeBSD):
add fwd 127.0.0.1,3128 tcp from any to any http in via ed0
add pass all from any to any
Здесь 3128 - порт, на котором принимает запросы Ваш HTTP прокси, а ed0
- интерфейс, через который запросы пользователей попадают на этот
компьютер.
Если прокси сервер должным образом настроен, он правильно обработает
полученные запросы и все будут довольны. Вот пример настроек
Squid'а:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Внимание, если Вы используете [9]FreeBSD и ipfw, для форварда HTTP
запросов, ядро должно быть собрано со следующими опциями:
options IPFIREWALL
options IPFIREWALL_FORWARD
Информацию о настройке transparent HTTP caching/proxying Вы также
можете найти здесь:
* Transparent Caching/Proxying: http://squid.nlanr.net/Doc/FAQ/FAQ-17.html
_________________________________________________________________
Denis Shaposhnikov
- Официальный сайт Squid Web Proxy Cache: http://www.squid-cache.org/
- Henrik NordstrЖm's Squid work: http://squid.sourceforge.net/hno/
- Squid Development Projects: http://squid.sourceforge.net/
- Раздел Squid FAQ по WCCP, настройке Cisco, Linux и FreeBSD: http://www.squid-cache.org/Doc/FAQ/FAQ-17.html#ss17.11
- Squid+WCCP на Linux: http://www.spc.int/it/TechHead/Wccp-squid.html
- Модуль для Linux (mod_wccp): http://www.squid-cache.org/WCCP-support/Linux/ip_wccp.c
- Поддежка WCCP для других систем: http://www.squid-cache.org/WCCP-support/
Установка под Linux (основан на http://www.spc.int/it/TechHead/Wccp-squid.html):
1. Собираем модуль mod_wccp c http://www.squid-cache.org/WCCP-support/Linux/
gcc -D__KERNEL__ -I/usr/src/linux-2.2.20/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer \
-fno-strict- aliasing -pipe -fno-strength-reduce -m386 -DCPU=386 -DMODULE -DMODVERSIONS -include \
/usr/src/linux-2.2.20/include/linux/modversions.h -c ip_wccp.c
2. Копируем ip_wccp.o в /lib/modules/версия_ядра/ipv4/ip_wccp.o
3. Подключаем модуль:
/sbin/modprobe ip_wccp
/sbin/depmod -a -e
4. Для нормальной работы WCCP правим в/etc/sysctl.conf:
# Disables packet forwarding
net.ipv4.ip_forward = 1
# Enables source route verification
net.ipv4.conf.all.rp_filter = 1
# Disables automatic defragmentation (needed for masquerading, LVS)
net.ipv4.ip_always_defrag = 0
5. В конфигурацию squid добавляем:
httpd_accel_with_proxy on
httpd_accel_port 80
httpd_accel_host virtual
httpd_accel_uses_host_header on
6. Настраиваем Cisco:
ip wccp version 1
ip wccp web-cache redirect
wccp enable
wccp_router 192.168.1.1
interface Ethernet0
ip wccp web-cache redirect out
В моём iosе нет команды ip wccp version
перепробовал разные версии
у меня cisco2511, ставил ios'ы 12.х наверно все что только есть :)
Может под мой хард это нельзя вообще, или есть какая-то версия iosы которую я не ставил
Если есть информация на эту тему - плиз на мыло.
Спасибо
Cisco Internetwork Operating System Software
IOS (tm) 2500 Software (C2500-JS-L), Version 12.2(6a), RELEASE SOFTWARE
[skip]
System image file is "flash:c2500-js-l.122-6a.bin"
[skip]
#conf t
#router(config)#ip wccp ?
<0-99> Dynamically defined service identifier number
version protocol version
web-cache Standard web caching service
Совершенно случайно было обнаружено, что на FreeBSD с использованием транспаретного заворачивания на Сквид, при прописывании httpd_accel_port 80 не корректно работает вот такая схема заворота:
fwd 192.168.1.1,3128 tcp from any to not 192.168.1.0/24 80,8080,8000,8100,8200. В этом случае сквид в мир шлёт запросы _ТОЛЬКО_ на порт 80. Что не может не огорчать! Решается вот так:httpd_accel_port 0.