Jump to content

Вопрос по модулю cap_divert


Recommended Posts

Добрый день!

Имеем: 1. FreeBSD 8.0-RELEASE

2. Stargazer 2.406

Теперь сама проблема. При использовании модуля cap_divert.so идет удвоение трафика.

41650  958 1239596 count ip from any to 192.168.1.0/24 out via em0
41650    0       0 count ip from 192.168.1.0/24 to any in via em0
41651  958 1239596 tee 42111 ip from any to 192.168.1.0/24 out via em0
41652    0       0 tee 42111 ip from 192.168.1.0/24 to any in via em0
41653 1874 2477396 count ip from any to 192.168.1.0/24 out via em0
41653    0       0 count ip from 192.168.1.0/24 to any in via em0
41700 1874 2477396 allow ip from any to 192.168.1.0/24 out via em0

Получается что по правилу 41651 копия пакета уходит на 42111 порт, где слушает модуль cap_divert, и после этого возвращается обратно в файервол.

Пробовал направлять копии пакетов на порт где висит другой процесс, и копии не вернулись...

41650  849 1218771 count ip from any to 192.168.1.0/24 out via em0
41650    0       0 count ip from 192.168.1.0/24 to any in via em0
41651  849 1218771 tee 42111 ip from any to 192.168.1.0/24 out via em0
41652    0       0 tee 42111 ip from 192.168.1.0/24 to any in via em0
41653 1685 2436994 count ip from any to 192.168.1.0/24 out via em0
41653    0       0 count ip from 192.168.1.0/24 to any in via em0
41654 1685 2436994 tee 3333 ip from any to 192.168.1.0/24 out via em0
41655    0       0 count ip from 192.168.1.0/24 to any in via em0
41655 1685 2436994 count ip from any to 192.168.1.0/24 out via em0
41700 1685 2436994 allow ip from any to 192.168.1.0/24 out via em0

Получается что возврат пакетов в файервол осуществляет именно процесс на том порту куда они отправлены, а в нашем случае это cap_divert.so

Можно это как-нибудь исправить?

Link to post
Share on other sites

Добрый день!

Имеем: 1. FreeBSD 8.0-RELEASE

2. Stargazer 2.406

Теперь сама проблема. При использовании модуля cap_divert.so идет удвоение трафика.

41650  958 1239596 count ip from any to 192.168.1.0/24 out via em0
41650    0       0 count ip from 192.168.1.0/24 to any in via em0
41651  958 1239596 tee 42111 ip from any to 192.168.1.0/24 out via em0
41652    0       0 tee 42111 ip from 192.168.1.0/24 to any in via em0
41653 1874 2477396 count ip from any to 192.168.1.0/24 out via em0
41653    0       0 count ip from 192.168.1.0/24 to any in via em0
41700 1874 2477396 allow ip from any to 192.168.1.0/24 out via em0

Получается что по правилу 41651 копия пакета уходит на 42111 порт, где слушает модуль cap_divert, и после этого возвращается обратно в файервол.

Пробовал направлять копии пакетов на порт где висит другой процесс, и копии не вернулись...

41650  849 1218771 count ip from any to 192.168.1.0/24 out via em0
41650    0       0 count ip from 192.168.1.0/24 to any in via em0
41651  849 1218771 tee 42111 ip from any to 192.168.1.0/24 out via em0
41652    0       0 tee 42111 ip from 192.168.1.0/24 to any in via em0
41653 1685 2436994 count ip from any to 192.168.1.0/24 out via em0
41653    0       0 count ip from 192.168.1.0/24 to any in via em0
41654 1685 2436994 tee 3333 ip from any to 192.168.1.0/24 out via em0
41655    0       0 count ip from 192.168.1.0/24 to any in via em0
41655 1685 2436994 count ip from any to 192.168.1.0/24 out via em0
41700 1685 2436994 allow ip from any to 192.168.1.0/24 out via em0

Получается что возврат пакетов в файервол осуществляет именно процесс на том порту куда они отправлены, а в нашем случае это cap_divert.so

Можно это как-нибудь исправить?

А может просто не использовать tee?

Link to post
Share on other sites

Пробовал в правилах "tee" заменить на "divert", эффекта никакого...

Пакеты не уходят на порт.

например, идет 300 пакетов

на диверт ушло только 20

------

выглядит так, как буд-то пакет отправлен на порт и ждет подтверждения передать следующий.

команда не приходит.. и пакеты идут мимо диверта.

а что происходит на самом деле не знаю

Link to post
Share on other sites

Пробовал в правилах "tee" заменить на "divert", эффекта никакого...

Пакеты не уходят на порт.

например, идет 300 пакетов

на диверт ушло только 20

------

выглядит так, как буд-то пакет отправлен на порт и ждет подтверждения передать следующий.

команда не приходит.. и пакеты идут мимо диверта.

а что происходит на самом деле не знаю

Дело в том что сама логика работы divert'а построена на том чтобы получить пакет, что-то с ним сделать и потом положить его на место.

Как вариант можешь попробовать закомментироывать sendto в divert_freebsd/divert_cap.cpp. Но лучше разобраться почему пакеты ходят мимо диверта.

Link to post
Share on other sites

При любом более-менее заметном трафике тормоза гарантированы. Почему не cap_nf который работает на порядок точнее cap_bpf и на много быстрее cap_divert?

Link to post
Share on other sites

При любом более-менее заметном трафике тормоза гарантированы. Почему не cap_nf который работает на порядок точнее cap_bpf и на много быстрее cap_divert?

 

Незнаю... почему бы и нет! Как-то до него еще не добрался... Хочу проверить в работе все модули. cap_bpf уже пролетает, сейчас помучаюсь с cap_divert и возьмусь за cap_nf!

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
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...