Работа
-Организация сети Catalyst + (ASA + Squid по WCCP)
Появилась задача: учет, анализ и контроль интернет трафика 880 машин, и всё что висит на Wifi ...
В наличии:
1) Cisco ASA
2) 4 Cisco Catalyst
3) Cisco Wireless
4) HP Server с Hyper-V
Алгоритм такой: 3 Catalyst'а и Cisco Wireless подключается к главному Catalyst'у он шлюз, всё разделяются по VLAN, далее выход в интернет заворачивается на Cisco ASA. Для контроля доступа всех пользователей решил создать на сервере виртуальную машину, из операционных систем выбрал любимую CentOS.
Получилась связка Squid + Squidguard + lightsquid + sqstats + немного коддинга. Соединить Squid и ASA получится только через WCCP, так и решил поступить...
1) Настройка ASA:
Cisco ASA имеет адрес 10.10.88.1, CentOS – 10.10.10.222.
Создал 2 группы, в первой adminstrators_pc указал админский IP, который не будет ходить через прокси, во воторой всю сеть которую покрываем прозрачным прокси сервером.
object network adminstrators_pc host 10.10.10.111
object network local_network subnet 10.10.0.0 255.255.0.0
Правила, какой группе что разрешам:
access-list redirect_to_squid extended deny tcp object adminstrators_pc any eq www
access-list redirect_to_squid extended permit tcp object local_network any eq www
Активация WCCP:
wccp web-cache redirect-list redirect_to_squid password serjkz (Пароль нужен чтобы соединится со сквидом)
wccp interface inside web-cache redirect in
2) Настройка SQUID:
http_port 3128 transparent // Порт прокси
wccp2_router 10.10.88.1 //адрес ASA
wccp2_forwarding_method 1
wccp2_return_method 1
wccp2_service standard 0 password=serjkz
3) Настройка CentOS:
Далее на CeontOS создаём gre туннель:
ip tunnel add wccp0 mode gre remote 89.XXX.XXX.XXX local 10.10.10.222 dev eth1 (89.XXX.XXX.XXX - внешний IP ASA, eth1 - название интерфейса)
ifconfig wccp0 10.10.10.222 netmask 255.255.255.255 up
Заворачиваем весь трафик поступающий по WCCP в прокси сервер:
iptables -t nat -A PREROUTING -i wccp0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.10.10.222:3128
Дебаг проверки:
Далее в Squid уже разделяю подсети, ставлю пулами ограничения на максимальную скорость скачивания:
delay_access 1 allow speedclients
delay_access 1 deny all
delay_access 2 allow badspeedclients
delay_access 2 deny all
delay_parameters 1 -1/-1 -1/-1
delay_parameters 2 -1/-1 320000/320000
3) Настройка Squidguard:
dest block_regexp_video {
expressionlist default/block_regexp_video/expressions
redirect http://sec.akb.nis.edu.kz/page-error/block.mp4
}
(.*/([^/]+).mp4.*)
(.*/([^/]+).flv.*)
(.*/([^/]+).avi.*)
(.*/([^/]+).wmv.*)
(.*/([^/]+).mpeg.*)
(.*/([^/]+).mkv.*)
Для блокировки рекламы составил регулярки типа:
(^([0-9A-z-.]+.)?am([0-9]+).(ru|net|com).*)... блочить всё одним пикселем.
Получается что-то вроде этого:
Для сбора статистики использую Lightsquid немного изменённый мной:
Далее, для просмотра онлайн скачиваний использую sqstats (пришлось немного переписывать для разделения сетей):
Незначительная нагрузка: