The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
ipfw counter считает не все пакеты?, !*! gardener, 12-Май-17, 14:18  [смотреть все]
Здравствуйте!

Столкнулся с ненормальным поведением ipfw.
На машине [FreeBSD 11.0-STABLE] стоит isc-dhcpd. Машина используется для различных тестов. В частности сейчас мне нужно внедрить netgraph в исходящее правило, а оно не срабатывает.
Смотрю на каунтерсы, а они не меняются:


# ipfw show
00100   5848 10090294 allow ip from any to any via lo0
00105      0        0 count ip from any to any proto udp out xmit em1
00110      0        0 count ip from any to any src-port 67 out xmit em1.512
00115      3     1143 count ip from any to any dst-port 67 in via em1.512
00120      0        0 count ip from any to any out via em1.512

при этом tail /var/log/dhcpd.log :

May 12 13:51:16 <daemon.info> test dhcpd: DHCPREQUEST for 172.18.27.5 from 00:1b:24:45:44:52 (tazik) via em1.512
May 12 13:51:16 <daemon.info> test dhcpd: DHCPACK on 172.18.27.5 to 00:1b:24:45:44:52 (tazik) via em1.512

и tazik получает ответ, и tcpdump видит пакет, и ng_tee на уровне ng_ether все видит, а ipfw не фиксирует.

Уже и ipfw включил в ядро, добавив опции:

options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=50
options         LIBALIAS
options         DUMMYNET

а все одно.

Проверил дома (там таже версия) все считается, а на работе нет. Куда рыть уже не знаю.
Как починить ipfw чтобы он начал срабатывать на исходящем правиле?!

  • ipfw counter считает не все пакеты?, !*! gardener, 17:27 , 15-Май-17 (1)
    Хочу добавить, что исходящие icmp пакеты ipfw все-таки регистрирует.
    Но вот непонятно почему udp игнорирует?!
    • ipfw counter считает не все пакеты?, !*! butcher, 11:04 , 17-Май-17 (2) +1
      • ipfw counter считает не все пакеты?, !*! gardener, 23:04 , 18-Май-17 (3)
        > DHCP не использует IP стек для отправки пакетов, пакеты формируются и отправляются
        > через BPF. От сюда и ограничение, чтобы ipfw мог видеть и
        > блокировать такие пакеты, вам нужно это делать на layer2. Читайте про
        > net.link.ether.ipfw.

        Я конечно не гуру, но по-моему BPF не интерфейс, а фильтр. Им могут фильтроваться, но не формироваться и не отправляться пакеты?
        И как может не участвовать стек IP, если dhcp пакет имеет заголовки вплоть до L7?

        С другой стороны, на машине, на которой счетчики исправно растут (о чем я упоминал ранее) значение переменной net.link.ether.ipfw = 0.

        Ну и все статьи о "net.link.ether.ipfw" касаются фильтрации по MAC. А мне это ни к чему. Я не знаю MAC-ов. В том смысле что какие есть, все хороши.

        • ipfw counter считает не все пакеты?, !*! butcher, 14:50 , 19-Май-17 (4) +2
          • ipfw counter считает не все пакеты?, !*! gardener, 15:39 , 19-Май-17 (5)
            > DHCP клиент формирует весь пакет со всеми заголовками и отправляет его прямо
            > в интерфейс используя BPF и минуя IP стек.

            Только в моем случае "сервер".

            > В приведённом вами выводе счётчики растут только для входящих пакетов. Так как
            > исходящий пакет отправляется мимо IP стека, PFIL хук файрвола не вызывается.

            Да, счетчики я приводил для проблемной машины. На другой счет ведется. Но тут после Вашего сообщения вспомнил, что на проблемной DHCP сервер отдает все бродкастом.
            И точно, если отключить "always-broadcast off;", то счетчики считают, правда только offer-ы, аки улетают неучтенными :)
            А в случае с "always-broadcast on;" не считают ничего.

            В общем пошел читать. Направление похоже верное ;)

          • ipfw counter считает не все пакеты?, !*! gardener, 17:58 , 22-Май-17 (6)
            >>> Читайте про net.link.ether.ipfw.

            Благодарю за информацию. После установки этой переменной в 1 счетчики нормально считают весь исходящий трафик.

            >> Я конечно не гуру, но по-моему BPF не интерфейс, а фильтр. Им
            >> могут фильтроваться, но не формироваться и не отправляться пакеты?
            > Прочтите man 4 bpf

            Ага!

            A packet can be sent out on the network by writing to a bpf file descriptor.
            То есть isc-dhcp пишет в дескриптор символьного устройства, не в сокет или куда, а именно в дескриптор /dev/bpf.
            Понял. Благодарю.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру