Подсчет трафика с помощью pf
Автор: fr33man
Оригинал: http://www.lissyara.su/articles/freebsd/traffic_count/pfctl/
Решил считать трафик на внешнем интерфейсе. Сначала хотел считать с помощью trafd, но подумал, что лишняя программа в памяти не есть гуд. Второй моей мыслью был snmp, но нагружать машинку еще и snmp запросами я не решился. И тут я вспомнил, что это роутер, на котором стоит packet filter. Считать решил именно pf.
Итак, приступим. Я предполагаю, что pf у Вас уже настроен и работает. Добавляем в pf.conf следующую строку:
set loginterface ng0
Теперь проверяем работоспособность конфига:
shield@/usr/ports/net> pfctl -nf /etc/pf.conf
shield@/usr/ports/net>
И подгружаем правила:
shield@/usr/ports/net> pfctl -f /etc/pf.conf
shield@/usr/ports/net>
Вот и все. Давайте посмотрим, сколько трафика набежало:
shield@/usr/ports/net> pfctl -s info
Status: Enabled for 1 days 23:43:24 Debug: Urgent
Hostid: 0x153793d2
Interface Stats for ng0 IPv4 IPv6
Bytes In 41872728 0
Bytes Out 90656050 0
Packets In
Passed 547083 0
Blocked 29 0
Packets Out
Passed 556623 0
Blocked 2 0
State Table Total Rate
current entries 4
searches 6146672 35.8/s
inserts 3730 0.0/s
removals 3726 0.0/s
Counters
match 3946799 23.0/s
bad-offset 0 0.0/s
fragment 0 0.0/s
short 0 0.0/s
normalize 0 0.0/s
memory 0 0.0/s
bad-timestamp 0 0.0/s
congestion 0 0.0/s
ip-option 0 0.0/s
proto-cksum 0 0.0/s
state-mismatch 0 0.0/s
state-insert 0 0.0/s
state-limit 0 0.0/s
src-limit 0 0.0/s
synproxy 0 0.0/s
shield@/usr/ports/net>
В самом верху видно, сколько байт принято и сколько отправлено.
Могу только добавить, чтобы очистить счетчик можно воспользоваться командой pfctl:
shield@/usr/ports/net> pfctl -F info
pf: statistics cleared
shield@/usr/ports/net>
Я не стал писать полный конфиг pf, так как я сейчас пишу статью про Policy Based Routing и pf. ))