Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: ng_ipacct   Eugene Grosbein   03 Sep 2006 18:07:43 
 Re: ng_ipacct   Eugene Grosbein   03 Sep 2006 18:16:49 
Архивное /ru.unix.bsd/26093abea08b0.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional