04 | 07 | 2020

Настройка Squid

Установка

Установка пакета Squid выполняется штатным способом в разделе System -> Packages. Имеются несколько подобных пакетов, но в данном случае следует использовать только стабильную версию с названием 'squid'.

После успешной установки пакета в меню pfSense появится пункт Services -> Proxy server, через который получим доступ к Web интерфейсу Squid.

 

В Web интерфейсе прокси сервера имеется 7 закладок, в которых функционально сгруппированы опции настроек. 

  • Страница General содержит все основные настройки, с помощью которых задается режим работы прокси сервера.
  • Страница Upstream Proxy позволяет указать родительсий прокси, если такой имеется.
  • Страница Cache Mgmt содержит настройки управления кэшем прокси сервера.
  • Страница Access Control позволяет задать различные параметры доступа к прокси-серверу.
  • Страница Traffic Mgmt содержит опции управления трафиком прокси.
  • Страница Auth Settings управляет аутентификацией пользователей на прокси сервере.
  • Страница Local Users содержит список локальных пользователей для аутентификации Local (аутентификация по локальному списку).

 

Переходим на вкладку General, если она не открыта и приступаем к настройке.

Во-первых необходимо выбрать интерфейс, на котором будет доступен прокси сервер. Для этого щелкаем по нужному названию интерфейса в поле Proxy Interface. В большинстве случаев это будет внутренний интерфейс LAN, но при наличии нескольких (внутренних) интерфейсов доступа выбираем несколько из них при нахатой кнопке Ctrl.

Так же необходимо указать рабочий порт прокси сервера, через который клиенты смогут к нему подключаться. Для этого в поле Proxy Port вводим одно из стандартных значений (3128, 8080) или любой другой номер свободного порта.

Если предполагается обмена данными кэшированных страниц между несколькими прокси серверами в сети, то необходимо настроить опцию ICP Port, указав номер порта, через который будет производится обмен данными. Для начинающих  пользователей и простых сетей эта опция обычно не используется, и поэтому может быть оставлена пустой.

Прокси сервер может работать в двух основных режимах: обычном и прозрачном (transparent). Если в обычном режиме от клиента требуется ввести параметры прокси сервера в настройках браузера (и др программ), то прозрачный режим работает незаметно для пользователя и не требует от него дополнительных действий по настройке своих программ. Но прозрачном режиме недоступна функция авторизации пользователя. Выбор режима авторизации зависит от Ваших задач и требований. Управление режимом производится с помощью поля Transparent Proxy.

В прозрачном режиме работы прокси сервера возможно использование следующих опций:

  • Bypass proxy for these source IPs задает список клиентов (IP/имена хостов/алиасы), разделенных ';', которые будут пропускаться напрямую через файрвол без использования прокси.
  • Bypass proxy for these destination IPs задает список ресурсов (IP/имена хостов/алиасы), разделенных ';', к которым клиенты будут получать доступ напрямую через файрвол без использования прокси.

Для формирования статистики использования прокси клиентами имеется возможность ведения журнала (логов). Имеются три опции, управляющие формированием и хранением журналов:

  • Enable logging включает ведение журнала доступа
  • Log store directory назначает директорию хранения файла журнала
  • Log rotate определяет через сколько дней будет произведена ротация (смена/очистка) файла журнала

Директория хранения файла журнала по умолчанию имеет значение /var/squid/logs. Некоторые пакеты сбора статистики работы прокси (LightSquid к примеру) могут автоматически настраивать параметры ведения журнала прокси сервера.

