Date: Thu, 21 Jun 2001 13:22:29 +0000 (UTC)
From: Stepan Koltsov <yozh@niit.ru>
Newsgroups: fido7.ru.unix.bsd
Subject: FAQ по считанию траффика на FreeBSD
Hi, All.
Предлагаю вашему вниманию Часто Задаваемый Вопрос по считанию траффика под
FreeBSD. Пожелания, предложения, комментарии, поправки, дополнения и т. п.
приветствуются.
version 0.0.1
Q: Как считать траффик под FreeBSD?
A: Есть несколько способов. Далее они кратко описываются.
1) Используя ipfw count.
Кто-то (либо руками) генерирует кучу правил типа
ipfw add 100 count ip from any to ${local_ip_1} in
условие in желательно, поскольку без него траффик будет считаться 2 раза.
Потом пишутся скрипты, которые это все обсчитывают, либо берутся готовые,
например (по слухам) IPA.
Если вместо count использовать правило skipto, то правила писать проще.
См. также ipfw(1)
2) Используя trafd.
Оно использует bpf для считания траффика, умеет работать в promisc mode,
поэтому подходит для считания траффика не проходящего непосредственно
через компутер.
Пишет логи, похожие на логи от ipacctd.
См. также bpf(4), исходники trafd ;)
3) используя ipacctd (мой любимый).
ipacctd слушает на каком-нибудь порту. Весь траффик надо туда либо дивертить
(divert), либо тиить (tee). При это firewall конфигурирутется приблизительно
так:
ipfw add allow tcp from any to ${host} 22
ipfw add allow tcp ${host} 22 to any
# Это надо, чтобы можно было починить когда что-то сломается.
ipfw add divert ${ipacctd_port} any from any to any
divert надо использовать тогда, когда считание траффика -- первоочередная
задача, поскольку если ipacctd не запущен, инет на работает, в противном
случае -- tee.
ipacctd умеет отдавать логи в формате
src-ip dst-ip bytes packets [time]
либо
src-ip src-port dst-ip dst-port proto bytes packets [time]