Документация по ОС FreeBSD Среда, 01.05.2024, 18:58
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Net

FreeBSD: transparent proxy Cisco + WCCPv2 + Oops
Вот именно этим я и занимался на новой работе. Доделал, да.
Итак, вводная. Имеется маршрутизатор 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" - проблемы с транспарентом.
Удачи.
 
 
Автор: StraNNicK ( http://strannick.blogspot.com )
Категория: Net | Добавил: oleg (15.11.2007)
Просмотров: 1309 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024