08.05.2014 01:30, Vladislav V. Prodan написав(ла):
Subj.
Есть скрипт для сбора с физических интерфейсов, но он не применим к ngX

# ngctl show ng0:
   Name: ng0             Type: iface           ID: 0000146e   Num hooks: 1
   Local hook      Peer name       Peer type    Peer ID         Peer hook
   ----------      ---------       ---------    -------         ---------
   inet            mpd83895-B2-mss tcpmss       00001473        out

# ngctl mkpeer      ng0: netflow lower iface0
ngctl: send msg: Protocol family not supported


NgX поднимается через mpd5 (mpd5-5.7)

mpd умеет сам втыкаться куда скажут.

Я собираю где-то так:

#!/bin/sh

# PROVIDE: export_netflow
# BEFORE: mpd
# REQUIRE: ppp

export_netflow_enable=${export_netflow_enable-"NO"}
export_netflow_sink=${export_netflow_sink-''}
export_netflow_flags=${export_netflow_flags-'-d'}

. /etc/rc.subr

name="export_netflow"
rcvar=`set_rcvar`

start_cmd='export_netflow_start'
stop_cmd='export_netflow_stop'
required_modules='ng_bridge ng_ether ng_netflow ng_socket'

load_rc_config $name

export_netflow_start () {
        echo "Starting ${name}."
        {
                if /usr/sbin/ngctl show netflow0: >/dev/null 2>&1; then
                        echo "connect wlan0: netflow0: lower iface0"
                else
                        echo "mkpeer wlan0: netflow lower iface0"
                        echo "name wlan0:lower netflow0"
                fi
                echo "mkpeer netflow0: bridge out0 link0"
                echo "name netflow0:out0 bridge0"

                echo "connect rl0: netflow0: upper iface1"
                echo "connect rl0: netflow0: lower iface2"
                echo "connect netflow0: bridge0: out1 link1"
                echo "connect netflow0: bridge0: out2 link2"

                echo "mkpeer netflow0: ksocket export inet/dgram/udp"
                echo "name netflow0:export ksocket0"
                echo "msg ksocket0: connect inet/${export_netflow_sink}"
        } | /usr/sbin/ngctl ${export_netflow_flags} -f -
}

export_netflow_stop () {
        echo "Stopping ${name}."
        {
                echo "shutdown netflow0:"
        } | /usr/sbin/ngctl ${export_netflow_flags} -f -
}

run_rc_command "$1"

После этого mpd отдаётся хук netflow с рекомендацией начинать не с самого начала:

startup:
        set netflow node netflow0
        set netflow hook 256

peer:
        set iface enable netflow-in netflow-out

Если же не нужно объединять с физическими интерфейсами у mpd есть другой параметр для создания отдельного хука netflow и соответствующего ksocket:

startup:
        set netflow peer 127.0.0.1 8787

--
Sphinx of black quartz judge my vow.

Ответить