Navigation

    Netgate Discussion Forum
    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search

    NG_NETFLOW + pfSense + анализатор netflow

    Russian
    1
    1
    4226
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      default666 last edited by

      pfSense v. 1.2.3RC1,  VMWare Workstation v. 6.5.2,  Netflow Analyzer v. 7.0.0.2, PRTG Network Monitor v. 7
      Собственно сам NG_NETFLOW уже вкомпилен как я понял осталось только заюзать его.
      Нарыл несколько простейших скриптов, поюзал - вроде работают. В примере локалный внутренний интерфейс, считается входящий и исходящий трафик. Каждый скриптик представляет из себя определенную схему соединения элементов NETGRAPH.

      |

      |

      
      #!/bin/sh
      ngctl -f- <<-SEQ
       mkpeer em1: tee lower left
       name em1:lower tee0
       connect em1: em1:lower upper right
       mkpeer tee0: one2many left2right many0
       name tee0:left2right one2many0
       connect tee0: one2many0: right2left many1
       mkpeer one2many0: netflow one iface0
       name one2many0:one netflow
       mkpeer netflow: ksocket export inet/dgram/udp
       msg netflow: setifindex { iface=1 index=2 }
       msg netflow:export connect inet/1.1.1.1:9999
      SEQ
      
      

      |

      
      #!/bin/sh
      ngctl -f- <<-SEQ 
       mkpeer em1: hub lower hook0 
       name em1:lower hub 
       connect hub: em1: hook1 upper
       mkpeer hub: netflow hook2 iface0 
       name hub:hook2 netflow
       mkpeer netflow: ksocket export inet/dgram/udp 
       name netflow:export ksocket 
       msg ksocket: connect inet/1.1.1.1:9999
       msg netflow: setifindex { iface=1 index=2 }
      SEQ
      
      

      |

      
      #!/bin/sh
       /usr/sbin/ngctl -f- <<-SEQ 
       mkpeer em1: split lower mixed 
       name em1:lower splitlow 
       mkpeer splitlow: netflow out iface1 
       name splitlow:out netflow 
       mkpeer netflow: split out1 in 
       name netflow:out1 splitup 
       connect splitup: em1: mixed upper 
       connect splitup: netflow: out iface0 
       connect splitlow: netflow: in out0 
       msg netflow: setifindex { iface=1 index=2 } 
       msg netflow: setifindex { iface=0 index=2 } 
       msg netflow: settimeouts { inactive=10 active=15 } 
       mkpeer netflow: ksocket export inet/dgram/udp 
       msg netflow:export connect inet/1.1.1.1:9999 
      SEQ 
      
      

      |

      
      #!/bin/sh
      ngctl -f- <<-SEQ
       mkpeer em1: netflow lower iface0
       name em1:lower netflow
       connect netflow: em1: iface1 upper
       connect netflow: netflow: out0 out1
       mkpeer netflow: ksocket export inet/dgram/udp
       msg netflow: setifindex { iface=0 index=2 }
       msg netflow: setifindex { iface=1 index=2 }
       msg netflow:export connect inet/1.1.1.1:9999
      SEQ
      
      

      |

      index=2 - порядковый номер интерфейса:

      ifconfig -l

      em0 em1 em2 plip0 lo0 enc0 pflog0 pfsync0 ng0 ng1 ng2 ng3

      Нарыл ещё один:

      #!/bin/sh 
      . /etc/rc.subr 
      
      flow_if="vlan12" 
      flow_if_idx="4" 
      # man ng_netflow / time in seconds 
      active_timeout="60" 
      inactive_timeout="15" 
      
      name="ngnetflow" 
      rcvar=`set_rcvar` 
      start_cmd="ngnetflow_start" 
      stop_cmd="ngnetflow_stop" 
      load_rc_config $name 
      eval "${rcvar}=\${${rcvar}:-'NO'}" 
      ng_export=${ngnetflow_export:-"192.168.100.6:9996"} 
      
      ngnetflow_start() { 
        echo "Setup ng_netflow" 
        /usr/sbin/ngctl -f- <<-SEQ 
        mkpeer ${flow_if}: split lower mixed 
        name ${flow_if}:lower ${flow_if}_splitlow 
      
        mkpeer ${flow_if}_splitlow: netflow out iface1 
        name ${flow_if}_splitlow:out netflow 
      
        mkpeer netflow: split out1 in 
        name netflow:out1 splitup 
      
        connect splitup: ${flow_if}: mixed upper 
        connect splitup: netflow: out iface0 
      
        connect ${flow_if}_splitlow: netflow: in out0 
      
        msg netflow: setifindex { iface=1 index=${flow_if_idx} } 
        msg netflow: setifindex { iface=0 index=${flow_if_idx} } 
        msg netflow: settimeouts { inactive = ${inactive_timeout} active = ${active_timeout} } 
      
        mkpeer netflow: ksocket export inet/dgram/udp 
      #  msg netflow:export  bind inet/${ng_export} 
        msg netflow:export connect inet/${ng_export} 
      
      SEQ 
      } 
      
      ngnetflow_stop() { 
        /usr/sbin/ngctl -f- <<-SEQ 
          shutdown netflow: 
      SEQ 
      } 
      
      run_rc_command "$1" 
      

      В принципе та же ботва, с использованием SPLIT, вместо VLAN12 и IDX="4" подставляете своё, только почемуто он не запускается и не работает выдаёт ошибку:

      /usr/local/etc/rc.d/flowem1: 55: Syntax error: end of file unexpected (expecting "}")
      

      подскажите почему, может чего-то где-то не хватает (в скриптах и freebsd я даун честно признаюсь) или может у когони-будь есть более изящные решения с использованием NG_NETFLOW по подсчёту и сбору статистики по трафику как входящему так и исходящему по всем интерфейсам? |

      1 Reply Last reply Reply Quote 0
      • First post
        Last post