Вступление.
Меня очень запарило то что юзера ходят на вконтаке.ру и слушают там музыку. Канал у меня 256К, а музыка идёт потоком 128К, естественно, что как 2 юзера начнут слушать у меня забивается внешний канал.
С чего я начал.
Первое что я сделал это поднял прокси-сервер на безе своего шлюза с Линухом на борту. В качестве прокси я использую популярный squid. Детали сборки скуида я обсуждать не буду - и так уже в рунете это разобрано по косточкам. приступим к настройке:
#обзываю локальную есть:
acl to_localhost dst 192.168.0.0/8
#метод коннект
acl CONNECT method CONNECT
#говорим на каком порту сидим
http_port 192.168.1.1:8080
#параметры кеша
cache_dir ufs /var/spool/squid 10 16 256
#логи
logformat squid %tl.%03tu %6tr %>a %Ss/%03Hs %
%
var/log/squid/access.log squid
#директория с ХТМЛ-ками об ошибках
error_directory /usr/share/squid/errors/English
#обзываем сети (первая - юзера, вторая - интерфейсы моего компа, ну самому то мне можно будет везде лазить :-))) )
acl UsersNet src 192.168.0.0/16
acl AllowAllUsers src 192.168.1.17 192.168.254.3 192.168.1.18
#обзываем то что собираемся запрещать))
acl socnet dstdomain -i vkontakte.ru odnoklassniki.ru odnoklasniki.ru
acl dlyamudakov url_regex -i vkontakt vkontact vcontact vcontakt odnoklassniki odnoklasniki
acl deny_rus url_regex -i "/etc/squid/rus_deny"
acl porno url_regex -i porn sex xxx
#обзываем "ВСЁ"
acl allnet dst 0.0.0.0/0
#разрешаем себе всё
http_access allow AllowAllUsers allnet
#остальным запрещаем "лишнее"
http_access deny UsersNet socnet
deny_info ERR_ACCESS_DENIED socnet
http_access deny UsersNet deny_rus
http_access deny UsersNet dlyamudakov
deny_info ERR_ACCESS_DENIED dlyamudakov
http_access deny UsersNet porno
deny_info ERR_ACCESS_DENIED porno
#всё остальное типа можно
http_access allow UsersNet all
А теперь немного хитрости.
Включим соображалку. Куда полезет юзер увидев что на его любимый сайт не заути? конечно в гугл или яндекс! там тема "админ запретил вконтаке" очень популярна, так поборим это накорню: у нас в конфиге есть строчки:
acl dlyamudakov url_regex -i vkontakt vkontact vcontact vcontakt odnoklassniki odnoklasniki
acl deny_rus url_regex -i "/etc/squid/rus_deny"
вот они имнно для предотвращения таких запросов, запросы в поисковых системах это ведь метод GET, а фактически это URL. Так вот в раздела dlyamudakov мы закрываем доступ по английским словам, а в файле /etc/squid/rus_deny мы держим слова связанные с одноклассниками,вконтакте и порнухой в куче разных кодировок (в этом помог iconv).
вот так мы побороли (очень на это надеюсь) сайт вконтакте
З.Ы. и не забываем закрыть 80ый порт на выход)))
и еще, у меня политика пропускания трафика "от запрета", т.е. нельзя "всё, кроме.." - а порты 8080, 8000 и т.п. проксевые порты никто во вне никогда не откроет, а значит и внешнюю проксю никто не пропишет)))))))
УРА ТОВАРИЩИ!