Исходные данные
- Несколько 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
З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !