прозорий squid
Навіщо потрібен прозорий Squid
При зверненні клієнтів локальної мережі до зовнішніх сайтів Squid повинен прозоро для клієнта перехопити запит і обробити його відповідно до своїх правил - вирішити, який контент віддати, Залогуватися чи активність користувача, чи можна взагалі цього користувачеві виходити в інтернет. Наше завдання - зробити так, щоб на самого клієнта не треба було б робити ніяких налаштувань браузерів. Клієнт просто підключився до локальної мережі і вже працює через наш проксі-сервер і НІЯК інакше. Тобто навіть якщо хто-небудь захоче обійти наш проксі, без хитрощів йому вже не обійтися.
# Redirect to local proxy
/ Sbin / ipfw add 0170 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any 80
- 0170 - номер правила (в вашому випадку може бути будь-який).
- fwd 127.0.0.1,3128 - куди будемо направляти пакети, - в нашому випадку нашому улюбленому Squid, запущеного на порту 3128 на шлюзі, -.
- from 192.168.1.0/24 -. відправлені комп'ютерами локальної мережі.
- to any 80 -. на який-небудь сайт в інтернеті
У конфіге вище запит відкрити сайт спочатку обробляється правилом 0170. яке загортає запит в Squid. Squid (як і будь-яка інша програма) також виконує вимоги брандмауера - тільки для нього правило 0170 не діє, а ось правило 0350 дозволяє Squid відправити запит в інтернет. Для того, щоб виходити в інтернет без Squid, необхідно закоментіровать правило 0170. В цьому випадку Squid не отримає нічого, а всі запити браузерів з локальної мережі будуть оброблятися правилом 0350.
Якщо на нашому шлюзі встановлена Linux і iptables. то вищевказана команда буде виглядати так:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
де eth0 - внутрішній інтерфейс.
З цим розібралися. Тепер треба дати вказівку Squid про те, що він повинен обробляти пакети, спочатку на нього не спрямовані. Переходимо до включення режиму прозорості Squid.
Прозорий Squid в squid.conf
Тепер справа залишилася за малим - налаштувати Squid в режим невидимки, тобто приймати автоматично перенаправлені пакети і обробляти їх. У різних версіях Squid за це відповідали різні команди. Налаштування Squid версії 2.6. * Виглядає так:
http_port 127.0.0.1:3128 transparent # Squid працює в прозорому режимі
http_port 3128 # Squid працює в звичайному режимі
Плюси і мінуси
З плюсів можна відзначити абсолютну впевненість, що всі запити на 80 порт (стандартний для веб) будуть оброблені Squid-му. Відповідно, будуть логи, статистика для шефа і відсутність необхідності бігати і руками все налаштовувати.
З мінусів можна відзначити:
Налаштування Squid в прозорому режимі завершена. Ось тепер - все.