gelraen
23.10.2011 13:49 imax
Оказалось что если в системе работают ipfw и ещё один файрвол, то второй может проверять один и тот же пакет два раза. Примерный сценарий:
1) ip_input или ip_output вызывают pfil_run_hooks, который по очереди вызывает хуки файрволов
2) когда очередь доходит до ipfw и пакет попадает в divert/netgraph/dummynet, то дальнейшая обработка в pfil_run_hooks останавливается
3) после возврата из divert/netgraph/dummynet пакет просто _повторно_ скармливается в ip_input/ip_output, но имеет тег от ipfw, в котором указан номер правила с которого продолжать обработку
4) остальные файрволы об этом теге ничего не знают и проверяют пакет ещё раз, ничего не подозревая.