Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
squid.doc
Скачиваний:
9
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

17.7 Кеш пытается соединится сам с собой ...

от Henrik Nordstrom

Я думаю, что каждый, кто пытался настроить прозрачное проксирование, сталкивались с этим.

Вы можете предпринять следующее:

  • Запретить Squid-у забирать объекты у себя самого (используя ACL).

  • Наложить небольшой патч, кторый предотвращает бесконечное зацикливание Squid (доступен на Henrik's Squid Patches)

  • Не запускайте Squid на 80-м порту и не перенаправляйте Squid-у пакеты по 80-му порту, не предназначенные для локальной машины (перенаправление == ipfilter/ipfw/ipfadm). Это предотвращает большинство случаем зацикливания.

  • Если вы используете ipfilter, то должны также использовать transproxyd прежде, чем Squid. Squid пока еще не знает как работать с ipfilter (патчи принимаются на: squid-bugs@squid-cache.org).

17.8 Прозрачное кеширование с FreeBsd

от Duane Wessels

Я вчера заставил работать прозрачное проксирование со Squid и FreeBSD. Это было прикольно.

Это было достаточно просто - настроить cisco на заворачивание пакетов по 80-му порту на пою машину с FreeBSD. Настройки выглядели примерно так:

access-list 110 deny tcp host 10.0.3.22 any eq www

access-list 110 permit tcp any any eq www

route-map proxy-redirect permit 10

match ip address 110

set ip next-hop 10.0.3.22

int eth2/0

ip policy route-map proxy-redirect

Где 10.0.3.22 - IP-адрес машины с FreeBSD, на которой работает кеш.

Как только я получаю пакеты на моей машине с FreeBSD, необходимо, что бы ядро доставило эти Squid. Я запустил FreeBSD-2.2.7 и загрузил IPFilter. Это был конец для меня. Дистрибутив IPFilter включает патчи для исходников ядра FreeBSD, но многие из них конфликтовали. Потом я заметил, что на странице IPFilter сказано ``Это составная часть [FreeBSD-2.2 и более поздних].'' Хватит об этом. К сожалению, вы не можете перехватывать соединения при помощи кода FreeBSD-2.2.X IPFIREWALL (ipfw), и при помощи natd вам не удастся сделать это тоже (по крайней мере мне не удалось).

FreeBSD-3.0 намного лучше поддерживает перехват "чужих" соединений (hijacking), я полагаю, что вы используете ее. Вам необходимо пересобрать ядро со следующими опциями:

options IPFIREWALL

options IPFIREWALL_FORWARD

Теперь пришло время настроить правила IP firewall при помощи ipfw. По умолчанию правило "allow" отсутствует и прохождение любых пакетов запрещено. Я добавил эту команду в файл/etc/rc.local, чтобы иметь возможность использовать машину в моей сети:

ipfw add 60000 allow all from any to any

Но это еще не перехват соединений. Чтобы покончить с этим, добавьте такие строки:

ipfw add 49 allow tcp from 10.0.3.22 to any

ipfw add 50 fwd 127.0.0.1 tcp from any to any 80

Вторая строка (правило 50) - единственная, которая отвечает за перехват чужих соединений (hijack). Первое правило указано для того, чтобы трафик, посланный локальной машиной никогда не попал под правило 50. Это предотвращает зацикливание.

Заметьте, что я не менял номер порта в данном примере. Посему, пакет, пришедший на порт 80, просто заворачивается на 80-й порт Squid. Моя конфигурация Squid:

http_port 80

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

Если вы не хотите, чтобы Squid слушал порт 80 (т.к. это требует привилегий root), вы можете использовать другой порт. В этом случае правило перенаправления для ipfw выглядит так:

ipfw add 50 fwd 127.0.0.1,3128 tcp from any to any 80

а строки из squid.conf так:

http_port 3128

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]