Страница 1 из 2
					
				Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-07-18 12:15:01
				 igyrus
				Доброго всем времени суток.
Помогите разобраться с сабжем.
Нашел в инете такую подсказку (
http://www.opennet.ru/openforum/vsluhfo ... 120.html#7):
sudo ipfw l 
00045 tee 3021 ip from any to any out xmit gif* 
00047 tee 3022 ip from any to any out xmit tun* 
При необходимости можно разбирать на in/out, хотя мне проще скриптами. 
Вешаем сокеты на прослушку (версия ng_ipacct должна быть позже 2002-02-28 для поддержки комманды dlt) 
#!/bin/sh 
. /etc/rc.conf 
IFACE=div0 
nodename=${IFACE}_ip_acct 
socketname=${IFACE}_sock 
hookprefix=$IFACE 
/usr/sbin/ngctl -f- <<-SEQ 
### dummy hook, to create a node 
mkpeer ipacct ctl ctl 
name .:ctl ${nodename} 
### "incoming" hook 
mkpeer ${nodename}: ksocket ${hookprefix}_in inet/raw/divert 
name ${nodename}:${hookprefix}_in ${socketname}_in 
msg ${socketname}_in: bind inet/0.0.0.0:3021 
### "outgoing" hook 
mkpeer ${nodename}: ksocket ${hookprefix}_out inet/raw/divert 
name ${nodename}:${hookprefix}_out ${socketname}_out 
msg ${socketname}_out: bind inet/0.0.0.0:3022 
rmhook .:ctl 
SEQ 
/usr/local/sbin/ipacctctl ${nodename}:${hookprefix} dlt RAW 
/usr/local/sbin/ipacctctl ${nodename}:${hookprefix} v  ${VERBOSE} 
/usr/local/sbin/ipacctctl ${nodename}:${hookprefix} th  ${THRESHOLD}
Сделал скрипт, запустил. Появились три node:
Код: Выделить всё
# ngctl list
Name: div0_sock_out   Type: ksocket         ID: 0000007f   Num hooks: 1
Name: div0_sock_in    Type: ksocket         ID: 0000007e   Num hooks: 1
Name: div0_ip_acct    Type: ipacct          ID: 0000007d   Num hooks: 2
Добавил правила в ipfw. Но на них ничего не оседает. И не понял, что такое интерфейс gif* и почему всё "out xmit"?
В скрипте-примере "divert_node.sh", прилогаемому к  ng-ipacct правила выглядят по другому:
Код: Выделить всё
IFACE="xl0"
...
### packets reaching tee are _accepted_,
### so use theese rules _AFTER_ all deny rules
ipfw add 64021 tee 3021 ip from any to room101 via ${IFACE}
ipfw add 64022 tee 3022 ip from room101 to any via ${IFACE}
Судя по номерам строк они стоят перед последним запрещающим правилом. Т.е. попасть на них может только пакет неудовлетворяющий ни одному правилу и идущий на запрет.  
 
 
Я же вставил после "... divert natd ...", но до правил, разрешающих пакеты из/в сетки OpenVPN.
И что это за порты 3021 и 3022? OpenVPN у меня настроен на 2000 порт.
На сколько я понял - основая моя проблема - правильно настроить ipfw.
 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-07-18 16:51:29
				 paradox
				100раз говорил не юзайте то в чем не разбираетесь
почему простой ipfw не юзать?
а именно  ng-ipacct ?
чем продиктована такая надобность?
			 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-07-18 19:11:14
				 igyrus
				paradox
Добрый ответ. А Вы что, разбираетесь не юзая?  
 
 
У меня уже несколько лет стоит и великолепно работает роутер на FreeBSD с ipfw фаерволом, трафик считается с помощью ng-ipacct, складывается в mysql, смотрится через apache. И пересматривать эту отлаженную связку я не собираюсь. Сейчас появилась нужда пускать во внутреннюю сетку ещё одного юзера (кроме себя, любимого) снаружи через OpenVPN и соответственно точно знать кто из нас сколько трафика сделал. Раньше стоял mpd, но пришлось от него оказаться - перестал работать у меня из дома из-за провайдера.
 
			 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-07-18 19:23:59
				 paradox
				у меня дар телепатии
выработаный годами.....
по правилам вы его не посчитаете
если брать общий случай когда неизвеные айпи у клиентов
посему настривать флов
и потом парсить
			 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-07-18 20:10:11
				 igyrus
				Решение это я нашел здесь: 
http://www.opennet.ru/openforum/vsluhfo ... 120.html#6
Так что наверно сделать это можно. Просто я пока не могу понять его и прошу помочь разобраться.
 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-07-18 20:26:47
				 paradox
				
У меня уже несколько лет стоит и великолепно работает роутер на FreeBSD с ipfw фаерволом, трафик считается с помощью ng-ipacct
показывайте как уже настроено
а то как то больше вопросов появляеться
о том кто вам и как настраивали
если вы простой добавки для нового правила неможете сделать
 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-07-18 21:31:05
				 igyrus
				Вот мой скрипт с правилами для фаервола. 
Код: Выделить всё
FwCMD="/sbin/ipfw -q"
LanOut="fxp0"           # внешний интерфейс
LanIn0="fxp1"            # внутренний интерфейс 0
LanIn1="fxp2"            # внутренний интерфейс 1
IpOut="1.2.3.4"   # внешний IP адрес машины
IpIn0="192.168.160.1"        # 1 внутренний IP машины
IpIn1="192.168.161.1"        # 2 внутренний IP машины
NetIn0="192.168.160.0"       # Внутренняя сеть 1
NetIn1="192.168.161.0"       # Внутренняя сеть 2
NetVpn="10.10.200.0"
${FwCMD} flush
${FwCMD} add check-state
${FwCMD} add allow ip from any to any via lo0
${FwCMD} add deny ip from any to 127.0.0.0/8
${FwCMD} add deny ip from 127.0.0.0/8 to any
${FwCMD} add deny ip from any to 10.0.0.0/8 in via ${LanOut}
${FwCMD} add deny ip from any to 172.16.0.0/12 in via ${LanOut}
${FwCMD} add deny ip from any to 192.168.0.0/16 in via ${LanOut}
${FwCMD} add deny ip from any to 0.0.0.0/8 in via ${LanOut}
${FwCMD} add deny ip from any to 169.254.0.0/16 in via ${LanOut}
${FwCMD} add deny ip from any to 240.0.0.0/4 in via ${LanOut}
${FwCMD} add deny icmp from any to any frag
${FwCMD} add deny log icmp from any to 255.255.255.255 in via ${LanOut}
${FwCMD} add deny log icmp from any to 255.255.255.255 out via ${LanOut}
${FwCMD} add deny ip from ${NetIn0}/24 to ${NetIn1}/24 in via ${LanIn0}
${FwCMD} add deny ip from ${NetIn1}/24 to ${NetIn0}/24 in via ${LanIn1}
${FwCMD} add deny tcp from ${NetIn0}/23 to not ${NetIn0}/23 25 in
${FwCMD} add fwd 127.0.0.1,3128 tcp from ${NetIn0}/23 to any 80 via ${LanOut}
${FwCMD} add divert natd ip from ${NetIn0}/23 to any out via ${LanOut}
${FwCMD} add divert natd ip from any to ${IpOut} in via ${LanOut}
${FwCMD} add deny ip from 10.0.0.0/8 to any out via ${LanOut}
${FwCMD} add deny ip from 172.16.0.0/12 to any out via ${LanOut}
${FwCMD} add deny ip from 192.168.0.0/16 to any out via ${LanOut}
${FwCMD} add deny ip from 0.0.0.0/8 to any out via ${LanOut}
${FwCMD} add deny ip from 169.254.0.0/16 to any out via ${LanOut}
${FwCMD} add deny ip from 224.0.0.0/4 to any out via ${LanOut}
${FwCMD} add deny ip from 240.0.0.0/4 to any out via ${LanOut}
${FwCMD} add allow tcp from any to any established
# OpenVPN ###############################################
${FwCMD} add tee 3021 ip from any to any out xmit gif*         # ???
${FwCMD} add tee 3022 ip from any to any via tun*                # ???
${FwCMD} add allow udp from any to ${IpOut1} 2000 via ${LanOut} # у меня OpenVPN на 2000 пору
${FwCMD} add allow ip from ${NetVpn}/24 to ${NetIn0}/24
#########################################################
${FwCMD} add allow udp from any 53 to any via ${LanOut}
${FwCMD} add allow udp from any to any 123 via ${LanOut}
${FwCMD} add allow icmp from any to any icmptypes 0,8,11
${FwCMD} add allow tcp from any to ${IpOut1} 80 via ${LanOut}
${FwCMD} add allow tcp from any to ${IpOut1} ssh via ${LanOut}
# разрешения для каждого юзера:
${FwCMD} add allow all from any to user1_IP via ${LanIn0}
${FwCMD} add allow all from user1_IP to any via ${LanIn0}
${FwCMD} add allow all from any to user2_IP via ${LanIn0}
${FwCMD} add allow all from user2_IP to any via ${LanIn0}
...
Делал всё сам. Возможно коряво, т.к. далеко не профи. У меня один сервер. Помучаюсь, настрою и потом месяцами не возвращаюсь к нему пока не появится новая задача.
Я хочу разобраться как работают правила
${FwCMD} add tee 3021 ip from any to any out xmit gif*
${FwCMD} add tee 3022 ip from any to any via tun*
Что за порты 3021 и 3022.
Откуда на них возьмутся пакеты?
 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-07-18 21:35:42
				 paradox
				
 меня уже несколько лет стоит и великолепно работает роутер на FreeBSD с ipfw фаерволом, трафик считается с помощью ng-ipacct
вы мне это прокомментируйте
насчет ng_ipacct
я непонял вашы слова
в конфиге я вижу токо ipfw
а насчет тех портов
так вы поиск сделайте по тому quote что вы сделали
там сразу будет видно что это за порты
и где они еще всплывают
tee в ipfw делает копию и отправляет его на сокет
 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-07-18 22:02:09
				 igyrus
				
			 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-07-18 22:24:06
				 paradox
				статья столетней давности
это ж надо раскурить всю ту пургу что они там нагородили...
			 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-07-18 22:56:26
				 igyrus
				Так я и ставил это примерно в то время.
И мало того что раскрутил, так ещё и доработал базы под себя и сайт с нуля слепил.
Ну а если по делу, то разобрался. 
Перенёс строки
Код: Выделить всё
${FwCMD} add tee 3021  ip from any to any in via tun*
${FwCMD} add tee 3022  ip from any to any out via tun*
до строки
Код: Выделить всё
${FwCMD} add allow tcp from any to any established
и всё заработало
Код: Выделить всё
02700   319   32253 tee 3021 ip from any to any in via tun*
02800   449  433683 tee 3022 ip from any to any out via tun*
02900 83994 7147560 allow tcp from any to any established
теперь всё считается
Код: Выделить всё
...
10.10.200.6     50651   192.168.160.33  445     6       320     32305
10.10.200.6     50651   192.168.160.33  445     6       1       52
10.10.200.6     49332   192.168.160.33  445     6       1       52
10.10.200.6     49315   192.168.160.33  445     6       1       52
10.10.200.6     49318   192.168.160.33  80      6       3       152
192.168.160.33  445     10.10.200.6     50651   6       449     433683
10.10.200.6     49968   192.168.160.33  445     6       1       52
...
 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-07-18 23:00:35
				 paradox
				уважаю людей которые сами быстро разбираються
 
 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-09-16 16:32:50
				 E-Wind
				Вопрос на ответ аля да/нет:
этот скрипт заставляет ng_ipacct сбросить собранную статистику в файл лога
Код: Выделить всё
$IPACCTCTL ${IFACE}_ip_acct:$IFACE show >> $DIR/$NAME
А можно вместо слива логов в файл 
здесь сливать их в БД... ? перенаправить вывод на что-нибудь на каком-нить скриптовом (или нет) языке и сливать?
Спасибо )
 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-09-16 17:04:09
				 paradox
				можно
			 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-09-16 19:53:14
				 E-Wind
				ng_ipacct не собирается на 7.1-PRERELEASE   
 
 
