The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"подсчет трафика на ng-интерфейсах"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"подсчет трафика на ng-интерфейсах"  
Сообщение от GHopper email(??) on 08-Сен-07, 06:33 
Здравствуйте!
Имеется домашний шлюз FreeBSD6, natd, mpd. Один интерфейс смотрик к провайдеру (xl0), другой в локалку (rl0). VPN-соединение устанавливается между шлюз-провайдер и между шлюз-локальные_юзеры. Работает все.

ng0 - vpn-канал с сервером провайдера;
ng1 - vpn-канал с юзером1 (подключен);
ng2 - vpn-канал с юзером2 (отключен в данный момент);

xl0 - внешний интерфейс;
rl0 - внутренний интерфейс (192.168.0.1);

#ifconfig
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=9<RXCSUM,VLAN_MTU>
    inet6 fe80::204:75ff:fec0:b0aa%xl0 prefixlen 64 scopeid 0x1
    inet ${мой_внешний_ip} netmask 0xffffff00 broadcast ${мой_броадкаст}
    ether 00:04:75:c0:b0:aa
    media: Ethernet autoselect (100baseTX <full-duplex>)
    status: active
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=8<VLAN_MTU>
    inet6 fe80::250:70ff:fe51:7132%rl0 prefixlen 64 scopeid 0x2
    inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
    ether 00:50:70:51:71:32
    media: Ethernet autoselect (100baseTX <full-duplex>)
    status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    inet6 ::1 prefixlen 128
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
    inet 127.0.0.1 netmask 0xff000000
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
    inet 81.26.179.31 --> 81.26.177.9 netmask 0xffffffff
    inet6 fe80::204:75ff:fec0:b0aa%ng0 prefixlen 64 scopeid 0x4
ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1396
    inet 192.168.1.1 --> 192.168.1.2 netmask 0xffffffff
    inet6 fe80::204:75ff:fec0:b0aa%ng1 prefixlen 64 scopeid 0x5
ng2: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500

#ipfw show
00020    0       0 deny icmp from any to any icmptypes 0,3,5,8,11
00100   97    4964 allow tcp from me to 81.26.176.24 dst-port 1723 out via xl0
00105 2284  202892 allow gre from me to 81.26.176.24 out via xl0
00110 3167 1220424 allow ip from 81.26.176.24 to me in via xl0
00200 1145  144495 divert 8668 ip from 192.168.1.2 to any out via ng0
00210    0       0 divert 8668 ip from 192.168.1.3 to any out via ng0
00220 1431 1140069 divert 8668 ip from any to me in via ng0
00245 8173  820069 allow ip from 192.168.0.0/24 to me in via rl0
00250 9008 2159068 allow ip from me to 192.168.0.0/24 out via rl0
00260 2609 1286516 allow ip from any to any via ng0
00270 2563 1283751 allow ip from any to any via ng1
00270    0       0 allow ip from any to any via ng2
65535  533   73465 deny ip from any to any

Задача: посчитать трафик на интерфейсе ng1

Установил ng_ipacct. У него в комплекте идет скрипт для запуска (divert_node.sh):

IFACE="ng1"
THRESHOLD=1000
VERBOSE="1"

nodename=ipacct_${IFACE}
hookprefix=${IFACE}

ngctl -f- <<-SEQ
  mkpeer ipacct ctl ctl
  name .:ctl ${nodename}
  mkpeer ${nodename}: ksocket ${hookprefix}_in inet/raw/divert
  name ${nodename}:${hookprefix}_in ${nodename}_in    
  msg ${nodename}_in: bind inet/0.0.0.0:3021
  mkpeer ${nodename}: ksocket ${hookprefix}_out inet/raw/divert
  name ${nodename}:${hookprefix}_out ${nodename}_out
  msg ${nodename}_out: bind inet/0.0.0.0:3022
  rmhook .:ctl
SEQ
ipacctctl ${nodename}:${hookprefix} dlt RAW
ipacctctl ${nodename}:${hookprefix} v  ${VERBOSE}
ipacctctl ${nodename}:${hookprefix} th  ${THRESHOLD}
ipfw add 64021 tee 3021 ip from any to room101 via ${IFACE}
ipfw add 64022 tee 3022 ip from room101 to any via ${IFACE}

