DansGuardian. Настраиваем передачу IP-адреса клиента в Squid

  • Автор:

squid-dg-ip-000.pngКак показывает читательский отклик, существуют такие, простые на первый взгляд вопросы, которые тем не менее возникают снова и снова. Это свидетельствует о том, что данный момент остался не проработан и решение неочевидно определенной части читателей. Поэтому будет справедливо вернуться к таким вопросам и сделать дополнительные разъяснения. Сегодня мы решили окончательно внести ясность в вопрос о том, как "научить" контент-фильтр Dansguardian передавать прокси-серверу Squid IP-адрес клиента.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Прежде всего коротко обрисуем суть проблемы. Прокси-сервер Squid имеет развитую и мощную систему контроля доступа, которая широко используется многими администраторами. Одним из наиболее популярных элементов этой системы является IP-адрес клиента, на основе которого принимаются решения о предоставлении доступа.

Также именно IP-адреса клиентов из логов Squid служат основой для построения статистики любыми анализаторами логов, например, SARG.

Все это прекрасно работает до тех пор, пока мы не установим контент-фильтр Dansguardian, после чего все завязанные на IP-адреса правила перестают работать, а статистика показывает одного единственного клиента с адресом 127.0.0.1. Чтобы понять, что случилось и почему так происходит, давайте рассмотрим следующую схему:

squid-dg-ip-001.pngСогласно приведенной схемы клиенты с адресами из диапазона 192.168.31.101 - 192.168.31.199 обращаются к роутеру посылая ему HTTP-запросы и получая в ответ содержимое веб-страниц, при условии, что данное содержимое проходит все установленные администратором фильтры.

Теперь самое время вспомнить о спецификациях протокола HTTP, а именно то, что они не предусматривают передачи адреса клиента в заголовках запроса. Пока Squid был один, он самостоятельно фиксировал адреса обратившихся к нему клиентов, но с появлением в схеме Dansguardian ситуация изменилась.

Так как все клиентские запросы первым обрабатывает контент-фильтр, то именно он может фиксировать реальные адреса клиентов, что он собственно и делает, записывая их в лог. Находящийся за ним Squid получает все запросы от локального процесса (если Dansguardian находится с ним на одном физическом сервере) и не имеет никакой возможности определить истинный источник запроса, поэтому в логе окажется только один адрес - 127.0.0.1 и все основанные на IP-адресах правила перестанут работать.

squid-dg-ip-002.png

К счастью разработчики протокола предусмотрели подобную ситуацию и ввели в протокол специальный заголовок X-Forwarded-For, который позволяет передавать в составе запроса адрес клиента. В нашем случае, для исправления ситуации следует настроить Dansguardian на добавление в запрос таких заголовков, а Squid на их обработку, причем сделать это действительно несложно.

В конфигурационном файле Dansguardian /etc/dansguardian/dansguardian.conf найдите и приведите к следующему виду опцию:

forwardedfor = on

Теперь откройте файл конфигурации Squid /etc/squid3/squid.conf и после секции с элементами ACL найдите и раскомментируйте:

follow_x_forwarded_for allow localhost 

После чего Dansguardian начнет добавлять к запросам заголовки X-Forwarded-For, а Squid их обрабатывать.

Обратите внимание! Если вы используете старые версии Squid, младше 3.3, то убедитесь, что задан следующий элемент ACL - acl localhost src 127.0.0.1, начиная с версии 3.3 данный элемент является предопределенным и указывать его отдельно не требуется.

Для применения изменений перезапустим службы:

service dansguardian restart
service squid3 restart

Теперь можно еще раз заглянуть в логи Squid и убедиться, что нужный заголовок передается и обрабатывается.

squid-dg-ip-003.pngНадеемся, что наш материал поможет вам лучше понять происходящие процессы и осмысленно подойти к настройке роутера, отказавшись от бездумного копирования непонятных команд.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Дополнительные материалы:


  1. DansGuardian. Настраиваем контент-фильтр роутера
  2. DansGuardian. Дополняем контент-фильтр роутера антивирусом ClamAV
  3. DansGuardian. Сложности фильтрации русскоязычного контента
  4. Школьный роутер. Подводим итоги. Теория
  5. DansGuardian. Настраиваем передачу IP-адреса клиента в Squid

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments