Подсчет трафика с помощью 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. ))
