На шлюзе считаем трафик и ограничиваем доступ в Интернет — убираем рекламу, сокращаем потребление трафика (за счет общего кэша), ну и точно узнаем сколько у кого трафика — полезно для ловли спамеров и ботнетов!
Ингредиенты:
1. FreeBSD сервер подготовленный по рецепту Создаем шлюз на FreeBSD и Wi-Fi точку доступа!
2. Putty
Для начала для использования веб интерфейса надо установить APM (Apache + PHP + MySQL). Плюсы этой связки распространенность и хорошая документация, минусы вес от Apache нерациональное использование памяти (просто чудовищное) но на не загруженных системах это не особо критично!
Ставим MYSQL, причем версиях 5.0 потому что Netams стабильно работает только с этой версией! При установке соглашаемся на все, особого чего то выбирать не надо!
cd /usr/ports/databases/mysql50-server/ make install
А также нужен mysql-client
cd /usr/ports/databases/mysql51-server/ make install
Создаем базу и даем права на папку!
/usr/local/bin/mysql_install_db chown -R mysql /var/db/mysql/ chgrp -R mysql /var/db/mysql/ а может не надо /usr/local/bin/mysqld_safe /usr/local/bin/mysqladmin -u root password svoi_parol_dlya_mysql
Добавляем в rc.conf
mysql_enable="YES"
Создаем файл my.cnf
vi /etc/my.cnf
добавляем в него строки
[mysqld] max_connections=250 table_cache=750 query_cache_size=16M thread_cache_size=180 query_cache_limit=1M query_cache_size=48M query_cache_type=1 tmp_table_size=128M max_user_connections=15 net_retry_count=10 open_files_limit=10000
Стартуем
/usr/local/etc/rc.d/mysql-server restart
Заходим в консоль Mysql
mysql -u root -p
Выполняем команду
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'svoi_parol_dlya_mysql' WITH GRANT OPTION;
выходим
exit;
Устанавливаем Apache
cd /usr/ports/www/apache22 make install
При выборе параметров надо отметить
[X] Mysql
Вставляем в rc.conf
apache22_enable="YES"
Редактируем
vi /usr/local/etc/apache22/httpd.conf
Добавляем после строки
Directory "/usr/local/www/apache22/data"
текст
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
и изменяем там же AllowOverride на All это чтобы обрабатывались в каждой папке .htaccess
Находим «DirectoryIndex»
добавляем index.php index.html первым и на всякий случай index.htm
DirectoryIndex index.php index.html index.htm
Добавить в /boot/loader.conf:
accf_http_load="YES"
Набираем в консоли
/usr/local/etc/rc.d/apache22 start
Apache стартовал
Performing sanity check on apache22 configuration: Syntax OK Starting apache22.
Заходим в любом браузере на адрес нашего сервера у меня это http://192.168.1.107/
и видим вдохновляющею надпись
It works!
Теперь устанавливаем PHP5.3
cd /usr/ports/lang/php53/ make install
выбрать
[X] Apache
Далее устанавливаем
cd /usr/ports/lang/php53-extensions make config
должны быть выбраны пункты
[X] MySQL
[X] SOAP
[X] OPENSSL (на всякий)
[X] GD
make install
Сидим над установкой соглашаемся на все что предлагает, если будет ругаться на python 2.5 установить его отдельно из портов и повторить.
Смотрим /usr/local/etc/apache22/httpd.conf
должно стоять
LoadModule php5_module libexec/apache22/libphp5.so
В папке /usr/local/etc/ лежать готовы варианты настроек копируем одну из них в
cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
Редактируем php.ini
Стоит увеличить размер памяти в некоторых настройках он мал
memory_limit = 128M
Общая рекомендация держать выключенным globals
register_globals = Off
Создаем тестовый файл
cd /usr/local/www/apache22/data/ vi phpinfo.php
вставляем
<?php print_r (phpinfo()); ?>
Перезагружаем Apache
/usr/local/etc/rc.d/apache22 restart
Заходим через браузер на http://айпи_вашег_сервера/phpinfo.php
и нам показывают версию PHP с установленными модулями.
Устанавливаем phpMyAdmin для работы с базами MySQL
Находим где у нас phpmyadmin и устаналиваем
whereis phpmyadmin phpmyadmin: /usr/ports/databases/phpmyadmin cd /usr/ports/databases/phpmyadmin make install
Установщик сообщает что кинул файлы в /usr/local/www/phpMyAdmin
Добавляем в конце httpd.conf
Alias /phpmyadmin "/usr/local/www/phpMyAdmin/" <Directory "/usr/local/www/phpMyAdmin/"> Options none AllowOverride Limit Order Deny,Allow Deny from all Allow from all AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </Directory>
Слегка редактируем настройки чтобы phpMyAdmin не выдавал предупреждения, они не на что не влияют но
cd /usr/local/www/phpMyAdmin cp config.sample.inc.php config.inc.php chgrp www config.inc.php vi config.inc.php
В строке
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
В пустых кавычках
= '';
пишем любую белеберду!
Расскоменчиваем строку
$cfg['DefaultLang'] = 'en';
В php.ini комментим все в директиве [MySQli]
Перегружаем Apache
/usr/local/etc/rc.d/apache22 restart
Заходим через браузер на http://айпи_сервера/phpmyadmin/ вводим пользователя root и пароль от root MySQL и все работает (причем гораздо красивее чем с мой последней установки) главное что не надо работать с консолью MySQL тут есть всё!
Устанавливаем Netams
cd /usr/ports/net-mgmt/netams/ make install
В первом окне выбираем DEBUG, MYSQL и CGI
Создаем файл netams.conf для NeTAMS
cd /usr/local/etc/ vi netams.conf
Приводим его к виду указываем рут пароль от mysql что нетамс смог создать себе базу и пароль админа самого NeTAMS — aaa.
#begin debug none language ru user name admin real-name Admin password aaa email root@localhost permit all #services configuration service server 0 login local listen 20001 max-conn 6 service processor lookup-delay 60 flow-lifetime 180 policy name ip target proto ip policy name www target proto tcp port 80 81 8080 3128 443 policy name ftp target proto tcp port 20 21 policy name pop3 target proto tcp port 110 policy name smtp target proto tcp port 25 policy name ipsec target proto esp policy name rdp target proto tcp port 3389 5589 3390 5590 5593 37777 policy name ssh target proto tcp port 22 policy name sambatcp target proto tcp port 135 137 138 139 445 policy name sambaudp target proto udp port 135 137 138 139 445 policy name udp target proto udp policy name tcp target proto tcp restrict all drop local pass unit group name WIFI acct-policy ip www ftp pop3 smtp rdp ssh ipsec sambatcp sambaudp udp tcp unit group name SERVER acct-policy ipsec ip www ftp pop3 smtp rdp ssh ipsec sambatcp sambaudp udp tcp unit host oid 0F37B4 name WLAN0 ip 10.10.30.1 acct-policy ip www ftp pop3 smtp rdp ssh ipsec sambatcp sambaudp udp tcp unit host oid 03186C name RE0 ip 192.168.1.107 acct-policy ip www ftp pop3 smtp rdp ssh ipsec sambatcp sambaudp udp tcp unit user oid 0D6EBD name WIFI000 ip 10.10.30.10 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp unit user oid 0536F4 name WIFI001 ip 10.10.30.11 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp unit user oid 072376 name WIFI002 ip 10.10.30.12 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp unit user oid 07405B name WIFI003 ip 10.10.30.13 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp unit user oid 037797 name WIFI004 ip 10.10.30.14 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp unit user oid 095C10 name WIFI005 ip 10.10.30.15 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp unit user oid 0A157C name WIFI006 ip 10.10.30.16 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp unit user oid 01AAEB name WIFI007 ip 10.10.30.17 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp unit user oid 03304A name WIFI008 ip 10.10.30.18 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp unit user oid 0C4C79 name WIFI009 ip 10.10.30.19 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp unit user oid 0B8C3C name WIFI010 ip 10.10.30.20 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp unit user oid 0A3398 name WIFI011 ip 10.10.30.21 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp unit user oid 04CB38 name WIFI012 ip 10.10.30.22 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp unit user oid 0DFD5B name WIFI013 ip 10.10.30.23 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp unit user oid 00715D name WIFI014 ip 10.10.30.24 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp unit user oid 08F86B name WIFI015 ip 10.10.30.25 parent WIFI acct-policy ip www ftp pop3 smtp rdp ssh sambatcp sambaudp udp tcp service storage 0 type mysql user root password svoi_parol_dlya_mysql accept all service data-source 1 type ip-traffic source divert 199 layer7-detect urls service quota policy ip notify soft owner notify hard owner notify return owner service monitor 0 monitor to file /usr/netams/mon_netams.log monitor unit WLAN0 monitor unit RE0 service alerter 0 report rep1 type traffic period day detail simple smtp-server localhost service html path /usr/local/www/netams/stat run 10min url http://192.168.1.107/netams/ htaccess yes client-pages all account-pages none language ru service scheduler oid 08FFFF time 10min action "html" #end
Создаем папку для логов нетамс я делаю нестандартное место чтобы не переполнять папку var
cd /usr mkdir netams
Добавляем /etc/rc.conf строку
netams_enable="YES"
Запускаем netmas
/usr/local/etc/rc.d/netams start
Смотрим на него
sockstat -4l | grep netams
root netams 1541 4 tcp4 127.0.0.1:20001 *:*
root netams 1541 7 div4 *:199 *:*
Заходим в нетамс телнетом имя и пароль у нас указаны в netams.conf в строке
user name admin real-name Admin password aaa email root@localhost permit all
имя: admin
пасс: aaa
telnet 127.0.0.1 20001
здесь надо выполнить команды
html save show version show config exit
В MySQL должна появится база netams. Для этого можно использовать phpMyAdmin но сделаем это последний раз через консоль!
mysql -u root -p show databases;
+———————+
| Database |
+———————+
| information_schema |
| mysql |
| netams |
| test |
+———————+
4 rows in set (0.00 sec)
Создаем пользвателя для базы netams чтобы лишний раз не светит рут пароль от Mysql
grant all privileges on netams.* to 'netams'@'localhost' identified by 'pass_netams'; exit;
Прежде чем начать редактировать настройки NeTAMS надо его остановить
/usr/local/etc/rc.d/netams stop vi /usr/local/etc/netams.conf
Приводим к виду строчки
type mysql user netams password pass_netams
Запускаем NeTAMS
/usr/local/etc/rc.d/netams start
Вдруг начинает кто-то ругаться на кодировку, оста наливаем netams, идем в phpMyAdmin и на главной странице меняем Сопоставление соединения с MySQL на latin8_swedish_ci!
Запускаем NeTAMS
/usr/local/etc/rc.d/netams start
Идем опять в телнет
telnet 127.0.0.1 20001
здесь надо выполнить команды
html save show version show config exit
Настраиваем ротацию логов NeTAMS в нем эта функция встроена но запускается в ручную, нужен скрипт для автоматизации!
На нашем сервере будет лежать скрипт на языке expect — устанавливаем её из коллекции портов (которую можно поставить с DVD)
cd /usr/ports/lang/expect make install
Идем в папку /root и делаем файл
cd /root vi netams_rotate
Вставляем туда текст
#!/usr/local/bin/expect -f log_user 0 set timeout 300 spawn /usr/bin/telnet 127.0.0.1 20001 expect "Username:" {send "admin\r"} expect "Password:" {send "aaa\r"} send "rotate monitor 0\r" expect "Rotating monitor file" { system /bin/rm /usr/netams/mon_netams.log.* send "exit\r" } exit
Тут указано имя и пароль от telnet NeTAMS и имя и папка с логами, проверьте чтобы совпадало с вашими значениями!
Чтобы скрипт запускался его надо сделать исполняемым
chmod 755 netams_rotate
Лезем в планировщик
crontab -e
Добавляем строчку которая будет запускать скрипт каждое 16-тое число месяца в 2 часа 37 минут, правила редактирования такие же как в vi
37 2 16 * * /usr/local/bin/expect -f /root/netams_rotate >> /dev/null 2>&1
В настройка ipfw разкомментируем строки которые будут заворачивать тарфик на нетамс
vi /etc/rc.firewall
Считаем на внутренном интерфейсе
${FwCMD} add divert 199 ip from any to any out xmit ${lanin} ${FwCMD} add divert 199 ip from any to any in recv ${lanin}
Считаем на внешнем интерфейсе, правила нетамс должны обрамлять натд так вес говорят
${FwCMD} add divert 199 ip from any to any out xmit ${lanout} ${FwCMD} add divert natd ip from any to any out via ${lanout} ${FwCMD} add divert natd ip from any to me in via ${lanout} ${FwCMD} add divert 199 ip from any to any in recv ${lanout}
Перезагружаем ipfw
/etc/rc.d/ipfw restart
Нетамс НЕдобавляет в конфиг апаче файл netams-apache-freebsd.conf делаем ручками
cp /usr/local/share/netams/netams-apache-freebsd.conf /usr/local/etc/apache22/Includes/netams-apache-freebsd.conf
надо дать права на скрипты нетамся
chmod -R +x /usr/local/www/netams/cgi-bin
И отредактировать файл добавить пароль к доступу к mysql и имя netams
vi /usr/local/www/netams/cgi-bin/config.cgi
$sql_login="netams"; $sql_password="pass_netams";
Перегружаем Apache
/usr/local/etc/rc.d/apache22 restart
Заходим через браузер на http://айпи_вашего_сервера/netams/ все работает!
Заходим на шлюз с Wi-Fi устройства и активно работает более 10 минут — потому что по нашим настройкам NeTAMS обрабатывает статистику каждые 10 минут!
Просмотр страницы начинаем всегда с адреса http://айпи_вашего_сервера/netams/ статистика пишет по часам всегда проверяйте актуальность по строке вверху страницы Время создания: 03.10.2011 14:03:37 обновлять имеет смысл только в период данного часа а после надо открывать с начала. Статистика скрыта её надо отрывать нажимая на collapse children и collapse policies вот пример:
У нас открыта группа GROUP: WIFI в ней статистика по всем устройства WI-FI
ip — Общий трафик прошедщий через группу
www, ftp… — это подсчет трафика на описанных нами портах
udp, tcp — это подсчет по видам трафика
Так выглядит статистика по клиентам Wi-Fi
В Netams включена опция авторизация через .htacess но она не работает видимо не учли особенностей Apache 22, надо самим запаролить вход
В начале создаем папку с файлом пароля
mkdir /usr/local/etc/htpswd/ cd /usr/local/etc/htpswd /usr/local/sbin/htpasswd -c name.file name.user
New password: ******
Re-Type new password: ******
Adding password for user name.user
chmod 644 name.file
В конфиг апача22 в описание папки Netams добавляем строки в описание
vi /usr/local/etc/apache22/Includes/netams-apache-freebsd.conf
Приводим описание папки NeTAMS к виду
<Location /netams> AuthType Basic AuthName "***" AuthUserFile /usr/local/etc/htpswd/name.file Require user name.user Options Indexes FollowSymLinks MultiViews Order allow,deny allow from all DefaultLanguage ru AddDefaultCharset WINDOWS-1251 </Location>
Можно не указывать конкретного юзера написав
Require valid-user
Перезагружаем Apache
/usr/local/etc/rc.d/apache22 restart
Теперь у нас запрашивается пароль от юзера name.user
Устанавливаем SQUID
cd /usr/ports/www/squid make config
Выбираем
[X] SQUID_DELAY_POOLS Enable delay pools
[X] SQUID_CARP Enable CARP support
[X] SQUID_WCCP Enable Web Cache Coordination Prot. V1 |
[X] SQUID_IDENT Enable ident (RFC 931) lookups
[X] SQUID_KQUEUE Use kqueue(2) instead of poll(2)
[X] SQUID_LARGEFILE Support log and cache files >2GB
И устанавливаем
make install
Редактируем конфиг Squid
vi /usr/local/etc/squid/squid.conf
Находим строчки описывающие следующее и меняем должно быть так, просто в любом месте поставить эти строчки нельзя, некоторые из них неактивны закрыты # надо открыть
http_port 127.0.0.1:3128 transparent
В конфиге меняем размера кеша до 10 гб
cache_dir ufs /usr/local/squid/cache 10000 16 256
Находим все сторчки со словом localnet и закрываем их #, чтобы свои не лезли в обход SAMS
Меняем в конфиге директории где сквид хранит данные, по умолчанию это var/squid и она быстро заполняется меняем на
cache_dir ufs /usr/local/squid/cache 10000 16 256 access_log /user/local/squid/logs/access.log squid coredump_dir /usr/local/squid/cache
И строку где будет лежать в правильном месте squid.pid из-за этого масса проблем может быть если оставить как есть
pid_filename /var/run/squid/squid.pid
Создаем новые директории для данных sqiud (одна строка)
mkdir /usr/local/squid/ && mkdir /usr/local/squid/logs && mkdir /usr/local/squid/cache && chown squid:squid /usr/local/squid/ && chown squid:squid /usr/local/squid/logs && chown squid:squid /usr/local/squid/cache && chmod -R 777 /usr/local/squid/
Создаем директорию для sqiud.pid
mkdir /var/run/squid chown squid:squid /var/run/squid
Редактируем файл запуска squid
vi /usr/local/etc/rc.d/squid
Приводим строчку к виду
squid_pidfile=${squid_pidfile:-"/var/run/squid/squid.pid"}
Далее добавляем в /etc/rc.conf строку для автоматического запуска squid после перезагрузки
squid_enable="YES" squid_pidfile="/var/run/squid/squid.pid"
Перезагружаемся
reboot
Создадим (SWAP) для прокси сервера Squid
/usr/local/sbin/squid -z
2011/10/03 15:10:27| Creating Swap Directories
Создаем ротацию логов сквида чтобы они не накапливались!
Лезем в планировщик
crontab -e
Добавляем строчку (тут наша папка где хранятся данные squid) которая будет запускаться скрипт каждое 21 число каждого месяца, правила редактирования такие же как в vi
* * 21 * * /usr/local/sbin/squid -k rotate && /bin/rm /usr/local/squid/logs/access.log.* /usr/local/squid/logs/cache.log.* /usr/local/squid/logs/store.log.*
В /etc/rc.firewall раскурваем строку, весь трафик с 80 порта отправляется на сквид
${FwCMD} add fwd 127.0.0.1,3128 tcp from ${netin} to any 80 via ${lanout}
Перезагружаем ipfw
/etc/rc.d/ipfw restart
Устанавливаем SAMS
cd /usr/ports/www/sams make config make install
Добавляем в /etc/rc.conf
sams_enable="YES"
Добавляем в /usr/local/etc/apache22/httpd.conf
Alias /sams "/usr/local/share/sams/" <Directory "/usr/local/share/sams/"> AllowOverride AuthConfig Options Indexes MultiViews Order allow,deny Allow from all AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </Directory>
Создаем и редактируем файл настроек, особенно надо проверить все пути
vi /usr/local/etc/sams.conf
Приводим к виду
[client] SQUID_DB=squidlog SAMS_DB=squidctrl MYSQLHOSTNAME=localhost MYSQLUSER=sams MYSQLPASSWORD=sams123 MYSQLVERSION=5.0 SQUIDCACHEFILE=access.log SQUIDROOTDIR=/usr/local/etc/squid SQUIDLOGDIR=/usr/local/squid/logs SQUIDCACHEDIR=/usr/local/squid SAMSPATH=/usr/local SQUIDPATH=/usr/local/sbin RECODECOMMAND=iconv -f KOI8-R -t 866 %finp > %fout SHUTDOWNCOMMAND=/sbin/shutdown -h now CACHENUM=0
MYSQLUSER=sams — это еще не созданный юзер базы
MYSQLPASSWORD=sams123 — это его пароль
Перегружаем Apache
/usr/local/etc/rc.d/apache22 restart
Заходит на старницу SAMS http://айпи_нашего_сервера/sams/
Cогглашаемся на создание базы тут надо будет указать root пароль от Mysql и пароль для пользователя sams который мы в конфиге уже прописали (sams123).
База создана, САМС запустил веб интерфейс чтобы зайти надо ввести admin qwerty!
Но прежде надо исправить два файла в /usr/local/share/sams/src чтобы php работал правильно
configtray.php webconfigtray.php
надо найти
function GetHostName() $hostname=GetHostName();
и заменить на
function GetSamsHostName() $hostname=GetSamsHostName();
Если вебморда SAMS ругается вот так в Настрйоках пользователя:
Warning: strftime() [function.strftime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Moscow' for 'MSK/3.0/no DST' instead in /usr/local/share/sams/src/usertray.php on line 336
То надо в php.ini задать
date.timezone = Europe/Moscow
Для того что бы отображалась загруженность сервера меняем запрос free на top
vi /usr/local/share/sams/bin/freemem
Правим до такого состояния
STR=`top | grep Mem:` echo $STR
Меняем запрос free на top
vi /usr/local/share/sams/bin/freeswap
Правим до такого состояния
STR=`top | grep Swap:` echo $STR
Меняем далее
vi /usr/local/share/sams/src/configtray.php
находим
$a=explode(" ",$value); for($i=1;$i< 4;$i++) { $mem[$i-1]=$a[$i]; } $a=explode(" ",$swapvalue); for($i=1;$i< 4;$i++) { $swap[$i-1]=$a[$i]; }
меняем на
$a=explode(" ",$value); for($i=1;$i< 4;$i++) { $mem[0]=$a[1]+$a[3]+$a[5]+$a[11]; //total mem $mem[1]=$a[1]; //Used mem $mem[2]=$a[11]; //Free mem } $a=explode(" ",$swapvalue); for($i=1;$i< 4;$i++) { $swap[0]=$a[1]; //total swap $swap[1]=$a[3]; //used swap $swap[2]=$a[5]; //free swap }
Свободный swap всё равно правильно показывать не будет пока не появится used
Находим в squid.conf секцию с TAG: url_rewrite_program
в конце описания находим строку # none и меняем её на:
url_rewrite_program /usr/local/bin/samsredir
разблокируем также последующие строку
url_rewrite_children 5
Перегружаемся
reboot
Настраиваем SAMS
Заходим SAMS http://айпи_нашего_сервера/sams/ вводим admin qwerty!
Идем в настройки SAMS administration там в низу гаечный ключ и молотов жмем туда и приводим страницу к виду:
Нажимаем в меню Users и добавляем юзеров описывая их IP и не забывая ставить галочку на актив вот так:
В Настройках Вебинтерфейса настраиваем все под себя, там же включается показ графиков. Так же редактируем Шаблоны Пользователей включая или выключая фильтры и обратите внимание ограничение по скорости! Так же есть ограничения на выкаченный трафик! Для действия изменения надо SAMS>SQUID реконфигурировать левый нижний значок — это надо делать каждый раз!
Можно загрузить все настройки и списки блокировок из файла, вот для нашей конфигурации
samsdb-14Apr2012-13-26-01.sql
В меню выбираем Сохранение Конфигурации > Восстановление конфигурации из файла и загружаем туда этот файл! Отмечаем все галочки! После установки проверьте настройки SAMS особенно IP вашего сервера.
Принцип блокировки рассмотрим на сайте mail.ru! Нам нужно заблокировать ссылки по которым вызывается реклама, для фото и swf это хорошо видно в Информации о странице (Firefox правая мыш). Проблема mail.ru в том что у них и свои матерьялы и гнилая реклама вызываются одинаково «r.mail.ru»,»rs.mail.ru»,»r2.mail.ru» если в SAMS в Перенаправленных их заблокировать то всё исчезнет! Но я этого не делал! У нас задача заблокировать только .swf для этого в SAMA предусмотрен язык регулряных выражений PERL который позволит описать этот тяжелый случай! Нам надо вычленить все ссылки с .swf, независимо от названия файла, из папок «rs.mail.ru»,»r2.mail.ru».
Идем в меню SAMS в Регулярные Выражения в Реклама нажимаем на r(s|2).mail.ru/w+.swf и правим его до:
r[s|2].mail.ru\/\w+\.swf
К сожалению файл конфигурации не сохраняет не традиционные символы, как обратный слеш, приходится руками!
Регулярные выражения срабатывают если имеются в теле всей ссылки!
[s|2]
— в этом месте s или 2
\/
— значит тут обычный /
\w
— любая цифра буква или ‘_’
+
— любое количество предыдущего значения
\.
— значит тут обычная .
Проверять работоспособность регулярных выражений очень удобно тут!
Идем в SAMS>SQUID реконфигурировать левый нижний значок — это надо делать чтобы вступили в действия любые изменения! Ну и всё реклама swf у нас блокируется, это не дейтсвует на рекламу в jpg такие ссылки совподают с ссылками на сервисы mail.ru нам это не надо!
Вот пример действия фильтров — чтобы любовь к кошкам не заставляла наблюдать вот такое — особенно это критично на нетбуках и так места мала на экране!
Естественно блокировка срабатывает на всех устройствах. Иногда бывают артефакты, какие-то непонятки с кодировкой страницы запрета — но рекламного спама 100% нет.
Блокировка грязной рекламы работа творческая и неустанная — появляются новые рекламные ссылки и способы всё это надо отлавливать! Так же трудоемкая задача блокировать соц сети — мало их явно блокировать, еще надо выискивать и блокировать прокси серверы и всякие анонимайзеры — но их можно будет заметить в статистике пользователя! Но от захватившей всех сетей контекстной и баннерной рекламы очень просто очиститься — это позволяет не тратить время на рекламные ссылки (масса умельцев которые зарабатывают на ключевых словах в поиске выдавая страницы с рекламой оформленные как что-то стоящее), сокращает трафик отсекая тяжелую рекламу и деля на всхе кэш для больших коллективов это минус 20% трафика примерно, ну и закрытие вредоносных сайтов я бы сразу блокировал всё .cn .info!
P.S. Мой список блокировок!
[prettyfilelink src=»https://mega.co.nz/#!OFNWCbqZ!T2WuY1SxGyv52ZN_2e6MrE9wgh1S-z-Lj2qpXvzXwtk» type=»zip»] Data 13Sep2013[/prettyfilelink]
В меню выбираем Сохранение Конфигурации > Восстановление конфигурации из файла и загружаем туда этот файл! Отмечаем галочку:
Список перенаправления запроса и запрета доступа.
В настройках Шаблона включайте что нужно, далее в меню реконфигурируем SQUID.
UPD: Squid в режиме прозрачного прокси(transparent) не работает с https трафиком — на то он и зашифрованный. К сожалению многие крупнейшие соц сети перешли на https (twitter, facebook, youtube — Российские пока не перешли). Есть способ читать и блокировать https tрафик http://habrahabr.ru/post/168515/ — но он не работает в режиме транспарент — надо на каждом ПК в каждой программе настраивать прокси сервер, и он не работает со всеми программами и устройствами.
И самое свинство когда в https начинает прятаться реклама. Но есть один 100% зверский способ заблокировать то что в https подпортив свой DNS сервер!
Если у вас DNS сервер как этот (ну у мен сейчас такой)
на сервере делаем, вводя пароль администратора домена, блокируем два мусорных URLа doubleclick.net 2mdn.net
samba-tool dns zonecreate SAMBA.ITCOOKY_VPS doubleclick.net
samba-tool dns add SAMBA.ITCOOKY_VPS doubleclick.net @ A 127.0.0.1
samba-tool dns add SAMBA.ITCOOKY_VPS doubleclick.net net A 127.0.0.1
samba-tool dns zonecreate SAMBA.ITCOOKY_VPS 2mdn.net
samba-tool dns add SAMBA.ITCOOKY_VPS 2mdn.net @ A 127.0.0.1
samba-tool dns add SAMBA.ITCOOKY_VPS 2mdn.net net A 127.0.0.1
И надо перезагрузить сервер — другого способа перегрузить SAMBA internel DNS я пока не нашел.
В результате реклама блокируется на её месте выдает сообщение об ошибки, потому что браузер не может получит IP от DNS который мы испортили залупленными записями!
[…] pages starts to load faster and the information is perceived better! In old times, I configured Squid and SAMS , but this protection worked at the router level and could not block everything. And Pi-hole works […]
[…] páginas se cargan más rápido y la información se percibe mejor! En la antigüedad, configuré Squid y SAMS , pero esta protección funcionaba en el nivel del enrutador y no podía bloquear todo. ¡Y Pi-hole […]