Следующие опции являются необязательными, и могут быть настроены для дополнительного сервиса прокси:

  • Visible hostname содержит имя прокси сервера, отображаемое в сообщении об ошибке. Эту опцию можно составить пустой.
  • Administrator email это адрес электронной почты администратора прокси, отображаемый в сообщении об ошибке. Эту опцию можно составить пустой.
  • Language задает язык, на котором будут выводиться страницы сообщений прокси сервера. Здесь нуобходимо поставить значение Russian-1251.
  • Disable X-Forward запрещает прокси серверу передавать IP адрес/имя в HTTP запросах. Это может быть полезно для сокрытия данных о прокси-сервере. Но так же отключение этой опции может потребоваться для настройки работы в связке с другими прокси серверами.
  • Disable VIA запрещает прокси серверу включать опцию VIA в заголовок HTTP запроса. Условия и назначения опции такие же как и в опции Disable X-Forward.
  • What todo with requests that have whitespace characters in the URL определяет поведение прокси сервера при нахождении пробелов в запросах. Возможные значения: strip (удалить пробелы), deny (блокировать запрос), allow (разрешить запрос), encode (преобразовать пробелы в код), chop (обрезать на первом пробеле). Значением по умолчанию является strip.
  • Use alternative DNS servers for proxy server определяет список альтернативных DNS серверов, разделенных ';' для использовании прокси сервером.
  • Supress Squid version запрещает прокси серверу передавать свою версию в HTTP запросах и на страницах сообщений.
  • Custom Options содержит опции squid, непосредственно включаемые в конфигурационный файл прокси. Каждая опция отделяется от остальных ';' без пробелов. Некоторые пакеты могут использовать эту опцию для своих целей, поэтому вносите свои изменения с осторожностью. Опция не рекомендуется для использования неподготовленными пользователями.

После настройки параметров прокси сервера для ее сохранения и формирования конфигурационного файла следует нажать кнопку Save внизу страницы. 

 

 


Родительский прокси

Обычно прокси сервер самостоятельно обращается к ресурсам интернет и возвращает клиентам  результаты запроса. Но встречаются ситуации, когда доступ к ресурсам интернет доступен только через родительский прокси сервер. В этом случае на странице Upstream proxy необходимо ввести данные этого родительского прокси сервера.

Прежде всего разрешим передавать запросы на вышестоящий (родительский) прокси. Для этого включим опцию Enable forwarding

В поле Hostname следует внести имя хоста или IP адрес, а в поле TCP port номер порта родительсого прокси сервера.

Если родительский прокси-сервер принимает запросы IPC протокола, то так же следует его указать в поле ICP port. В противном случае необходимо оставить значение этого поля равным 7. 

В случае, если родительский прокси требует аутентификации, то поля Username и Password заполняются данными учетной записи.

Особым случаем является требование аутентификации пользователей непосредственно на родительском прокси сервере. К примеру, пользователи филиала имеют персональные учетные записи на головном сервере (в том числе и доменные). Для решения этой задачи в прокси сервере Squid имеется возможность передачи запроса авторизации на вышестоящий прокси: в поле Username вводим значение PASS (при этом аутентификация на самом прокси сервере pfSense должна быть отключена).

 


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

На главной странице Web интерфейса Squid имеются несколько общих опций управления доступом к прокси серверу. Для расширенного управления доступом необходимо перейти на страницу Access Control.

В первую очередь определимся с клиентами, которым доступно использование прокси сервера. Если на странице General включена опция Allow users on interface, то доступ клиентам из подсетей интерфейсов, выбранным в поле Proxy interface, уже разрешен. В противном случае необходимо ввести разрешенные подсети (или адреса) в поле Allow subnets. При наличии в локальной сети других подсетей (отличных от подсетей интерфейсов), их так же необходимо указать в этом поле. Подсети задаются в формате CIDR (192.168.1.0/24), каждая подсеть указывается с новой строки.

Иногда в локальной сети кроме обычных клиентов присутствуют VIP клиенты и клиенты, которым доступ к ресурсам интернет 'противопоказан'. Для управления этими группами клиентов есть опции Unrestricted IPs и Banned host addresses. IP адреса здесь вводятся поодиночке без указания маски (192.168.1.53), каждый IP адрес вводится с новой строки. 

