Настройка SQUID с помощью Webmin

Настройка SQUID с помощью программы WEBMIN

Есть целая куча сайтов, на которых описана установка и настройка SQUID в операционной системе FreeBSD. В них описывается настройка только в терминале. Недавно я подумал, а может ли то же самое сделать Webmin? В общем, долго не думая, поставил FreeBSD; mc и Webmin из портов. Открыл в Webmin закладку «Службы» и SQUID там не обнаружил. В общем, надо полагать его следует установить. Приступаем к установке. Скажу сразу, установка экспериментальная и в работе не проверенная, но работоспособная.

Для начала, через web-интерфейс, обновляем Webmin. Смотрим, не появилась ли новая версия? Обновляем с сервера Webmin.

Дальше, идём в порты:

 

 

Выбираем:

  • [X] - SQUID_LDAP_AUTH
  • [X] - SQUID_SASL_AUTH
  • [X] - SQUID_DELAY_POOLS
  • [X] - SQUID_CARP
  • [X] - SQUID_DIGEST
  • [X] - SQUID_WCCP
  • [X] - SQUID_HTCP
  • [X] - SQUID_IDENT

Ну и вообще, каждый выбирает под себя :)

Описания опций установки SQUID:

  • --prefix=/usr/local/squid (куда инсталлировать файлы, также имеется множество дополнительных ключей для тонкой настройки расположения файлов)
  • --enable-async-io=число-нитей (подразумевает --with-aufs-threads=число-нитей, --with-pthreads, --enable-storeio=ufs,aufs)
  • --enable-storeio="список-методов-хранения" (ufs - unix file system; aufs - async unix file system; diskd - отдельные процессы для асинхронного доступа к файлам; null - не хранить данные на диске; coss - файловая система COSS)
  • --enable-icmp (измерять путь до каждого HTTP-сервера при запросах с помощью ICMP, используется для оптимизации выбора сервера или соседа)
  • --enable-htcp (HTCP - вариант ICP по TCP, синхронизация кеша с соседями)
  • --enable-forw-via-db (включить поддержку БД Forw/Via для оптимизации выбора сервера или соседа)
  • --enable-cache-digests (использовать Cache Digests для оптимизации выбора сервера или соседа)
  • --enable-carp (включить балансировку с помощью CARP - Cache Array Routing Protocol; в новых версиях его надо наоборот отключать: --disable-carp)
  • --disable-wccp (не включать поддержку протокола WCCP - Web Cache Coordination Protocol - позволяет Cisco IOS автоматически распознавать падение сервера)
  • --disable-wccpv2
  • --enable-delay-pools (управление ограничением трафика)
  • --enable-useragent-log (журнализовать заголовок Useragent)
  • --enable-referer-log (журнализовать заголовок Referer)
  • --enable-forward-log (поддержка директивы forward_log, в 2.6)
  • --enable-kill-parent-hack (помогает сделать shutdown чисто)
  • --enable-snmp (включить SNMP сервер для мониторинга)
  • --enable-arp-acl (поддержка ACL, основанных на ethernet MAC адресах)
  • --enable-cachemgr-hostname=имя-хоста (cachemgr.cgi будет по умолчанию натравлен на этот хост)
  • --enable-err-language=языки-для-сообщений-об-ошибках (по умолчанию - все)
  • --enable-default-err-language=язык-сообщений-об-ошибках (Russian-1251?)
  • --enable-gnuregex (вместо regex, плохо работающего в старых Linux)
  • --enable-poll (можно использовать poll, epoll или select; poll быстрее, но не на всех платформах работает; обычно выбор делается автоматически, но если вы умнее configure, то можете это проверить)
  • --disable-poll
  • --enable-select
  • --disable-select
  • --enable-select-simple (использовать только простое подмножество select)
  • --enable-epoll
  • --disable-epoll
  • --disable-http-violations (игнорировать все строки в конфигурации, которые нарушают стандарты HTTP)
  • --enable-ipf-transparent (разрешить поддержку transparent proxy для систем, использующих IP-Filter - в ядре Linux 2.2 и без этого хорошо)
  • --enable-pf-transparent (разрешить поддержку transparent proxy для систем, использующих PF network address redirection)
  • --enable-linux-netfilter (transparent proxy для ядра Linux 2.4)
  • --enable-large-cache-files (позволяет хранить в кеше файлы размером более 2GB; при этом меняется формат хранения; 2.6)
  • --enable-linux-tproxy (поддержка Netfilter TPROXY)
  • --disable-ident-lookups (ident в современном мире - вещь бесполезная)
  • --disable-internal-dns (вместо внутренних запросов использовать внешние процессы dnsserver; рекомендуется для версий до 2.4)
  • --enable-truncate (обнулять файлы вместо их удаления: быстрее, но требует много inode; были проблемы, когда переполнялась таблица inode; наверное, параметр minimum_object_size из-за этого появился; не рекомендуется для асинхронного ввода/вывода)
  • --disable-unlinkd (запретить использование внешних процессов для удаления файлов)
  • --enable-underscores (позволять подчеркивания в именах хостов, надеясь что резолвер их не обрежет; в 2.6 заменён директивой squid.conf)
  • --enable-heap-replacement (использовать улучшенные алгоритмы замещения кеша вместо стандартного LRU, в версиях Squid до 2.4; в новых версиях рекомендуется использовать --enable-removal-policies)
  • --enable-removal-policies="lru,heap" (улучшенные алгоритмы замещения кеша вместо стандартного LRU, в версиях Squid 2.4 и выше)
  • --enable-dlmalloc (своя библиотека malloc, не быстрая но без memore leak)
  • --enable-ssl (включить поддержку работы в качестве шлюза SSL с помощью OpenSSL)
  • --enable-auth="список методов аутентификации" (по умолчанию только basic; вместе со squid поставляются: basic, digest, ntlm, negotiate; имеется множество дополнительных ключей, позволяющих настраивать отдельные методы аутентификации:
    • --enable-basic-auth-helpers="список программ для аутентификации basic" (в комплекте имеются: getpwnam, LDAP, MSNT (обращается к NT серверу), mswin_sspi (только под MS Windows NT?), multi-domain-NTLM, NCSA, PAM, SASL, SMB, YP)
    • --enable-ntlm-auth-helpers="список программ для аутентификации ntlm" (в комплекте имеются: fakeauth (проверяет только синтаксис запроса), mswin_sspi (только под MS Windows NT?), no_check (проверяет только синтаксис запроса), SMB (обращается к контроллеру домена)
    • --enable-ntlm-fail-open (делать клиентам "поблажки")
    • --enable-digest-auth-helpers="список программ для аутентификации digest" (в комплекте имеются: password, ldap)
    • --enable-negotiate-auth-helpers="список программ для аутентификации negotiate" (в комплекте имеются: mswin_sspi (только под MS Windows NT?))
  • --enable-external-acl-helpers="список программ для проверки ACL" (в комплекте имеются: ip_user, ldap_group, mswin_lm_group, session, unix_group, wbinfo_group)
  • --enable-follow-x-forwarded-for (отслеживать цепочку X-Forwarded-For, 2.6)
  • --with-large-files (журналы и пр.)
  • --with-maxfd=число-дескрипторов
  • --with-openssl= (в CentOS надо указать /usr/kerberos)

Ключи даны для установки из source, но данные функции включаются или выключаются в make-файле порта.

После успешной инсталляции открываем Webmin – это наши GUI, которые помогут осуществить запуск и настройку. Особо хочу отметить, что все действия мы будем производить из Webmin, создание кэша, остановка, запуск, перезапуск, редактирование прав, методы шифрования, заведение пользователей в базе SQUID, списки ACL и другое – всё это мы будем делать через Web-интерфейс, а потом проверим типичные файлы, созданные в консоли и тем, что создал Webmin. Конечно, можно иметь готовые конфигурационные файлы, но скажу, что не всегда они подходят и потому не всегда работают. Если же вы всё-таки решили править конфиги, то самое главное - сохраняйте тэги TAG в файле squid.conf. Кстати, при установке разных версий я заметил такие нюансы, что кальмар может и не запуститься, если руками что-то подправить... Так как могут использоваться разные версии, то не сразу они попадают в настройки webmin от разработчиков. Плюс не все пункты из меню работают....так они как бы универсальны: что работает в старых версиях, может не работать в новых. В общем, от чтения мануалов по Squid никто не освобождает. Так вот, открыли Webmin и идём в «Службы» и смотрим, появился ли там пункт SQUID?

рисунок 1.1

Если он там не появился, то нажимаем в основной панели REFRESH MODULES.Эта функция посмотрит что установлено и дополнит в общий список приложений те модули, которые найдёт.

рисунок 1.2

Итак, мы добились того, что SQUID у нас всё-таки появился. Заходим в пункт меню, согласно рисунка 1.1. Первоначально графическое меню предложит вам создать кэш (ещё раз повторюсь, что не надо делать squid –z после установки… webmin умеет делать всё сам. Просто я очень часто по привычке иду в консоль и запускаю эту команду). .После того, как кэш создался кнопкой Start Squid запускаем приложение.

<рисунок 1.3

После успешного запуска появится вторая кнопка, Apply Configuration. Эта кнопка служит аналогом squid restart. Вместо Squid start, при запущенном приложении, видим надпись на кнопке Squid stop.

рисунок 1.4

Всё, программа запущена. Это основные настройки, по умолчанию, которые могут применятся. Здесь ещё не настроен ни размер кэша, ни размер файлов, которые могут помещаться в память, ни ACL-листы. В общем, всё по порядку.

Предварительная настройка. В верхней части находим слова: Настройка модуля и заходим в эту часть настроек.

рисунок 1.5

Всё. Мы готовы начать настройку программы.

Настройка кэша

Службы > Прокси-сервер Squid > Параметры кэша

рисунок 1.6

Здесь мы видим в каком каталоге у нас находится кэш и как он сконфигурирован.

рисунок 1.7

Каталог: /usr/local/squid/cache

  • Тип:UFS
  • Размер (Мб): 8192
  • Каталоги 1го уровня: 16
  • Каталоги 2го уровня: 256

Остальное оставляем по умолчанию. В принцие, программа сама знает как и чего кэшировать и куда ложить. Но если есть у кого-то желание поковыряться, то позже можно будет отписаться по этому поводу. Данный конфиг настройки кэша взят с реально работающего сервера, который перемалывает до 100000 запросов в сутки.

Использование памяти

Службы > Прокси-сервер Squid > Использование памяти

рисунок 1.8

рисунок 1.9

  • Ограничение использования памяти:140 мб
  • Размер кэша FQDN: 1024
  • Верхняя граница использования диска: 95%
  • Максимальный размер кэшируемого объекта: 32768 кб
  • Верхняя граница использования кэша IP: 95%
  • Нижняя граница использования диска: 90%
  • Размер кэширования адреса IP: 1024
  • Нижняя граница использования кэша IP: 90

Остальное оставляем по умолчанию.

Доступ к прокси-серверу

Службы => Прокси-сервер Squid => Authentication Programs

рисунок 1.10

рисунок 1.11

В пункте "Basic authentication program"пишем путь к файлу, который создадим и который будет хранить пароли пользователей программы

/usr/local/libexec/squid/ncsa_auth /usr/local/squid/passwd

Создаём для этой программы файл, в котором будут прописаны имена пользователей и пароли. Я выбрал basic-аутентификацию:

Количество программ аутентификации: 5

  • Authentication cache time: 2 часа
  • Authentication realm: Squid proxy-caching web server (название прокси)

Остальные настройки оставляем по умолчанию.

Итак, теперь у нас есть программа, которая будет проверять пару логин-пароль. Кто хочет, может использовать DIGEST аутентификацию. Отличается она от basic тем, что передаёт пару пароль-логин в зашифрованном виде. А вот basiс мы используем, если никого не боимся.

У нас появляется новая иконка - Аутенификация прокси. До этого её не было, можно даже не искать, если конечно вы не редактировали раньше основные настройки модуля :)

рисунок 1.12

рисунок 1.13

Здесь надо будет нажать "Добавление нового пользователя" и прописать логин и пароль для того, кто будет получать интернет через сервер. Думаю, тут ничегго сложного нет, абсолютно.Данные должны появится в том файле, который мы создали, причём пароль уже будет зашифрован.

Управление доступом

Итак, у нас есть пользователи, которым не терпится выйти в сеть Интернет, и есть вы, которые должны все данные, что мы писали вверху связать воедино и разрешить настроенным параметрам начать работать. Хотя они и так работают, но тут дело в системе, которая считается работоспособной, а не частями :)