Код: Выделить всё
# make install clean
===>  Vulnerability check disabled, database not found
===>  Found saved configuration for ng_ipacct-20061223
=> ng_ipacct-20061223.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/local-distfiles/skv/.
ng_ipacct-20061223.tar.gz                     100% of   24 kB 7142  Bps
===>  Extracting for ng_ipacct-20061223
=> MD5 Checksum OK for ng_ipacct-20061223.tar.gz.
=> SHA256 Checksum OK for ng_ipacct-20061223.tar.gz.
===>  Patching for ng_ipacct-20061223
===>  Configuring for ng_ipacct-20061223
===>  Building for ng_ipacct-20061223
===> ng_ipacct (all)
Warning: Object directory not changed from original /usr/ports/net-mgmt/ng_ipacct/work/ng_ipacct/ng_ipacct
@ -> /usr/src/sys
machine -> /usr/src/sys/i386/include
:> opt_netgraph.h
cc -O2 -fno-strict-aliasing -pipe -DMEM_USE_ZONE -g  -D_KERNEL -DKLD_MODULE -std=c99 -nostdinc  -I/usr/ports/net-mgmt/ng_ipacct/work/ng_ipacct/ng_ipacct -I. -I@ -I@/contrib/altq -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common  -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -c ng_ipacct.c
ng_ipacct.c: In function 'pcb_get_cred':
ng_ipacct.c:905: error: too few arguments to function 'in_pcblookup_local'
*** Error code 1
Stop in /usr/ports/net-mgmt/ng_ipacct/work/ng_ipacct/ng_ipacct.
*** Error code 1
Stop in /usr/ports/net-mgmt/ng_ipacct/work/ng_ipacct.
*** Error code 1
Stop in /usr/ports/net-mgmt/ng_ipacct.
*** Error code 1
Stop in /usr/ports/net-mgmt/ng_ipacct.
Результат гугления:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
KES wrote:
[...]
| kes# make deinstall reinstall clean
| ===>  Deinstalling for net-mgmt/ng_ipacct
| ===>   ng_ipacct not installed, skipping
| ===>  Building for ng_ipacct-20061223
| ===> ng_ipacct (all)
| Warning: Object directory not changed from original
/usr/ports/net-mgmt/ng_ipacct/work/ng_ipacct/ng_ipacct
| cc -O -pipe -g  -D_KERNEL -DKLD_MODULE -std=c99 -nostdinc
- -I/usr/ports/net-mgmt/ng_ipacct/work/ng_ipacct/ng_ipacct -I. -I@
- -I@/contrib/altq -finline-limit=8000 --param inline-unit-growth=100
- --param large-function-growth=1000 -fno-common  -mno-align-long-strings
- -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2
- -mno-sse3 -ffreestanding -Wall -Wredundant-decls -Wnested-externs
- -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline
- -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -c ng_ipacct.c
| ng_ipacct.c: In function 'pcb_get_cred':
| ng_ipacct.c:905: error: too few arguments to function 'in_pcblookup_local'
| *** Error code 1
Newer FreeBSD versions requires a 'ucred' parameter, from my
understanding it looks that one has to pass the current thread's ucred?
Cheers,
- --
Xin LI <delphij at delphij.net>	
http://www.delphij.net/
FreeBSD - The Power to Serve!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (FreeBSD)
iEYEARECAAYFAkibeN4ACgkQi+vbBBjt66DO6wCfeG4bbzuFs40CNR28aNFoR/ld
P0UAniG1zwrzmQurBOg3yRSDejM4mEaN
=mN+B
-----END PGP SIGNATURE-----
 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-09-26 17:51:27
				 Demiurg
				2E-Wind  по поводу загона трафика из ng_ipacct в базу - 