Кроме управления клиентами можно задать белый и черный списки внешних ресурсов для пользователей прокси. Списки задаются указанием доменов, либо регулярными выражениями. Каждый ресурс указывается с новой строки в опциях Whitelist и Blacklist. Обратите внимание, что белый и черный списки ресурсов действуют только для разрешенных клиентов - пользователей прокси сервера. К клиентам категории Unrestricted IPs черные и белые списки не применяются. Запрещенным клиентам по прежнему доступ не предоставляется в любой форме. 

В конце имеется еще одна опция External Cache-managers. Она предназначена для использования опытными  пользователями или пакетами типа SQStat. Опция управляет доступом к протоколу CacheMgr прокси Squid и содержит список IP адресов, разделенных точкой с запятой.

В заключении настройки не забываем их сохранять кнопкой Save. Все изменения будут немедленно внесены в конфигурацию прокси сервера.

 


Управление авторизацией

Прокси сервер Squid кроме режима без авторизации, поддерживает несколько типов авторизации. Для управления авторизацией необходимо перейти на страницу Auth Settings.

Тип используемой авторизации выбирается в опции Authentication method. Пакет предлагает 5 режимов:

  • None режим без какой либо авторизации.
  • Local авторизация клиентов по локальному списку. Список задается на странице Local Users.
  • LDAP авторизация клиентов с использованием внешнего LDAP сервера (либо домена MS).
  • Radius авторизация клиентов с использованием внешнего Radius сервера.
  • NT Domain авторизация клиентов в Microsoft NT домене.

 

Режим без авторизации

Этот режим является режимом по умолчанию. Доступ клиентов к прокси серверу осуществляется согласно настройкам Traffic Mgmt по их IP адресам (подсетям).

 

Режим локальной авторизации клиентов

Этот режим является наиболее простым в настройке и используется в небольших локальных сетях.  Для работы прокси сервера в этом режиме предварительно необходимо создать список клиентов на странице Local Users

Здесь каждая запись содержит три поля: Username, Password, Description. Поле Description не является обязательной и служит для комментариев, относящихся к данному клиенту.

После создания списка можно приступить к настройке режима Local на странице Auth Settings. В этом режиме доступны следующие опции:

  • Authentication prompt это строка, отображаемая вверху запроса авторизации. Поле может быть оставлено пустым. 
  • Authentication process устанавливает количество запущенных сервисов принимающих авторизацию. При большом количестве пользователей увеличьте значение в этом поле, либо оставьте поле пустым.
  • Authentication TTL задает в минутах время в течении которого сессия клиента активна. По истечении указанного времени пользователю будет предложено авторизоваться снова. Поле может быть оставлено пустым.
  • Require authentication for unrestricted hosts задает будет ли требоваться авторизация у клиентов, входящих в группу Unrestricted hosts.
  • Subnets what doesn't need authentication содержит список подсетей (IP адресов), для которых авторизация не требуется. Подсети задаются в CIDR (192.168.1.0/24, 10.0.0.25/32), каждая запись с новой строки. Поле может быть оставлено пустым.

 

Авторизация LDAP

При выборе режима авторизации LDAP становятся доступными следующие опции Web интерфейса:

  • LDAP Version выбирает 2 или 3 версию протокола LDAP.
  • Authentication server содержит IP адрес или имя хоста, на котором расположен сервис LDAP.
  • Authentication server port опция содержит номер порта для доступа к LDAP сервису. Опцию можно оставиьт пустой для использования порта 389 по умолчанию.
  • LDAP server user DN опция содержит логин пользователя от имени которого будет осуществляться доступ к сервису LDAP. Логин задается в ввиде строки запроса в формате LDAP и содержит полный путь логина. К примеру для пользователя proxy_ldap_user, расположенному в каталоге proxy_users домена mydomain.local строка будет выглядеть следующим образом: cn=proxy_ldap_user,cn=proxy_users,dc=mydomain,dc=local.
  • LDAP password опция содержит пароль пользователя от имени которого будет осуществляться доступ к сервису LDAP.
  • LDAP base domain опция содержит имя домена в виде строки запроса LDAP (см. LDAP server user DN). К примеру для домена mydomain.local строка будет выглядеть следующим образом: dc=mydomain,dc=local.
  • LDAP username DN attribute
  • LDAP search filter sAMAccountName=%s
  • А так-же Authentication prompt, Authentication processes, Authentication TTL, Requiere authentication for unrestricted hosts, Subnets that don't need authentication, описание которых дано выше.
 