рисунок 1.14

рисунок 1.15

На рисунке нам представлены списки того, что может ходить в Интернет. Вообще, я обычно оставляю всё нетронутым практически, как здесь. Добавляю только ACL-лист our_network. Итак, создаём этот ACL-лист, члены которого будут выходить в Интернет только авторизовавшись.

рисунок 1.16

Нажимаем "Создание нового ACL" и выбираем тип - "Внешняя аутентификация".

рисунок 1.17

Вот примерно как будет выглядеть этот ACL. Далее заходим в ограничение прокси:

рисунок 1.18

Как видим, наш ACL-лист стоит предпоследним в списке. Стрелками справа мы можем поднимать ACL-листы или опускать, в зависимости от приоритетов. В других пунктах ICP Ограничения ICP и Reply proxy restrictions ACL-лист - all должен быть разрешён.

Ну вот собственно и всё. Остальное, если есть желание можно поковырять самим. Единственное наставление на будущее: обязательно запоминайте где и что вы нажимаете. Система немного нестабильна и критична к изменениям незаявленных разработчиками стандартов. То есть, как я говорил выше, ввиду того, что в настоящее время выпушено 3 ветки этой программы, то в каждой из веток есть изменения, которые не работают в версиях ниже по ветке. Вот собственно и всё, что надо сисадмину. Хороший прокси сервер на squid, практически за 20 минут :) Дальше я бы предложил самим разбираться. На самом деле, там есть много чего интересного, например, кэширование объектов - время, какие объекты кэшировать, их размер ну и ещё много другого. Поле для изучения есть. А я на этом откланиваюсь: удачной установки Squid.




Ссылки:

К содержанию

© Copyright 2004-2017 - CMS Made Simple
Сайт работает на CMS Made Simple version 1.4.1

© Все печеньки Break-people.ru принадлежат авторам проекта.

Яндекс цитирования Рейтинг@Mail.ru Яндекс.Метрика