http://forum.lissyara.su/viewtopic.php? ... 343#p81343 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-09-28 22:29:23
				 E-Wind
				Спасибо за линк!
ng_ipacct не собирается на 7.1-PRERELEASE  
Сегодня обновился в портах и собрался )
 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-10-06 22:25:19
				 LogEdge
				
Здорово.
А может кто из знатоков постгресс от скуки ткнет пальцем, где исправить, чтоб это под мускулом выполнить?
 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-11-11 16:49:14
				 sofinan
				Здравсвуйте, тут такая штука возникла....Вообщем ман от ipacctctl на непонятном мне языке))))))(ПОнты с кодировкой короче)Кто как решил проблему?
			 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-11-18 9:03:10
				 valerkav
				Спасибо за статью и труд ее написания и опубликования, очень полезная весчь 

 Но у меня проблемка:
Поставил апач, пхп и пхп-екст. Все сделал как в статье, в браузере выдает ошибку: "You don't have permission to access /pma/ on this server." Права 755 на phpmyadmin.. Что делать ума не приложу. Можете помочь?
 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2008-11-18 9:37:28
				 valerkav
				отрывок из /usr/local/etc/apache22/httpd.conf:
Код: Выделить всё
#
# "/usr/local/www/apache22/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/usr/local/www/apache22/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
Alias /pma/ "/usr/local/www/phpMyAdmin/"
<Directory "/usr/local/www/phpMyAdmin/">
    Options None
    AllowOverride Limit
    Order allow,deny
    Deny from all
    Allow from 127.0.0.1 192.168.0.8
