Перейти к содержимому
Калькуляторы

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

Куда рыть?

Изменено пользователем Ilya Evseev

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.