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

Исходное сообщение
"libpcap and billing"

Отправлено drone , 29-Сен-04 12:12 
Пишу биллинговую систему реального времени
с пом. Libcap под FreeBSD 5.2.1.
Создаю для теста фильтр "ip proto icmp".
Вызываю pcap_loop:
...........
pcap_loop(handle, -1, callback, NULL);
...........
void callback(...){
  printf("test\n");
}
...........
По идее при пинге этого хоста должны распечатываться строки "test".
Но нет этого. Почему?
Функции pcap_lookupdev, pcap_open_live, pcap_compile, pcap_setfilter
ошибок не возвращают.

Содержание

Сообщения в этом обсуждении
"libpcap and billing"
Отправлено drone , 29-Сен-04 12:29 
Прошу прощения, строки распечатываются. Но через
какой-то промежуток времени после начала пинга!
Мне нужно в реальном времени отслеживать каждый пакет.

Да, и еще: я новичек в никсах,
это должно работать при настроенном NAT-е?
Это сервер доступа к интернет в локалке.

Или, может, посоветуете другой способ слежения трафика?


"libpcap and billing"
Отправлено Vladislav Lazarenko , 29-Сен-04 14:15 
>Прошу прощения, строки распечатываются. Но через
>какой-то промежуток времени после начала пинга!
>Мне нужно в реальном времени отслеживать каждый пакет.
>
>Да, и еще: я новичек в никсах,
>это должно работать при настроенном NAT-е?
>Это сервер доступа к интернет в локалке.
>
>Или, может, посоветуете другой способ слежения трафика?

в реальном времени ничего у тебя не выйдет, задержки все равно будут )) Да и FreeBSD - не real-time OS :))
А вообще если по делу.... коль конкретно FreeBSD,  то зачем PCAP ???
В FreeBSD есть прекрасная вещь, которая называется Berkeley Packet Filter, просто man bpf.

P.S.: PCAP через него и работает ...


"libpcap and billing"
Отправлено drone , 29-Сен-04 15:00 
"Реального времени"- я имел в виду: пришел пакет на интерфейс,
я его сразу анализирею, логирую и принимаю решение, что с ним дальше делать.
Все это до обработки системой. Т.е. чтоб была возможность
запрещать пакеты и разрешать их в программе.
Я писал такую штуку под Win2000, пришлось писать свой драйвер.
Здесь, как я понял, легче.
Но так как я не профи в никсах вообще, не знаю, какой метод
(и какие есть вообще) лучше выбрать.

"libpcap and billing"
Отправлено Vladislav Lazarenko , 29-Сен-04 15:20 
>"Реального времени"- я имел в виду: пришел пакет на интерфейс,
>я его сразу анализирею, логирую и принимаю решение, что с ним дальше
>делать.
>Все это до обработки системой. Т.е. чтоб была возможность
>запрещать пакеты и разрешать их в программе.
>Я писал такую штуку под Win2000, пришлось писать свой драйвер.
>Здесь, как я понял, легче

Если Вы внимательно читали про libpcap, в возможности этой библиотеки не входит разрешение/запрещение пакетов, для этого есть firewall.

>Но так как я не профи в никсах вообще, не знаю, какой
>метод
>(и какие есть вообще) лучше выбрать.

IPFW (FreeBSD only), IPF (cross-platformed)


"libpcap and billing"
Отправлено rWizard , 01-Окт-04 05:14 
если нужно пропускать через себя пакеты (хотя имхо, это не правильно) , то можно встраивать себя в ipfw divert



"libpcap and billing"
Отправлено kir , 29-Сен-04 19:30 
>Прошу прощения, строки распечатываются. Но через
>какой-то промежуток времени после начала пинга!
>Мне нужно в реальном времени отслеживать каждый пакет.
>
>Да, и еще: я новичек в никсах,
>это должно работать при настроенном NAT-е?
>Это сервер доступа к интернет в локалке.
>
>Или, может, посоветуете другой способ слежения трафика?


если конкретно в FreeBSD то лучше PF_HOOK если это для версий > 5 если для всех версии а точнее и для 4 то посмотрите в сторону netgraph'a


"libpcap and billing"
Отправлено Maxim Kuznetsov , 29-Сен-04 15:09 
>Пишу биллинговую систему реального времени
>с пом. Libcap под FreeBSD 5.2.1.
>Создаю для теста фильтр "ip proto icmp".
>Вызываю pcap_loop:
>...........
>pcap_loop(handle, -1, callback, NULL);
>...........
>void callback(...){
>  printf("test\n");
>}
>...........
>По идее при пинге этого хоста должны распечатываться строки "test".
>Но нет этого. Почему?
>Функции pcap_lookupdev, pcap_open_live, pcap_compile, pcap_setfilter
>ошибок не возвращают.

почитайте внимательнее про pcap_open_live,pcap_dispatch ;-)

P.S. Пишу что-то подобное, но громким именем билинга не называю ;-)
     см www.inlan.ru/wiki/ipcount, может объеденим усилия ?
     Предыдущая версия у меня работала на BSD, но щас все переориентировал   на Linux - просто BSD под рукой нет.


"libpcap and billing"
Отправлено drone , 29-Сен-04 15:18 
Не, я пишу по FreeBSD.
"но громким именем билинга не называю ;-)"- так я планирую
сделать биллинг :))