Пример настройки авторизации LDAP для работы с Active Directory 2003:
  • Authentication method = LDAP
  • LDAP version: 3
  • Authentication server: 10.0.0.20
  • Authentication server port: 389
  • LDAP server user DN: cn=proxy_user,cn=users,dc=myanotherdomain,dc=local
  • LDAP password: proxy_user_pass
  • LDAP base domain: dc=myanotherdomain,dc=local
  • LDAP username DN attribute: uid
  • LDAP search filter: sAMAccountName=%s
 
Пример настройки авторизации LDAP для работы с Radius сервером:
  • Authentication method: LDAP
  • LDAP version: 3
  • Authentication server: ldap.yourorg.com
  • Authentication server port: 389
  • LDAP server user DN: cn=admin,o=My%20Org,c=US
  • LDAP password: admin_pass
  • LDAP base domain: ou=users,dc=yourorg,dc=com
  • LDAP username DN attribute:
  • LDAP search filter: (posixAccount)(uid=%u))

 

В строке запроса LDAP не должно встречаться пробелов. Если такие есть в названии групп, то они заменяются на код пробела %20. На пример 'Domain users' будет выглядеть, как 'Domain%20users'.

После сохранения настроек прокси сервер сразу будет готов к работе.

 


Контроль трафика

В прокси Squid имеются встроенные возможности управления трафиком. Для их изменения необходимо перейти на страницу Traffic Mgmt.

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

Ограничение размера скачиваемого и закачиваемого содержимого. За это отвечают опции Maximum download size и Maximum upload size, соответственно. Значения полей задаются в килобайтах, либо ставится 0 для отключения такого типа контроля.

Ограничение скорости (ширины канала) , используемого при работе прокси. Здесь имеются достаточно подробные настройки.

Прежде всего можно задать общую максимальную ширину канала опцией Overall bandwidth throttling. Так как основной интернет трафик (в большинстве случаев) приходится на WEB, то ограничив его верхний предел на прокси сервере можно обеспечить некоторый резерв канала для работы других служб. При этом регулирование ширины канала происходит без использования Траффик Шейпера файрвола. Параметры поля задаются в килобайтах / сек, либо ставится 0 для отключения опции.

Для обеспечения относительно комфортного серфинга по интернету для клиентов можно ограничить максимальную ширину канала на одного клиента в опции Per-hist throttling. При этом клиенты не будут занимать полосу больше указанной, увлекаясь закачками. Но при этом следует учитывать, что суммарно ширина канала для всех клиентов ограничена скоростью соединения с провайдером, либо параметрами опции Overall bandwidth throttling. Параметры поля задаются в килобайтах / сек, либо ставится 0 для отключения опции.

Можно уточнить действие опций Overall bandwidth throttling и Per-hist throttling, включив параметр Throttle only specific extensions:

  • Throttle only binary files применяет ограничения к двоичным файлам.
  • Throttle only CD images применяет ограничения к образам CD/DVD.
  • Throttle multimedia files применяет ограничения к мультимедийным типам файлов (звуковые/изображения/видео).
  • Throttle other extensions позволяет задать собственный набор расширений файлов, к которым будут применены ограничения. Список расширений раделяется точкой с запятой без пробелов.

Закончить настройку следует нажатием кнопки Save. При этом все изменения в конфигурацию будут внесены немедленно.


Настройка кэширования

Прокси Squid является кэширующим прокси сервером, то есть он сохраняет часто запрашиваемые страницы в памяти. Это позволяет ускорить открытие популярных страниц и экономит трафик. Управление параметрами кэширования относится к расширенным настройкам и поэтому рекомендуется только для подготовленных пользователей.

