Налаштування Squid 3 як прозорого проксі в FreeBSD - Proxy - Laquo; Unix, Linux – Laquo;
Налаштовуємо Squid як прозорий проксі-сервер для офісної мережі. Передбачається, що маршрутизація на сервері налаштована, і доступ до сайтів із внутрішньої мережі вже працює. Використовуємо проксі-сервер для розшифровки веб-трафіку, обмеження доступу до сайтів та фільтрації медіа-контенту.
Налаштування ядра
Для роботи в прозорому проксі необхідно забезпечити перенаправлення веб-трафіку проксі-серверу. Якщо в якості брандмауера використовується IPFW, необхідно увімкнути форвардинг пакетів, перебравши ядро з опцією IPFIREWALL_FORWARD. У ядрі GENERIC параметр перенаправлення за замовчуванням вимкнено.
В ядрі GENERIC опція перенаправлення за замовчуванням відключена. Перевіряємо, чи перенаправлення пакетів передано командою:
Отримуємо наступний результат:
Якщо бачимо: "rule-based forwarding disabled ", форвардинг вимкнений, необхідно перезбирати ядро. Якщо повідомлення відсутнє, IPFW не налаштовано.
Отримуємо ідентифікатор ядра:
Якщо раніше ядро не змінювалося, в результаті одержуємо:
Створюємо конфіг ядра IPFORWARD, на основі GENERIC
Включаємо перенаправлення пакетів:
Перевіряємо отриманий конфіг:
В результаті отримуємо:
Переходимо до папки з вихідними системами:
Якщо файли /usr/src відсутні, необхідно встановити вихідні коди, що відповідають вашій версії системи.
Збираємо та встановлюємо ядро, використовуючи створений конфіг:
Перевіряємо ідентифікатор ядра:
У разі успішного встановлення ядра, у відповідь отримуємо:
Перевіряємо статус IPFW:
У разі успіху отримуємо:
Установка Squid
Оновлюємо колекцію портів:
Отримуємо список доступних версій Squid:
Упараметри збирання включаємо прозоре проксіювання для використовуваного брандмауера та підтримку великих файлів:
Для збирання пакета використовуються стандартні параметри, встановлений з пакета прозорий проксі працюватиме некоректно.
Налаштування Squid
Зберігаємо конфігураційний файл, встановлений за замовчуванням:
Створюємо новий конфігураційний файл:
Створюємо папку для списків контролю доступу
Створюємо необхідні списки, значення у списку поділяються новим рядком.
Деякі сайти використовують протокол https, який фільтрувати при прозорому проксуванні неможливо. Для обмеження доступу до таких сайтів доведеться використовувати брандмауер або DNS-сервер, або проксіювати https традиційним, непрозорим способом.
Створюємо папку для кешу, задаємо права доступу:
Створюємо структуру кешу:
Створюємо папку для логів доступу, задаємо права доступу:
Лог доступу протягом місяця може займати досить великий обсяг, тому у аналізованої конфігурації лог був розміщений в /usr. Якщо вільного місця /var достатньо, лог доступу можна залишити в /var/log/squid.
Відображення місцевого часу на сторінках помилок Squid
За промовчанням на сторінках помилок Squid відображає час за Грінвічем, для відображення місцевого часу необхідно скоригувати шаблони помилок. Параметр шаблону %T вказує світовий час, %t – місцевий.
Копіюємо шаблони помилок до папки erros.local:
Замінюємо загальносвітовий час (% T), на місцевий (% t):
Задаємо шлях до змінених шаблонів помилок у squid.conf:
Запуск Squid
Включаємо Squid у rc.conf:
Перевіряємо, чи стартанув демон:
Перевіряємо, чи слухається сокет:
У разі успішного старту висновок буде приблизно наступним:
З приводу "WARNING: no_suid: setuid(0): (1) Operation not permitted", відстежуємо баг-репорт: http://bugs.squid-cache.org/show_bug.cgi?id=3785.
У брандмауері дозволяємо вихідні підключення для Squid (порядковий номер правила та зовнішній інтерфейс необхідно задати свій):
Перенаправляємо веб-трафік з тестового комп'ютера до Squid:
Ініціюємо веб-трафік з тестового комп'ютера та перевіряємо лог доступу:
У разі проблем перевіряємо, чи працює правило брандмауера:
Лічильник для правила перенаправлення не повинен бути нульовим.
Якщо при тестуванні проблем не виявлено, загортаємо у проксі всю підмережу:
Протокол керування кешем
Якщо керування кешем не було заборонено в конфізі, використовуємо squidclient для отримання статистики та оперативного управління.
Отримати загальну статистику сервера:
Отримати список доступних команд:
Ротація лога доступу Squid
Налаштовуємо щомісячну ротацію та архівацію access.log
Створюємо скрипт RotateAccessLog:
З таким вмістом:
Дозволяємо запуск скрипту:
Виконуємо тестовий запуск:
Перевіряємо, чи створено архів:
Настроюємо cron на щомісячний запуск першого числа опівночі:
Автоматичний перезапуск Squid при відмові
Squid 2.7 рідко грішив періодичними відмовими, залишаючи при цьому мережу без доступу до Інтернету. Хоча у третій версії таких неподобств більше не помічено, зайва перевірка не зашкодить. Перевіряємо сценарієм, чи завантажений Squid і запускаємо за необхідності. Принагідно, чистимо кеш, при виявленні повідомлення про брак дискового простору.
Створюємо сценарій AutoRestart:
З таким вмістом:
Дозволяємо запуск скрипту:
Виконуємо тестовий запуск:
Запускаємочерез cron кожні 15 хвилин:
У разі проблем на пошту root'у буде надіслано повідомлення.
Аналіз логів Squid
Список інших аналізаторів доступний на сайті проекту: http://www.squid-cache.org/Misc/log-analysis.html
Вирішення проблем
Якщо в cache.log постійно пишуться попередження:
Під час збирання не було включено підтримку прозорого проксі для вашого брандмауера. Перевстановіть Squid із колекції портів із включенням відповідних параметрів.
Якщо отримуємо такі попередження:
Виявлено декларацію acl all. У третій версії список доступу all створюється сквідом автоматично, його декларація не потрібна. Видаліть або перейменуйте acl all.