Немного статей про *nix
 

FreeBSD: transparent proxy Cisco + WCCPv2 + Oops

07.07.2009

Вот именно этим я и занимался на новой работе. Доделал, да.

Итак, вводная. Имеется маршрутизатор Cisco и proxy-сервер. Задача: настроить прозрачное проксирование, используя протокол wccp.

Для начала эта задача была решена на базе Gentoo. В сети множество описаний, как этого добиться. Причем практически везде в качестве прокси используется Squid. К сожалению, Squid не поддерживает WCCP v2. По этой и по ряду других причин, был выбран украинский прокси Oops. В Linux всё было довольно просто. Собираем модули ядра gre и wccp, настраиваем файрволл и всё. А вот с FreeBSD всё оказалось не так тривиально. Но об этом - дальше.

Сначала для экспериментов был выбран сервер с установленной FreeBSD 4.11. Для начала требовалось пробросить туннель, используя GRE, поддерживающий WCCP v2. Не буду вдаваться в подробности, но для версии большей чем 4.7 и меньшей чем 5.3 это невозможно (впрочем есть патч на 4.9...). Попытка применить метод, описанный в статье WCCPv2 for squid on FreeBSD howto успеха не принесла. Тогда было решено опробовать 5-ю ветку, в которой, по отзывам, проблемы с GRE были решены. Использование 5.3 успеха не принесло из-за бага с IPFIREWALL_FORWARD. FreeBSD была проапгрейжена до версии 5.4 (cvs tag=RELENG_5), в результате туннель заработал. Попытка завернуть пакеты на прокси успеха не принесли, хотя tcpdump показывал, что пакеты ходят, а лог файрволла убеждал, что они вполне успешно заворачиваются на требуемый порт. После небольшого размышления, порты были также обновлены, а Oops заменен на актуальную версию. Всё заработало.

Резюме:
1. Настраиваем Cisco
тут я по чайничеству своему сошлюсь на соответствующую официальную документацию...
Web Cache Communication Protocol v2
2. Пересобираем ядро со следующими изменениями

option          IPFIREWALL
option          IPFIREWALL_FORWARD
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=50
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPDIVERT

device          gre

Хотя вполне можно подгрузить модули.
3. Пробрасываем GRE-туннель до Cisco

ifconfig gre0 create
ifconfig gre0 proxy_ip 10.20.30.40 netmask 255.255.255.255 link2 tunnel proxy_ip cisco_ip up

4. Настраиваем IPFW

ipfw add pass all from any to any via lo0
ipfw add allow tcp from proxy_ip to any
ipfw add fwd 127.0.0.1,3128 log tcp from any to any http via gre0 in

5. Настраиваем Oops

redir_mods      transparent;

module transparent {
myport 3128
broken_browsers MSIE
}

module wccp2 {
service-group web-cache
router cisco_ip

}

Запускаем Oops и пробуем достучаться до него.
Если ничего не происходит - проверьте ходят ли пакеты через GRE

tcpdump -i gre0

Затем включите лог у IPFW fwd и посмотрите - заворачивает ли он пакеты. Если да - попробуйте обновить версию Oops'а.
Если получаем ответ "Bad formed URL" - проблемы с транспарентом.
Удачи.

Источник: http://www.unixdoc.ru/index.php?mode=2&podmode=1&arcicle_id=152&theme=Cisco+Oops

Партнеры проекта
Хостинг от RU-Life.NET - надежно, выгодно, проверено!
 

Все права защищены. © Unix66.ru, 2009

Допускается полное, либо частичное цитирование размещенной информации,
при условии размещения ссылки на Unix66.ru в качестве источника.