|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Eugene Grosbein 2:5006/1 03 Sep 2006 18:07:43 To : Dmitry Dolzenko Subject : Re: ng_ipacct -------------------------------------------------------------------------------- 30 авг 2006, среда, в 13:09 KRAST, Dmitry Dolzenko написал(а): AS>> А не проще ли передавать пакет с в nethraph помощью ipfw ngtee ? Или на AS>> этой AS>> машине не установлена шестёрка ? >> 4.11-STABLE. Hо за напоминание о ng_ipfw спасибо. DD> А ты мог бы по завершинии своих исследований написать HOWTO DD> как сделать ip accounting через netgraph? Вот рецепт, который работает на 4.11 и выше, конструкция получается практически один в один с ipacctd, можно использовать те же правила ipfw divert для заворачивания трафика на считающую софтинку. Единственное отличие - для съема разультатов обсчета использовать скрипт такого типа: ipacctctl ipfw_ip_acct:ipfw checkpoint ipacctctl ipfw_ip_acct:ipfw show ipacctctl ipfw_ip_acct:ipfw clear Ставим ng_ipacct из портов и в /usr/local/etc/ng_ipaccf.conf пишем: ng_ipacct_modules_list="netgraph ng_echo ng_ksocket ng_tee ng_ipacct" ng_ipacct_interfaces="ipfw" # EXAMPLE 5. Really _divert_ traffic to ng_ksocket # ipfw add divert 4001 ip from any to any via em0 in # ipfw add divert 4002 ip from any to any via em0 out # USER-LEVEL | KERNEL-LEVEL # | # div4 *.4001 ->|-> ipfw_ks_in in-(ipfw_echo_in) # | | | # | (inet/raw/divert)---(left)-(ipfw_tee_in)-right # | | # | left2right---(ipfw_in) # | | # | ipfw_ip_acct # | | # | left2right---(ipfw_out) # | | # | (inet/raw/divert)---(left)-(ipfw_tee_out)-right # | | | # div4 *.4002 ->|-> ipfw_ks_out # div4 *.4002 ->out-(ipfw_echo_out) # # ipfw_ks_in - ng_ksocket # ipfw_ks_out - ng_ksocket # ipfw_tee_in - ng_tee # ipfw_tee_out - ng_tee # ipfw_ip_acct - ng_ipacct # ipfw_echo_in - ng_echo # ipfw_echo_out - ng_echo ng_ipacct_ipfw_dlt="RAW" ng_ipacct_ipfw_start=' mkpeer ipacct dummy dummy name .:dummy %%iface%%_ip_acct mkpeer %%iface%%_ip_acct: tee %%iface%%_in left2right name %%iface%%_ip_acct:%%iface%%_in %%iface%%_tee_in mkpeer %%iface%%_ip_acct: tee %%iface%%_out left2right name %%iface%%_ip_acct:%%iface%%_out %%iface%%_tee_out mkpeer %%iface%%_tee_in: echo right in name %%iface%%_tee_in:right %%iface%%_echo_in mkpeer %%iface%%_tee_out: echo right out name %%iface%%_tee_out:right %%iface%%_echo_out mkpeer %%iface%%_tee_in: ksocket left inet/raw/divert name %%iface%%_tee_in:left %%iface%%_ks_in msg %%iface%%_ks_in: bind inet/0.0.0.0:4001 mkpeer %%iface%%_tee_out: ksocket left inet/raw/divert name %%iface%%_tee_out:left %%iface%%_ks_out msg %%iface%%_ks_out: bind inet/0.0.0.0:4002 rmhook .:dummy ' ng_ipacct_ipfw_stop=' shutdown %%iface%%_ks_in: shutdown %%iface%%_ks_out: shutdown %%iface%%_tee_in: shutdown %%iface%%_tee_out: ' ng_ipacct_ipfw_threshold="15000" # '5000' by default ng_ipacct_ipfw_verbose="no" # 'yes' by default ng_ipacct_ipfw_saveuid="no" # 'no' by default ng_ipacct_ipfw_savetime="no" # 'no' by default ng_ipacct_ipfw_checkpoint_script="/usr/local/adm/showngipacct ipfw" Скрипт /usr/local/adm/showngipacct должен, используя указанные выше три команды ipacctctl, куда-нибудь сохранять вывод команды show. Его же (или команду /usr/local/etc/rc.d/ng_ipacct.sh checkpoint) нужно вызывать периодически для сброса накопленных данных и предотвращения переполнения памяти в ng_ipacct. Командами ipfw divert 4001 организуется обсчет входящего трафика, ipfw divert 4002 для исходящего. Если нужно считать только одно направление, можно ненужный трафик и не дивертить. Это как раз то, что мне надо было. Всем спасибо за советы. Eugene -- А ученый уподобляется обученному слону, которого погонщик поставил перед преградой. Он пользуется силой разума, как слон --- силой мышц, подчиняясь приказу. Это необычайно удобно: ученый отныне готов на все, так как ни за что уже не отвечает. --- slrn/0.9.8.0 (FreeBSD) * Origin: Svyaz Service JSC (2:5006/1@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/26093abea08b0.html, оценка из 5, голосов 10
|