Squid ograničenje : Bandwidth quotas
Homepage ovog programa je link.
Ovaj program zbilja i radi, zabranjuje protok korisniku koji je prešao za njega definisanu kvotu.
Instalacija :
Spustiti program i razviti ga na zgodnoj lokaciji.
# mysql -u root -pxxx
mysql> CREATE DATABASE squidaccess;
mysql> GRANT ALL PRIVILEGES ON squidaccess.* TO squidauth@localhost IDENTIFIED BY ‘squidaccess’;
mysq> quit
Posle ovoga se formira imenovana baza :
# mysql -u root -pxxxx -h localhost squidaccess < squidaccess.sql
Fajl bandwidth_calculate staviti u /usr/local/bin/ folder, i prepraviti ga prema stanju na serveru :
…..
my $log_path = “/var/log/squid”;
my $log_file = “access.log”;
…..
my $mysql_host = ‘localhost’;
my $mysql_user = ‘squidaccess’;
my $mysql_pass = ‘squidaccess’;
my $mysql_db = ‘squidaccess’;
Fajl bandwidth_check staviti u folder /usr/local/bin/ i takođe prepraviti prema stanju na serveru :
## MySQL info
my $mysql_host = ‘localhost’;
my $mysql_user = ‘squidaccess’;
my $mysql_pass = ‘squidaccess’;
my $mysql_db = ‘squidaccess’;
Prepraviti fajl /etc/squid/squid.conf, ubacivanjem linija :
….. staviti PRE sopstvenih ACL lista
external_acl_type bandwidth_check ttl=60 %SRC /usr/local/bin/bandwidth_check
acl bandwidth_auth external bandwidth_check
….. “nasi” je ranije definisana naša lokalna mreža
http_access deny nasi !bandwidth_auth
Napraviti fajl /etc/squid/bandwidth_rules :
IP kriterijum1
IP kriterijum2
IP adresa može biti i cela mreža, ili opseg IP adresa.
Tabela 1
Abbreviations Meaning Example
b Plain bytes 268435456000b/w (250 mb or 268435456000 b a week)
kb Kilobytes 4096kb/d (4096 kilobytes per day)
mb Megabytes 500mb/w (500 megabytes per week)
gb Gigabytes 10gb/m (10 gigabytes per month)
Tabela 2
Abbreviations Meaning Example
d or day Per day 40mb/d (50 megabytes a day)
w or week Per week 3gb/w (3 gigabytes a week)
m or month Per month 100gb/m (100 gigabytes a month)
y or year Per year 1024gb/y (1024 gigabytes or 1 terabyte a year)
Testiranje
Proveriti da nema nikakvih grešaka u konfiguracijama :
# /usr/local/bin/bandwidth_calculate /etc/squid/bandwidth_rules
Proveriti na pojedinačnim IP adresama :
# /usr/local/bin/bandwidth_check
10.10.10.140 ova IP adresa nije prekoračila postavljeno ograničenje
OK
10.10.10.142 ova IP adresa jeste prekoračila postavljeno ograničenje
ERR
^C
Zabranjene IP adrese (koje su prekoračile limit) se mogu videti u squidaccess bazi :
mysql> use squidaccess;
Database changed
mysql> show tables;
+———————–+
| Tables_in_squidaccess |
+———————–+
| bandwidth_blocks |
| bandwidth_blocks_old |
| bandwidth_save |
| bandwidth_usage |
+———————–+
mysql> select * from bandwidth_blocks;
+——-+————–+
| order | name |
+——-+————–+
| 0 | 10.10.10.142 |
+——-+————–+
Posle ovoga staviti u cron da programčić svakih 5min sakuplja podatke o IP adresama i o tome koliko su “potrošili” :
# crontab -e
*/5 * * * * /usr/local/bin/bandwidth_calculate /etc/squid/bandwidth_rules
Restartovati squid, da bi se promene “primile”!
Pažnja!!!! Ako se neka IP adresa/opseg već nalazi definisana u squid.conf, ograničenja na nju neće delovati….