Jump to content
Калькуляторы

FreeBSD: ngnetflow не пропускает пакеты в gif-туннели

Имеется FreeBSD (пробовал 7.1 и 8.1), ipfw + ngnetflow,

gif- и vlan-интерфейсы к шлюзам других сетей.

 

Динамических правил в ipfw нет (net.inet.ip.fw.dyn_count: 0)

 

Проблема: правило "ipfw add 101 netgraph 101 ip from any to any" не пропускает пакеты на gif-интерфейсах.

Первые пакеты в TCP-сессиях проскакивают, дальше происходит затык с ответами.

От нагрузки не зависит.

На vlan-интерфейсах всё нормально.

 

Ответы на запросы непосредственно с удалённых шлюзов проходят нормально,

проблема есть только при обращениях с клиентских машин, расположенных за ними.

 

Если отключить файрволл через sysctl net.inet.ip.fw.enable

и выполнить соединение с удалённого клиентского компьютера к локальному сайту,

а потом опять включить файрволл, то все следующие соединения некоторое время будут проходить нормально.

 

Если перед ipfw-правилом netgraph вставить "ipfw add 99 skipto 102 tcp from $site to any out"

и выполнить соединение, а потом убрать правило, то следующие соединения некоторое время будут проходить нормально.

 

# ngctl show netflow:                                                       
  Name: netflow         Type: netflow         ID: 00000006   Num hooks: 3                        
  Local hook      Peer name       Peer type    Peer ID         Peer hook                         
  ----------      ---------       ---------    -------         ---------
  export          <unnamed>       ksocket      0000000c        inet/dgram/udp
  out0            ipfw            ipfw         00000001        100
  iface0          ipfw            ipfw         00000001        101

# ngctl show ipfw:
  Name: ipfw            Type: ipfw            ID: 00000001   Num hooks: 2
  Local hook      Peer name       Peer type    Peer ID         Peer hook
  ----------      ---------       ---------    -------         ---------
  100             netflow         netflow      00000006        out0
  101             netflow         netflow      00000006        iface0

Создание ноды:

ngctl mkpeer ipfw: netflow 101 iface0
ngctl name ipfw:101 netflow
ngctl msg netflow: "setdlt { iface=0 dlt=12  }"
ngctl connect ipfw: netflow: 100 out0
ngctl mkpeer netflow: ksocket export inet/dgram/udp
ngctl msg netflow:export connect inet/10.20.30.40

sysctl.conf:

net.link.ether.inet.log_arp_wrong_iface=0
net.inet.ip.dummynet.io_fast=1
net.inet.ip.fastforwarding=1    # пробовал 0 - не помогло.
net.inet.ip.redirect=0
net.inet.ip.fw.one_pass=0
net.inet.ip.fw.dyn_buckets=2048
net.inet.ip.dummynet.hash_size=1024
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.ip.intr_queue_maxlen=400

Куда рыть?

Edited by Ilya Evseev

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this