Исходные данные
Несколько vlan на сisco catalyst 3560G. В качестве примера будут использоваться vlan 10,20 и 30
Сервер на FreeBSD с работающим trafd и сетевым интерфейсом “смотрящим” в cisco catalyst 3560G
Задача
Получить статистику по трафику для каждого из вланов по отдельности.
Вариант решения
1. Настройка зеркалирования трафика на 3560.
Предполагаем, что интерфейс сервера соединён с портом Gi0/1 на 3560.
Настраиваем порт:c3560# conf t c3560(config)# interface GigabitEthernet0/1 c3560(config-if)# description mirror_server c3560(config-if)# switchport trunk encapsulation dot1q c3560(config-if)# switchport trunk allowed vlan 10,20,30 c3560(config-if)# switchport mode trunk c3560(config-if)# exit c3560(config)# exit c3560# wri Создаём сессию span:c3560# conf t c3560(config)#monitor session 2 source vlan 10 , 20 , 30 both c3560(config)#monitor session 2 destination interface Gi0/1 encapsulation dot1q c3560(config)# exit c3560# wri
На вторую команду коммутатор может сказать что-то похожее
% Warning: One or more specified dest port does not support requested encapsulation.
Однако порт нормально добавляется в сессиюc3560# sho monitor session 2
Session 2
---------
Type : Local Session
Source VLANs :
Both : 10,20,30
Destination Ports : Gi0/11
Encapsulation : DOT1Q
Ingress : Disabled
2. Настройка интерфейсов сервера и trafd Предполагаем, что на сервере для получения зеркалируемого трафика используется интерфейс bge1 .
Создаём vlan’ы на интерфейсе bge1:
/sbin/ifconfig bge1 up /sbin/ifconfig vlan10 create vlan 10 vlandev bge1 /sbin/ifconfig vlan10 up promisc /sbin/ifconfig vlan20 create vlan 20 vlandev bge1 /sbin/ifconfig vlan20 up promisc /sbin/ifconfig vlan30 create vlan 30 vlandev bge1 /sbin/ifconfig vlan30 up promisc /sbin/ifconfig bge1 -promisc
Устанавливаем trafd:
cd /usr/ports/net-mgmt/trafd make install clean
После установки смотрим, что он установился:
/usr/sbin/pkg_info | grep trafd trafd-3.0.1_2 The BPF Traffic Collector
Описываем trafd в /etc/rc.conf (параметры будут использоваться стартовым скриптом /usr/local/etc/rc.d/trafd.sh.sample ):
trafd_enable=”YES” trafd_ifaces=”vlan10 vlan20 vlan30″ trafd_flags=”-r -p”
Стартуем trafd :/usr/local/etc/rc.d/trafd.sh.sample start
И наблюдаем запущенные процессы:
/bin/ps -ax | grep trafd
93173 ?? Ss 0:04.28 /usr/local/bin/trafd -i vlan10 -r -p
93175 ?? Ss 0:12.64 /usr/local/bin/trafd -i vlan20 -r -p
93177 ?? Ss 2:05.00 /usr/local/bin/trafd -i vlan30 -r -p
Добавляем в планировщик (/etc/crontab ) периодический сброс накопленной trafd информации:
*/10 * * * * root /usr/local/bin/trafdump vlan10; sleep 2; /usr/local/bin/trafsave vlan10 */10 * * * * root /usr/local/bin/trafdump vlan20; sleep 2; /usr/local/bin/trafsave vlan20 */10 * * * * root /usr/local/bin/trafdump vlan30; sleep 2; /usr/local/bin/trafsave vlan30
Логи будут сохраняться в директории /usr/local/var/trafd как отдельные файлы вида trafd.vlan10 , trafd.vlan20 , trafd.vlan30 в бинарном формате. Каждые 10 минут будет происходить дописывание вновь сбрасываемого трафика в эти файлы, т.е. append. Файл с историей дампа трафика по умолчанию: /var/log/traffic.log
Если сервер не является шлюзом, во избежание закольцовывания трафика и появления duplicate пакетов лучше отключить форвардинг:
/sbin/sysctl net.inet.ip.forwarding=0 net.inet.ip.forwarding: 1 -> 0
а также терминировать полученные зеркалированные пакеты на сервере, запретив их хождение через вланы каким-либо файрволлом, например ipfw (правила лучше разместить где-нибудь вначале):
/sbin/ipfw add 10 deny ip from any to any via vlan10 /sbin/ipfw add 20 deny ip from any to any via vlan20 /sbin/ipfw add 30 deny ip from any to any via vlan30