Вопросы:
1. что есть "room101". Пакеты не заходят, даже при
  ipfw add 30 tee 3021 ip from any to any via ng1
2. где в моем случае нужно добавлять правила для ipfw (всмысле оставить 64021 или до правил divert)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "подсчет трафика на ng-интерфейсах"  
Сообщение от GHopper email(ok) on 11-Сен-07, 05:49 
Ребяты! Ну я без вас никуда... поможите мне.
Пробовал подсчитать трафик на rl0-интерфейсе, при поднятом ng1 - там ходит всякий мусор (по пол килобайта). Тоесть считать нужно точно на ng-интерфейсе. Но вот как?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "подсчет трафика на ng-интерфейсах"  
Сообщение от ShyLion (ok) on 11-Сен-07, 16:06 
>Ребяты! Ну я без вас никуда... поможите мне.
>Пробовал подсчитать трафик на rl0-интерфейсе, при поднятом ng1 - там ходит всякий
>мусор (по пол килобайта). Тоесть считать нужно точно на ng-интерфейсе. Но
>вот как?

советую посмотреть ng_netflow

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "подсчет трафика на ng-интерфейсах"  
Сообщение от Александр (??) on 11-Сен-07, 16:45 
>>Ребяты! Ну я без вас никуда... поможите мне.
>>Пробовал подсчитать трафик на rl0-интерфейсе, при поднятом ng1 - там ходит всякий
>>мусор (по пол килобайта). Тоесть считать нужно точно на ng-интерфейсе. Но
>>вот как?
>

Существует вот такой скрипт, который пишет статистику в файл, запускается по крону
можно писать во временный файл и добавить скрипт, который будет разбирать этот файл
и записывать в БД, примеры можно найти на www.lissyara.su


#!/bin/sh                                                                      
                                                                                
# Written by Anton V. Yuzhaninov <citrin % mail.ru>                            
# traffic logger based on ng_ipacct by Roman V. Palagin                        
# ftp://ftp.wuppy.net.ru/pub/BSD/FreeBSD/local/kernel/ng_ipacct/                
                                                                                
# File name format                                                              
# YYYY-MM-DD-hour                                                              
                                                                                
###############################################################################>
#                                                                              
#   fORMAT LOGA                                                                
#  pRI ISPOLXZOWANII KOMANDY show WYWODITSQ SODERVIMOE checkpoint BAZY DANNYH W>
#  ip_from ip_to packets bytes                                                  
#  |TOT FORMAT ANALOGI^EN WYWODU KOMANDY IOS show ip accounting                
#  w SLU^AE ISPOLXZOWANIQ OPCII verbose STATISTIKA WYWODITSQ W WIDE:            
#                                                                              
#  ip_from s_port ip_to d_port proto packets bytes                              
#                                                                              
#  eSLI proto - ICMP, TO s_port - ICMP type, d_port - ICMP sub-code.            
#                                                                              
###############################################################################>
                                                                                
IPACCTCTL="/usr/local/sbin/ipacctctl"                                          
IFACE=$1                                                                        
DIR=/var/log/ipacct                                                            
SDIR=`date -v-9M "+%Y-%m-%d"`                                                  
                                                                                
if [ ! -e "$DIR/$SDIR" ]; then                                                  
   mkdir $DIR/$SDIR                                                            
fi                                                                              
                                                                                
NAME=`date -v-9M "+%Y-%m-%d-%H-$IFACE"`                                        
                                                                                
$IPACCTCTL ${IFACE}_ip_acct:$IFACE checkpoint                                  
$IPACCTCTL ${IFACE}_ip_acct:$IFACE show >> $DIR/$SDIR/$NAME                    
$IPACCTCTL ${IFACE}_ip_acct:$IFACE clear                                        
                                                                                
/usr/bin/tail -1 $DIR/$SDIR/$NAME | /usr/bin/fgrep exceed                      
                                                                                

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "подсчет трафика на ng-интерфейсах"  
Сообщение от butcher (ok) on 11-Сен-07, 16:34 
>[оверквотинг удален]
> ipacctctl ${nodename}:${hookprefix} th  ${THRESHOLD}
> ipfw add 64021 tee 3021 ip from any to room101 via
>${IFACE}
> ipfw add 64022 tee 3022 ip from room101 to any via
>${IFACE}
>
>Вопросы:
>1. что есть "room101". Пакеты не заходят, даже при
>  ipfw add 30 tee 3021 ip from any to any
>via ng1