Для управления параметрами кэширования прокси сервера необходимо перейти на страницу Cache Mgmt.

Web интерфейс предлагает следующие опции:

  • Hard disk cache size управляет размером выделенного на диске пространства для долговременного хранения кэшированной информации. При небольшом размере этого параметра и большом количестве запросов кэш быстро заполнится и его эффективность использования упадет. Поэтому если у Вас достаточно большое количество пользователей или быстрый канал, то имеет смысл увеличить значение до нескольких гигабайт. Значение данного поля указывается в мегабайтах.
  • Hard disk cache system определяет тип используемой системы для хранения кэша. Доступны типы ufs, aufs, diskd, null. Тип ufs это довольно старый тип хранения с рядом недостатков. Для использования рекомендуются aufs или diskd типы, позволяющие обращаться к кэшу без блокирования процессов Squid. Тип null используется, если нет необходимости в дисковом кэше, и применяется в nanoBSD/Embeded системах.
  • Hard disk cache location позволяет указать каталог, в котором будет храниться кэш прокси.
  • Memory cache size управляет размером выделенной памяти для использования в кэше. Этот параметр так же позволяет оптимизировать эффективность прокси сервера (см. Hard disk cache size ) в зависимости от нагрузки. При наличии достаточного количества оперативной памяти параметр рекомендуется увеличить до нескольких сотен мегабайт (к примеру до четверти от имеющегося объема оперативной памяти, но не более половины). Значение параметра указывается в мегабайтах. Минимальное значение 1 Мб.
  • Minimum obect size задает ограничение на минимальное значение кэшируемого объекта. Опция позволяет сэкономить некоторое пространство памяти и уменьшить количество объектов кэша, если большое число очень маленьких объектов не будут помещены в кэш. Это так же скажется на производительности прокси сервера за счет уменьшения времени на поиск. Параметр задается в килобайтах, для снятия этого ограничения необходимо ввести значение 0.
  • Maximum object size задает ограничение на максимальный размер кэшируемого объекта. Управляя этой опцией можно запретить сохранять в кэше объекты больше данного размера для экономии используемого дискового пространства. Но данная экономия будет производится за счет дополнительной нагрузки на канал при повторных запросах объектов. Параметр задается в килобайтах. Для отключения этого ограничения необходимо ввести значение 0.
  • Level 1 subdirectories задает глубину вложенности субдиректорий кэша. Каждый уровень содержит 256 директорий. Увеличение глубины вложенности увеличивает время старта сервиса прокси сервера, но ускоряет поиск в кэше.
  • Memory replacement policy устанавливает политику замещения кэша в оперативной памяти. Возможные значения: LRU, Heap GDSF, Heap LFUDA, Heap LRU. Политика LRU удерживает в кэше недавно запрошенные и замещает давно неиспользуемые элементы. Политика Heap GDSF удерживает в кэше наиболее часто запрашиваемые маленькие объекты. Политика Heap LFUDA удерживает в кэше наиболее популярные объекты вне зависимости от их размера. Политика Heap LRU сочетает в себе LRU и Heap. Политика по умолчанию GDSF.
  • Cache replacement policy устанавливает политику замещения кэша на диске. Возможные значения: LRUHeap GDSFHeap LFUDAHeap LRU. Политика по умолчанию LFUDA.
  • Low-water-mark устанавливает границу запуска процедуры замещения кэша по заполненности. Значение задается в % от размера кэша. Значение по умолчанию 90(%).
  • High-water-mark устанавливает границу запуска агрессивной процедуры замещения кэша по заполненности. Значение задается в % о размера кэша. Значение по умолчанию 95(%).
  • Do not cache задает список доменов, не подлежащих кэшированию. Домены в списке задаются каждый с новой строки.
  • Enable offline mode отключает проверку кэшированных объектов. Этот режим позволяет иметь доступ к большему количеству кэшированных объектов.

Для отключения дискового кэша выберите в параметре Hard disk cache system значение null. 

После настройки страницы для сохранения и применения параметров нажмите кнопку Save.