на гейте строю файрвол с помощью ipfw. хочу ограничить количество коннектов наружу, из маскируемой сети, для чего использую limit src-addr.
пишу правила:$fwcmd add 4200 divert 8669 log logamount 10000 all from any to $oip in via $ifout
$fwcmd add 4976 divert 8669 all from 10.123.123.123 to any out via $ifout
$fwcmd add 4977 pipe 5 log logamount 10000 tcp from 10.123.123.123 to any via $ifin limit src-addr 5
$fwcmd add 4978 pipe 5 udp from 10.123.123.123 to any via $ifin
$fwcmd add 4979 pipe 5 log logamount 10000 all from any to 10.123.123.123 out via $ifin
$fwcmd pipe 5 config bw 128Kbit/s
$fwcmd add 5000 allow log logamount 100000 all from $oip to any out via $ifout
проверяю работу инета - фиг. запускаю tcpdump и вижу что с внешнего интерфейса пакеты уходят с адресом 10.123.123.123
смотрю на счетчик пакетов - по правилу №4976 пакеты не проходят. ставлю log пакетов и вижу
Oct 11 10:32:46 r1a /kernel: ipfw: 4977 Pipe 4 TCP 10.123.123.123:1263 194.67.67.194:80 in via rl1
Oct 11 10:32:46 r1a /kernel: ipfw: 4977 Pipe 4 TCP 10.123.123.123:1263 194.67.67.194:80 out via rl0
получается что пакет вместо 4976 проходит по 4977 правилу!
тогда я подумал что дело в net.inet.ip.fw.one_pass, но эта переменная установлена в 1.
попробовал убрать limit src-addr 5, и пакеты стали ходить как положено.
в чем косяк?