Имя хоста трафик между которым вы считаете.

>2. где в моем случае нужно добавлять правила для ipfw (всмысле оставить
>64021 или до правил divert)

где-то в начале. До вот этого правила:
allow ip from any to any via ng1

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "подсчет трафика на ng-интерфейсах"  
Сообщение от GHopper email(??) on 14-Сен-07, 13:35 
Скрипт написать я смогу в 2 минуты! У меня не получается запустить ng_ipacct на ng1-интерфейсе!
Запускаю таким скриптом:
#divert_node.sh
#!/bin/sh

### Dmitry Frolov <frolov@riss-telecom.ru>
### $Id: divert_node.sh,v 1.5 2002/07/31 07:53:43 romanp Exp $

IFACE="ng1"
THRESHOLD=1000
VERBOSE="1"

### to manipulate a node use "ipacctctl ipacct_${IFACE}:$IFACE} <command...>".

nodename=ipacct_${IFACE}
hookprefix=${IFACE}

case "$1" in
    stop)

        ipfw delete 30 40

        ngctl shutdown ${nodename}:

        ;;

    show)
        ipacctctl ${nodename}:${hookprefix} checkpoint
        ipacctctl ${nodename}:${hookprefix} show
        ipacctctl ${nodename}:${hookprefix} clear
        ;;

    start|*)

        ### we must create two hooks, ${hookprefix}_in and
        ### ${hookprefix}_out to simulate input and output
        ### streams
        
        /sbin/kldload ng_netflow
        
        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 ${nodename}_in    
            msg ${nodename}_in: bind inet/0.0.0.0:3021
            ### "outgoing" hook
            mkpeer ${nodename}: ksocket ${hookprefix}_out inet/raw/divert
            name ${nodename}:${hookprefix}_out ${nodename}_out
            msg ${nodename}_out: bind inet/0.0.0.0:3022
            rmhook .:ctl
        SEQ
        #ipacctctl ${nodename}:${hookprefix} dlt RAW
        #ipacctctl ${nodename}:${hookprefix} v  ${VERBOSE}
        #ipacctctl ${nodename}:${hookprefix} th  ${THRESHOLD}
        
        ### packets reaching tee are _accepted_,
        ### so use theese rules _AFTER_ all deny rules
#        ipfw add 64021 tee 3021 ip from any to me via ${IFACE}
#        ipfw add 64022 tee 3022 ip from me to any via ${IFACE}
        ipfw add 30 tee 3021 ip from any to 192.168.0.2 via ${IFACE}
        ipfw add 40 tee 3022 ip from 192.168.0.2 to any via ${IFACE}

        ;;
esac

#ipfw show
00020   11    704 deny icmp from any to any icmptypes 0,3,5,8,11
00030    0      0 tee 3021 ip from any to 192.168.0.2 via ng1
00040    0      0 tee 3022 ip from 192.168.0.2 to any via ng1
00100   19   1268 allow tcp from me to 81.26.176.24 dst-port 1723 out via xl0
00105  251  20604 allow gre from me to 81.26.176.24 out via xl0
00110  352  52644 allow ip from 81.26.176.24 to me in via xl0
00200   91  12720 divert 8668 ip from 192.168.1.2 to any out via ng0
00210    0      0 divert 8668 ip from 192.168.1.3 to any out via ng0
00220  141  43012 divert 8668 ip from any to me in via ng0
00245 1577 151793 allow ip from 192.168.0.0/24 to me in via rl0
00250 1640 234874 allow ip from me to 192.168.0.0/24 out via rl0
00260  256  57188 allow ip from any to any via ng0
00270  224  55253 allow ip from any to any via ng1
00270    0      0 allow ip from any to any via ng2
65535  323  32491 deny ip from any to any

На правила 30 и 40 пакеты не заворачивают вообще!
./divert_node.sh show
ничего не выводит! Пробовал поменять 192.168.0.2 на 192.168.1.2 и all - тоже самое!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру