Есть роутер (выполняющий также роль MTA) под дебианом, на котором поднято 20+ подсетей (структура организации большая, наследие одного из бывших провайдеров, планируем переход на более простую схему). Знаю что софта, умеющего считать трафик вагон, но хотелось бы обойтись чем-то легким и изящным - вроде связки iptables + mysql + скрипт, который пишет в базу + простенький скрипт на пыхе, который красиво все показывает. Пытаюсь сделать что-то наподобие вот такого, только вот выхлоп iptables -Lvnx показывает трафик по подсетям, нужна конкретизация по ip (и желательно еще по mac).
P.S. Если из легкого - стоит может использовать ulogd + ulogd-mysql?
Собственно вся прелесть подсети:
# route -n | grep vlan
10.0.0.0 10.0.0.1 255.255.0.0 UG 0 0 0 vlan10
10.0.0.0 0.0.0.0 255.255.0.0 U 0 0 0 vlan10
10.1.0.0 10.1.0.1 255.255.0.0 UG 0 0 0 vlan11
10.1.0.0 0.0.0.0 255.255.0.0 U 0 0 0 vlan11
10.2.0.0 10.2.0.1 255.255.0.0 UG 0 0 0 vlan12
10.2.0.0 0.0.0.0 255.255.0.0 U 0 0 0 vlan12
10.14.124.0 10.14.127.254 255.255.252.0 UG 0 0 0 vlan1160
10.14.124.0 0.0.0.0 255.255.252.0 U 0 0 0 vlan1160
10.106.0.0 10.106.0.1 255.255.255.0 UG 0 0 0 vlan374
10.106.0.0 0.0.0.0 255.255.255.0 U 0 0 0 vlan374
10.106.1.0 10.106.1.1 255.255.255.224 UG 0 0 0 vlan354
10.106.1.0 0.0.0.0 255.255.255.224 U 0 0 0 vlan354
10.106.1.64 10.106.1.65 255.255.255.192 UG 0 0 0 vlan368
10.106.1.64 0.0.0.0 255.255.255.192 U 0 0 0 vlan368
10.106.1.128 10.106.1.129 255.255.255.192 UG 0 0 0 vlan365
10.106.1.128 0.0.0.0 255.255.255.192 U 0 0 0 vlan365
10.106.2.64 10.106.2.65 255.255.255.224 UG 0 0 0 vlan358
10.106.2.64 0.0.0.0 255.255.255.224 U 0 0 0 vlan358
10.106.2.128 10.106.2.129 255.255.255.128 UG 0 0 0 vlan363
10.106.2.128 0.0.0.0 255.255.255.128 U 0 0 0 vlan363
10.106.3.0 10.106.3.1 255.255.255.0 UG 0 0 0 vlan359
10.106.3.0 0.0.0.0 255.255.255.0 U 0 0 0 vlan359
10.106.5.64 10.106.5.65 255.255.255.224 UG 0 0 0 vlan373
10.106.5.64 0.0.0.0 255.255.255.224 U 0 0 0 vlan373
10.106.5.96 10.106.5.97 255.255.255.224 UG 0 0 0 vlan361
10.106.5.96 0.0.0.0 255.255.255.224 U 0 0 0 vlan361
10.106.7.0 10.106.7.1 255.255.255.128 UG 0 0 0 vlan369
10.106.7.0 0.0.0.0 255.255.255.128 U 0 0 0 vlan369
10.106.7.128 10.106.7.129 255.255.255.128 UG 0 0 0 vlan367
10.106.7.128 0.0.0.0 255.255.255.128 U 0 0 0 vlan367
10.106.8.0 10.106.8.1 255.255.255.128 UG 0 0 0 vlan352
10.106.8.0 0.0.0.0 255.255.255.128 U 0 0 0 vlan352
10.106.8.128 10.106.8.129 255.255.255.128 UG 0 0 0 vlan353
10.106.8.128 0.0.0.0 255.255.255.128 U 0 0 0 vlan353
10.106.9.0 10.106.9.1 255.255.255.128 UG 0 0 0 vlan356
10.106.9.0 0.0.0.0 255.255.255.128 U 0 0 0 vlan356
10.106.9.128 10.106.9.129 255.255.255.128 UG 0 0 0 vlan357
10.106.9.128 0.0.0.0 255.255.255.128 U 0 0 0 vlan357
10.106.13.0 10.106.13.1 255.255.255.128 UG 0 0 0 vlan362
10.106.13.0 0.0.0.0 255.255.255.128 U 0 0 0 vlan362
10.106.13.128 10.106.13.129 255.255.255.128 UG 0 0 0 vlan366
10.106.13.128 0.0.0.0 255.255.255.128 U 0 0 0 vlan366
10.106.14.0 10.106.14.1 255.255.255.128 UG 0 0 0 vlan360
10.106.14.0 0.0.0.0 255.255.255.128 U 0 0 0 vlan360
10.106.14.128 10.106.14.129 255.255.255.192 UG 0 0 0 vlan350
10.106.14.128 0.0.0.0 255.255.255.192 U 0 0 0 vlan350
192.168.1.0 192.168.1.1 255.255.255.0 UG 0 0 0 vlan802
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 vlan802
Правила для iptables просты:
iptables -I INPUT 1 -i vlanX -j ACCEPT
iptables -A FORWARD -i vlanX -s NET/NETMASK -j ACCEPT
iptables -A FORWARD -i eth0 -d NET/NETMASK -j ACCEPT
И в конце маскарадинг.
Решение: т.к. трафик идет немаленький, прикручиваем ipt_netflow вот таким способом, почитав также это
Затем:
mkdir /var/log/netflow
nfcapd -l /var/log/netflow/ -t <время в секундах> -D -p <порт>
Читаем логи:
nfdump -r /var/log/netflow/<имя_файла> | less
Отдельное спасибо AS
P.S. Если запилю скрипт для записи в БД и чтения с нее - выложу сюда.