Squid SqStat

squid-sqstatБывают ситуации, когда нужно наблюдать за трафиком на proxy сервере в реальном времени. Для таких случаев можно использовать скрипт SqStat. Установка данного скрипта будет производиться на proxy сервер squid, сконфигурированный в этой статье.

Установим web сервер apache с поддержкой php

# apt install apache2 php libapache2-mod-php7.0

Скачаем текущую версию sqstat и распакуем её

# cd /usr/src/
# wget http://samm.kiev.ua/sqstat/sqstat-1.20.zip
# unzip sqstat-1.20.zip

Создадим каталог sqstat в корневой директории web сервера, и скопируем туда распакованные файлы sqstat

# mkdir /var/www/html/sqstat
# cp -R sqstat-1.20/* /var/www/html/sqstat/

Перейдем в каталог /var/www/html/sqstat и скопируем конфигурационный файл для sqstat

# cd /var/www/html/sqstat/
# cp config.inc.php.defaults config.inc.php

Отредактируем конфигурационный файл sqstat

# nano /var/www/html/sqstat/config.inc.php
. . .
/* Squid proxy server ip address or host name */
$squidhost[0]="proxy";
/* Squid proxy server port */
$squidport[0]=3128;
/* cachemgr_passwd in squid.conf. Leave blank to disable authorisation */
$cachemgr_passwd[0]="T4urPfXYhC";
/* Resolve user IP addresses or print them as numbers only [true|false] */
$resolveip[0]=false;
/* uncomment next line if you want to use hosts-like file.
   See hosts.txt.dist. */
// $hosts_file[0]="hosts.txt"
/* Group users by hostname - "host" or by User - "username". Username work only
   with squid 2.6+ */
$group_by[0]="username";
. . .

Добавим в /etc/squid/squid.conf строчку с паролем cachemgr, идентичным указанному в /var/www/html/sqstat/config.inc.php

# nano /etc/squid/squid.conf
. . .
cachemgr_passwd T4urPfXYhC all

Перезапустим squid

# squid -k reconfigure

Добавим конфигурационный файл sqstat для apache

# nano /etc/apache2/conf-available/sqstat.conf

Alias /sqstat/ /var/www/html/sqstat/

<Location "/sqstat/">
        DirectoryIndex sqstat.php
        Require ip 192.168.1.10 192.168.1.11
</Location>

В Require ip указываем адреса пользователей, имеющих право на просмотр статистики.

Активируем созданный файл, и перезапустим apache

# a2enconf sqstat
# service apache2 restart

Если открыть в браузере страницу http://your_proxy_ip/sqstat/, выйдет ошибка

SqStat error

Error (1): Cannot get data. Server answered: HTTP/1.1 200 OK

Для исправления ошибки, создадим патч файл. Идея патча взята отсюда.

# nano /var/www/html/sqstat/sqstat_squid32.patch

107c107
< 		if($raw[0]!="HTTP/1.0 200 OK"){
---
> 		if($raw[0]!="HTTP/1.1 200 OK"){
131,132c131,132
< 					if(substr($v,0,5)=="peer:") $parsed["con"][$connection]["peer"]=substr($v,6);
< 					if(substr($v,0,3)=="me:") $parsed["con"][$connection]["me"]=substr($v,4);
---
> 					if(substr($v,0,7)=="remote:") $parsed["con"][$connection]["remote"]=substr($v,8);
> 					if(substr($v,0,6)=="local:") $parsed["con"][$connection]["local"]=substr($v,7);
178c178
< 			$ip=substr($v["peer"],0,strpos($v["peer"],":"));
---
> 			$ip=substr($v["remote"],0,strpos($v["remote"],":"));
189c189
< 				$ip=ip2long(substr($v["peer"],0,strpos($v["peer"],":")));
---
> 				$ip=ip2long(substr($v["remote"],0,strpos($v["remote"],":")));

Сделаем копию оригинального файла sqstat и применим созданный патч

# cd /var/www/html/sqstat/
# cp sqstat.class.php sqstat.class.php.default
# patch sqstat.class.php sqstat_squid32.patch
patching file sqstat.class.php

Обновив страницу http://your_proxy_ip/sqstat/, должно появиться окно статистики в реальном времени.

Squid SqStat: 4 комментария

  1. Павел

    Здравствуйте, а что если ошибка
    SqStat error

    Error (1): Cannot get data. Server answered: HTTP/1.1 403 Forbidden
    как быть тогда?

    1. Андрей Автор записи

      Данная ошибка чаще всего возникает из-за различия пароля cachemgr_passwd в config.inc.php и squid.conf. У меня тоже была такая ошибка, точно не помню, но проблема решилась, когда я использовал простой пароль. т.е. без спец. символов. Попробуйте использовать пароль как в статье. В squid.conf параметр cachemgr_passwd указан последней строкой.

        1. Андрей Автор записи

          Не совсем верно. В статье Squid active directory authentication параметр выглядит так

          . . .
          http_access allow localhost manager
          http_access deny manager
          . . .
          

          Первая строка разрешат доступ к Squid Cache Manager из localhost.
          Вторая строка запрещает доступ к Squid Cache Manager из любых источников, отличных от localhost.
          Если Вы устанавливали SqStat локально на прокси-сервер, то все должно работать. Если веб-сервер со SqStat находится на иной машине, то нужно выполнить действия из раздела Remote Administration.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *