Алексей Плутахин написал статью (http://www.iplab-nnz.ru/blog/index.php?op=ViewArticle&articl...) в которой привел
способы соединения нод netgraph для учета трафика на бридже и на таких интерфейсах как gif и tun.URL: http://www.iplab-nnz.ru/blog/index.php?op=ViewArticle&articl...
Новость: http://www.opennet.me/opennews/art.shtml?num=7330
Спасибо, как раз недавно думал, как траффик с tun через netgraph считать...
Буквально недавно меня посетила мысль написать нечто похожее :)
http://wiki.bsdportal.ru/doc:netgraph_ng_nat
Увы, но этот сайт больше недоступен. А жаль, хорошая была статья! Можно её куда-нибудь перевыложить?
забавно - только что для этого поднял интерфейс из /usr/share/examples/netgraph/udp.tunnel :))
но правда у меня специфика - траффик по безпроводному каналу идет и желательно шифровать.
>В приведенном примере две ноды типа ksocket отправляют в ng_ipacct данные, >попадающие в соответствующие сокеты 0.0.0.0:3021 и 0.0.0.0:3022. В эти сокеты >трафик направляется правилами файервола:
>
>
>
>ipfw add 64021 tee 3021 ip from any to room101 via ${IFACE}
>ipfw add 64022 tee 3022 ip from room101 to any via ${IFACE}
>
>
>При этом следует учитывать, что все запрещающие правила, должны предшествовать >правилам tee, т.к. прохождение сетевых пакетов по ipfw заканчивается на этих >правилах, и пакеты считаются принятыми.Или я не правильно понимаю, или тут полноценно учесть траффик на этих интерефейсах не получиться - пакет может быть отброшен прежде, чем попытается пройти через счетчик, но даже он, отброшеный должен быть учтен. Правда это в условиях, конечно, когда выставляются счета за траффик.
Стоит if_bridge, делаю вот по такой схеме:
-------------------------------------------------
/sbin/kldload ng_ipacct > /dev/null 2>&1
/sbin/kldload ng_ipfw > /dev/null 2>&1ngctl -f- <<-SEQ
mkpeer ipfw: ipacct 333 rl0_in
name ipfw:333 rl0_ip_acct
connect ipfw: rl0_ip_acct: 444 rl0_outSEQ
ipfw add 100 ngtee 333 ip from any to any via ${if_ext} in
ipfw add 200 ngtee 444 ip from any to any via ${if_ext} out
---------------------------------------------------все работает, но входящий трафик почему-то считается дважды. В чем может быть дело?
Мне кажется автор немного неверно интерпретировал логику работы нод ether и tee. Достаточно снимать данные с хука left2right. в right2left - копия (движение пакетов с верхних уровней в нижние в любом направлении).