Решил я поделиться этапами настройки связки SAMS+SQUID
Итак:
root@hellserver:/home/maxx# uname -a
Linux hellserver 2.6.28-11-server #42-Ubuntu SMP Fri Apr 17 02:48:10 UTC 2009 i686 GNU/Linux
Предполагается что у вас уже настроены MySQL и Apache
Нам надо поставить сабж:
apt-get install squid
менеджер посавит squid и squid-common и еще что то по зависимостям, далее нам нам нужно скачать и скомпилить SAMS. Хочу сказать что я ооочень удивился узнав что sams'a нигде в сорсах линукса нет... это плохо, не считайте это холиваром, но во freebsd самс есть в портах, причем его makefile не поломан как в линуксе, дело в том что, после компилирования самс, создает конфигурационный файл в /etc
Его содержимое:
SQUID_DB=squidlog
SAMS_DB=squidctrl
MYSQLHOSTNAME=localhost
MYSQLUSER=sams
MYSQLPASSWORD=пароль
MYSQLVERSION=4.0
SQUIDCACHEFILE=access.log
SQUIDROOTDIR=/etc/squid
SQUIDLOGDIR=/var/log/squid
SQUIDCACHEDIR=/var/spool/squid
SAMSPATH=/usr/local
SQUIDPATH=/usr/sbin
SQUIDGUARDLOGPATH=/var/log
SQUIDGUARDDBPATH=/var/db/squidguard
RECODECOMMAND=iconv -f KOI8-R -t 866 %finp > %fout
LDAPSERVER=servername_or_ipadress
LDAPBASEDN=your.domain
LDAPUSER=DomainAdministrator
LDAPUSERPASSWD=passwd
LDAPUSERSGROUP=Users
REJIKPATH=/usr/local/rejik
SHUTDOWNCOMMAND=shutdown -h now
CACHENUM=0
так вот, компиляция отдельными пакетами, создает некоторое количество трудностей, это пути до демонов, или пути до каких то библиотек, в нашем случае, самс сконфигурировался с параметром:
SAMSPATH=/usr/local/share хотя самс лежит в /usr/local/sams
поэтому samsdaemon не считал трафик.
по оканчанию компиляции следует создать линк
ln -s /usr/local/share/sams /var/www/sams
Ну что ж, конфиг самса легко настраивается поэтому я думаю ничего разъяснять не нужно, переходим к конфигу squid'a
Замечу, для работы с самсом следует произвести лишь только минимум настроек сквида (предпологается что никаких редиректоров не используется) ниже листинг squid.conf каким он должен быть в итоге настройки:
Помните, что каждый параметр должен быть описать в соответсвующем месте конфига (TAG)
#метод авторизации пользователей
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/ncsa.sams
auth_param basic children 10
#сообщение прокси сервера
auth_param basic realm Squid proxy-caching web server PHOENIX GATEWAY
auth_param basic credentialsttl 2 hours
#этот параметр добавил автоматически SAMS в ходе настройки
acl _sams_4afaf526ecb91 proxy_auth "/etc/squid/4afaf526ecb91.sams"
acl _sams_4afaf526ecb91_time time MTWHFAS 00:00-23:59
acl _sams_local_ip dst "/etc/squid/local_ip.sams"
#доступ к прокси серверу описывается в ACL
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
#разрешаем доступ к прокси указанным группам
http_access allow _sams_4afaf526ecb91 _sams_4afaf526ecb91_time
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
icp_access allow localnet
icp_access deny all
#какой порт слушать
http_port 3128
hierarchy_stoplist cgi-bin ?
#размер и директория для создания кеша
#2048 — общий объем отведенный кешу в Mb
cache_dir ufs /var/spool/squid 2048 16 256
#логи
#следует заметить что, настройка ведения логов отличная от дефолтовой может привести к не правильному подсчету трафика, поэтому я не стал рисковать и оставил по умолчанию
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Package(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY\s[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
#параметр отвечает за ограничение скорости, выставляется как в конфиге сквида, так и через веб интерфейс самса
delay_pools 1
delay_class 1 2
delay_access 1 allow _sams_4afaf526ecb91
delay_access 1 deny all
delay_parameters 1 524288/524288 524288/524288
hosts_file /etc/hosts
coredump_dir /var/spool/squid
Вобщем настройка сквида завершена, еще раз напоминаю, будьте внимательны добавляя новые параметры в конфигурационный файл squid'a каждый параметр должен быть описан в четко отведенном для него месте (TAG)
переходим к настройке SAMS
вбиваем в браузере:
http://server_ip/sams
по умолчанию, логин/пароль Admin/qwerty
1 нам нужен пункт "Авторизация пользователя" далее в главном окне щелкаем по значку в нижней части
после этих манипуляций мы видим перед собой общую статистику о системе, и трафике
2 Сейчас шустренько тыкаем в левом фрейме пункт SAMS - Администрирование SAMS - главное окно, нижняя часть - значек
Считать трафик: Реальный
Преобразовывать DNS имена: нет
Уровень детализации записей в журнале 9 (смотрим детальные логи)
Домен по умолчанию тут вписать рабочую группу
далее что нас интересует
Способ аутентификации пользователя:
выбираем: NCSA
Проверять наличие команды на реконфигурирование squid каждые 1 сек
Обрабатывать логи SQUID Да (нам же нужно считать трафик)
Запускать обработчик логов через N (в нашем случае 1 минута) минут
Автоматически очищать счетчики трафика пользователей Да(каждый месяц трафик пользователей будет очищаться samsdaemon)
Редиректор Не используем
Включить ограничение скорости доступа пользователей (delaypool) Да (см. конфиг squid.conf "delaypool 1")
Сохранять данные о трафике в базе за последние 3 месяца (поставил 3 на всякий случай)
Так, тут все, жмем сохранить, далее в пункт SQUID жмем реконфигурация
Далее нам нужно создать шаблон
Шаблоны пользователей - создаем шаблон (тут все просто, название, скорость канала, объем трафика для каждого пользователя, метод авторизации NCSA)
После всего этого мы можем создавать пользователей, и добавлять их в шаблоны. Я думаю с остальными пунктами вы разберетесь сами, там все просто =)
Ах да кстати, чуть не забыл, еще один досадный глюк самса, который проявился у меня:
Почему то в базу данных SQL самс не пишет созданных пользователей, а только одного Администратора, остальных он держит в ncsa.sams и из за этого если вы хотите создать больше одного администратора, у вас при авторизации в SAMS будет вываливаться ошибка авторизации, и ошибка что то вроде этой
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 29 in /usr/local/share/sams/main.php on line 144
Warning: Cannot modify header information - headers already sent by (output started at /usr/local/share/sams/main.php:144) in /usr/local/share/sams/main.php on line 145
Warning: Cannot modify header information - headers already sent by (output started at /usr/local/share/sams/main.php:144) in /usr/local/share/sams/main.php on line 146
Authentication ERROR. В интернетах много разговоров по этому поводу, и у каждого свое решение, так вот я вам предлагаю решить ее следущим образом: идем в phpmyadmin если его нет, ставим, открываем базу squidctrl жмем значек "Вставить" на таблице passwd там мы увидим поля которые следует заполнить.. собственно заполняем =) Все заполненные поля должны быть Not NULL (я надеюсь вы поняли про какие поля я говорю, первые три поля сверху =) в поле pass вставляем шех пароля из файла /etc/squid/ncsa.sams иначе будет ошибка авторизации поле access ставим значение 1 (Администратор).
Теперь в /etc/squid должны появиться такие файлы:
root@hellserver:/home/maxx# ls -l /etc/squid
итого 356
-rw-r--r-- 1 root root 104 2009-11-12 15:45 4afaf526ecb91.sams
-rw-r--r-- 1 root root 26 2009-11-12 15:45 local_ip.sams
-rw-r--r-- 1 root root 314 2009-11-12 15:45 ncsa.sams
-rw------- 1 root root 169704 2009-11-12 15:45 squid.conf
-rw-r--r-- 1 root root 169279 2009-11-12 15:45 squid.conf.bak
ВСЕ, вроде все... может быть я что то упустил, может что то не правильно описал, так что ваши комментарии, вопросы, поправки будут очень кстати. Хочу еще сказать, есть хороший мануал по самсу: http://sams.perm.ru/doc/ru/index.html
Комментарии
10 лет 26 недель назад
10 лет 27 недель назад
10 лет 27 недель назад
10 лет 28 недель назад
10 лет 29 недель назад
10 лет 30 недель назад
10 лет 30 недель назад
10 лет 40 недель назад
10 лет 40 недель назад
10 лет 40 недель назад