Здравствуйте.
В процессе использования nodeny появилась необходимость натить не pf-ом, а ipfw.
Я немного подкорректировал конфиг ipfw для того, чтобы он натил. И он прекрасно с этим справляется, т.е. маскирование и демаскирование производится правильно, однако после запуска на сервере заметил такую вещь: у пользователей перестали работать ограничения по тарифам, т.е. если тариф 2мбит/с в реальности он около 20, если не больше. В связи с этим вопрос: где я ошибся правилах?
P.S. Вопрос причины ухода от pf-a не обсуждается. Интересует, только верный конфиг ipfw для ната.
#!/bin/sh -
f='/sbin/ipfw'
ifOut='em0'
${f} -f flush
${f} add 10 pass gre from any to any
${f} add 20 allow udp from any to me 161,514
${f} add 21 allow udp from me 161,514 to any
${f} add 40 allow tcp from any to me 1723
${f} add 50 allow tcp from any to me 22
${f} add 51 allow tcp from me 22 to any
${f} nat 1 config log if ${ifOut} same_ports
${f} add 60 deny all from 192.168.0.0/16 to any in via ${ifOut}
${f} add 61 deny all from 172.16.0.0/12 to any in via ${ifOut}
${f} add 63 deny all from 10.0.0.0/8 to any in via ${ifOut}
${f} add 64 deny all from 127.0.0.1/8 to any in via ${ifOut}
${f} add 66 deny all from 0.0.0.0/8 to any in via ${ifOut}
${f} add 67 deny all from 169.254.0.0/16 to any in via ${ifOut}
${f} add 68 deny all from 192.0.2.0/24 to any in via ${ifOut}
${f} add 69 deny all from 204.152.64.0/23 to any in via ${ifOut}
${f} add 70 deny all from 224.0.0./3 to any in via ${ifOut}
${f} add 110 allow ip from any to any via lo0
${f} add 120 skipto 1000 ip from me to any
${f} add 130 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
${f} add 160 skipto 2000 ip from any to me
${f} add 200 skipto 500 ip from any to any via ${ifOut}
${f} add 300 skipto 4500 ip from any to any in
${f} add 400 skipto 450 ip from any to any recv ${ifOut}
${f} add 420 divert 1 ip from any to any
${f} add 450 divert 2 ip from any to any
${f} add 490 allow ip from any to any
${f} add 500 skipto 32490 ip from any to any in
${f} add 510 divert 1 ip from any to any
${f} add 530 nat 1 ip from any to any out xmit ${ifOut}
${f} add 540 allow ip from any to any
${f} add 1000 allow udp from any 53,7723 to any
${f} add 1010 allow tcp from any to any setup keep-state
${f} add 1020 allow udp from any to any keep-state
${f} add 1100 allow ip from any to any
${f} add 2000 check-state
${f} add 2010 skipto 32490 ip from any to any in recv ${ifOut}
${f} add 2020 allow icmp from any to any
${f} add 2030 allow tcp from any to any 80,443
${f} add 2050 deny ip from any to any via ${ifOut}
${f} add 2060 allow udp from any to any 53,7723
${f} add 2100 deny ip from any to any
${f} add 32480 deny ip from any to any
${f} add 32490 nat 1 ip from any to any in recv ${ifOut}