Пришёл к такому входу, любые идеи и дополнен приветствуются...
1. Считаем NAT трафик как и водится по цепочке FORWARD, в таблице mangle, которая специально для эого предназначена:
Код: Выделить всё
iptables -t mangle -I FORWARD -j ULOG --ulog-nlgroup 10
2. Считаем через pcap в ipcad по внутреннему интерфейсу, исключая входящие SYN пакеты (чтобы не снимался баланс, когда и-нет у юзера отключён), исходящий траф счиаем весь, включая SYN:
Код: Выделить всё
interface eth0 filter "((ip and src net [внутренняя сеть] and dst port 80 or 81 or 8080 or 8081 or 8181 and (tcp[tcpflags] & tcp-syn = 0)) or (ip and dst net [внутренняя сеть] and src port 80 or 81 or 8080 or 8081 or 8181))";
3. добавляем правило ULOG, считающее наши SYN пакеты при включённом и-нете юзера (чтобы как в оптеке было);
оно должно быть перед правилом редиректа:
Этой меткойiptables -t nat -I PREROUTING -p tcp -s [внутренняя сеть] -m mark --mark 1 --syn -j ULOG --ulog-nlgroup 10
Код: Выделить всё
-m mark --mark 1
у меня метятся нужные пакеты правилом на каждго юзера, включающего и-нет вот таким правилом:
Код: Выделить всё
iptables -A PREROUTING -s UIP -d ! [внутренняя сеть] -p tcp -m multiport --dports 80,81,8080,8081,8181 -j MARK --set-mark 1
4. Ну и конечно включаем в ipcad сам сбор по ULOG:
Код: Выделить всё
interface ulog group 10;
Любые дополнения и идеи буду рад услышать...
P.S. единственное, что пока не смог сделать - это период агрегации 1 секунда в ipcad, если кто знает как это делать без правки исходников - просветите...