</Directory>
#
# DefaultType: the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value.  If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain
<IfModule mime_module>
    #
    # TypesConfig points to the file containing the list of mappings from
    # filename extension to MIME-type.
    #
    TypesConfig etc/apache22/mime.types
    #
    Addtype application/x-httpd-php .php
    Addtype application/x-httpd-php-source .phps
 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2009-04-22 8:26:47
				 sofinan
				Здрасти, тут такой вопросец появился, если собирать траф на машине которая играет роль шлюза, т.е. на ней есть два интерфейса внешний и внутренний, как считать собственный траф?!Если ставим считать на внутреннем, то он считает со всех машин находящихся во внут сети, если ещё считать и на внеш интерфейсе, то он как я понимаю считает все пакеты исходящие от себя и от сети, т.е как бы "дублирует"?!Если я что то не так понимаю, разъясните пожалуйста,Если все правильно, то как всеже считать траф от самого шлюза?
			 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2009-04-22 9:00:19
				 E-Wind
				У меня так настроено 
http://forum.lissyara.su/viewtopic.php?f=14&t=17475
С помощью 2-х SQL можно сделать:
1. Считаем весь входящий траф шлюза 
2. Считаем траф, проходящий сквозь шлюз на машины внутри сети, за вычетом сервисов шлюза (у меня samba, ее не считаю )) ) 
3. Вычитаем ...
 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2009-04-22 9:20:40
				 sofinan
				Ага, хм...)))Бля))))Как я так не допер))))А вот меня ещё одна шняга беспокоит,  у меня за день набирается > 300.000 записей в таблице базы, в месяц это примерно 6.600.000  , и меня стоит постгрэст. Дак потянет ли Субд?И сколько такие запросы ,типа посчитать весь траф за месяц, будут выполняться по времени ?
			 
			
					
				Re: Подсчёт трафика OpenVPN с помощью ng-ipacct
				Добавлено: 2009-04-22 9:42:41
				 E-Wind
				Раз в месяц можно старые обрабатывать/сводить в табличку/e.t.c. и удалять..
Для MySQL
1 000 000 записей, 54 метра (данные PhpMyAdmin)
1,5 сек. на E2180 - считал весь входящий с группировкой по месяцам..