URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 88000
[ Назад ]

Исходное сообщение
"IPFW: ngtee не возвращает пакеты обратно"

Отправлено TiFFolk , 28-Янв-10 21:12 
Приветствую!
Роутер, freebsd 7_2, работает как бридж - шейпер.
Пакеты после прохождения в ngtee не возвращаются обратно в фильтр и теряются:

Код
00001     208750      26565728 allow ip from any to me
00002     571807      90239638 allow ip from me to any
03001          20          7840 ngtee 100 ip from any to any
03003            0           0 allow log ip from any to any

В чем может быть причина? Пробовал менять one_pass с единицы на ноль и обратно, траффик все равно не проходит. Будто дропается на этом правиле.

Код
net.inet.ip.fw.one_pass: 0


Насколько я понимаю, ng_ipfw должен вернуть пакет обратно на следующее правило в любом случае? Вот у меня он почему-то этого не делает и траффик где-то теряется.

На других машинах ngtee весь траффик возвращает,даже если индекса ngtee и нет вообще. А  у меня он почему-то дропается =\. Может кто знает в чем проблема?


Содержание

Сообщения в этом обсуждении
"IPFW: ngtee не возвращает пакеты обратно"
Отправлено PavelR , 29-Янв-10 07:36 
>Приветствую!
>Роутер, freebsd 7_2, работает как бридж - шейпер.
>Пакеты после прохождения в ngtee не возвращаются обратно в фильтр и теряются:

tee - всю жизнь вроде как было копированием пакета, а "заворотом с возвращением" было divert.

Что на 100 "порту" слушает этот трафик ? Для чего это всё? Где остальные части скриптов запуска ?


А пока вы отвечаете для себя на эти вопросы, почитаем маны вслух:

man ipfw

  ngtee cookie
             A copy of packet is diverted into netgraph, original packet is
             either accepted or continues with the next rule, depending on
             net.inet.ip.fw.one_pass sysctl variable.  See ng_ipfw(4) for more
             information on netgraph and ngtee actions.

И это уже не совпадает с вашим мнением:

>Насколько я понимаю, ng_ipfw должен вернуть пакет обратно на следующее правило в любом >случае? Вот у меня он почему-то этого не делает и траффик где-то теряется.

man 4 ng_ipfw     - не привносит ничего нового в обсуждаемый вопрос...

Packets can be injected into netgraph(4) using either the netgraph or
     ngtee commands of the ipfw(8) utility.  These commands require a numeric
     cookie to be supplied as an argument.  Packets are sent out of the hook
     whose name equals the cookie value.  If no hook matches, packets are dis-
     carded.


"IPFW: ngtee не возвращает пакеты обратно"
Отправлено TiFFolk , 29-Янв-10 13:18 
>>Приветствую!
>>Роутер, freebsd 7_2, работает как бридж - шейпер.
>>Пакеты после прохождения в ngtee не возвращаются обратно в фильтр и теряются:
>
>tee - всю жизнь вроде как было копированием пакета, а "заворотом с
>возвращением" было divert.
>
>Что на 100 "порту" слушает этот трафик ? Для чего это всё?
>Где остальные части скриптов запуска ?
>

На 100 ничего слушать и не обязано.
>[оверквотинг удален]
> either accepted or continues with the next rule, depending on
>
>            
> net.inet.ip.fw.one_pass sysctl variable.  See ng_ipfw(4) for more
>            
> information on netgraph and ngtee actions.
>
>И это уже не совпадает с вашим мнением:
>
>>Насколько я понимаю, ng_ipfw должен вернуть пакет обратно на следующее правило в любом >случае? Вот у меня он почему-то этого не делает и траффик где-то теряется.

Я написал, что у меня net.inet.ip.fw.one_pass: 0

>[оверквотинг удален]
>
> Packets can be injected into netgraph(4) using either the netgraph or
>
>     ngtee commands of the ipfw(8) utility.  
>These commands require a numeric
>     cookie to be supplied as an argument.
> Packets are sent out of the hook
>     whose name equals the cookie value.  
>If no hook matches, packets are dis-
>     carded.

Я уже, конечно, прочитал все маны и цитировать их не нужно, будь в них решение, стал бы я писать на форум =)

ngtee берет пакет, тегирует его и сует в netgraph, затем возвращает обратно на основе тега. Если хука с таким номером нет, то пакет отбросится в нетграфе и продолжит дальнейшее путешествие по фаерволу, начиния со следующего правила. Пакет может не пойти дальше если стоит net.inet.ip.fw.one_pass или если тега нет. Вот только как проверить есть тег или нет и куда он девается не ясно.

На совершенно аналогичной машине, с такими же конфигами всего, за исключением отсутствия dummynet и if_bridge ngtee возвращает все пакеты обратно(при отсутствии хука с таким номером, проверено на нескольких машинах), а тут херь какая-то. Я читал, что когда-то были проблемы if_bridge с ng_ether, у меня они вкомпилены в ядро на этой машине и используются. Может у меня что-то аналогичное. На выходных на другой машине поставлю с конфигами 1 в 1 (только что другие сетевухи) и посмотрю заработает ли там. Если нет, то наверно надо писать багрепорт. А если зарабтает буду дальше думать =\.

Может кто подскажет как можно продиагностировать или продебажить что происходит с пакетами после ngtee