За основу взял свой собственный конфиг написанный для FreeBSD 9 и у спешно на нем отработавший.
Код: Выделить всё
#!/bin/sh
ipfw -f flush
ipfw -f pipe flush
ipfw -f queue flush
ipfw -f table 1 flush
ipfw -f table 2 flush
cmd="ipfw -q"
ex_face0="em0"
#<<< ex_face1="em"
in_face="em1"
lo_face="lo0"
ng_face="ng*"
# -------- raspredelenie userov
pool0="192.169.128.0/24{131-137}"
#<<< pool1="192.168.0.0/24{138-143}"
# --------- out sheip table(1)
ipfw table 1 add 192.169.128.131 1
ipfw table 1 add 192.169.128.132 1
# --------- in sheip table(2)
ipfw table 2 add 192.169.128.131 2
ipfw table 2 add 192.169.128.132 2
# --------- interfaces ne ogranichenie pravilami (lo0 i local interface)
#<<< $cmd add 00100 reass ip from any to any
$cmd add 00101 allow all from any to any via $lo_face
$cmd add 00111 allow tcp from any to me 1723 in via $in_face
$cmd add 00112 allow tcp from me 1723 to any out via $in_face
$cmd add 00113 allow tcp from any to me 22 in via $in_face
$cmd add 00114 allow tcp from me 22 to any out via $in_face
$cmd add 00115 allow gre from any to me in via $in_face
$cmd add 00116 allow gre from me to any out via $in_face
$cmd add 00119 allow udp from any to me 161
$cmd add 00120 allow udp from me 161 to any
$cmd add 00121 allow all from any to me 137-139,445
$cmd add 00122 allow all from me 137-139,445 to any
# --------- pravila dlya IN traffica na vneshnih interfaces
$cmd add 01010 skipto 01040 ip from $pool0 to any in recv $ng_face
#<<< $cmd add 01011 skipto 01060 ip from $pool1 to any in recv $ng_face
$cmd add 01011 deny all from any to any in via $in_face
$cmd add 01040 setfib 0 ip from any to any in recv $ng_face keep-state
$cmd add 01050 allow ip from any to any via $ng_face
#<<< $cmd add 01060 setfib 1 ip from any to any in recv $ng_face keep-state
#<<< $cmd add 01070 allow ip from any to any via $ng_face
$cmd pipe 1 config bw 2048Kbit/s queue 80 mask src-ip 0xffffffff gred 0.002/13/39/0.1
$cmd pipe 2 config bw 2048Kbit/s queue 80 mask dst-ip 0xffffffff gred 0.002/13/39/0.1
$cmd nat 1 config log if $ex_face0 same_ports reset deny_in
#<<< $cmd nat 2 config log if $ex_face1 same_ports reset deny_in
$cmd add 10160 pipe tablearg ip from "table(1)" to any out xmit $ex_face0
$cmd add 10170 nat 1 ip from any to any via $ex_face0
$cmd add 10180 pipe tablearg ip from any to "table(2)" in recv $ex_face0
#<<< $cmd add 10190 pipe tablearg ip from "table(1)" to any out xmit $ex_face1
#<<< $cmd add 10200 nat 2 ip from any to any via $ex_face1
#<<< $cmd add 10210 pipe tablearg ip from any to "table(2)" in recv $ex_face1
$cmd add 10220 allow all from any to any
$cmd add 65534 deny log logamount 1000000 all from any to anyСейчас же пытаюсь все это дело организовать на VMware Workstation. Организовал сеть из виртуального шлюза на FreeBSD 10 и виртуальныех клиентов Ubuntu 13.04 соединенных между собой и изолированных от хост системы.
Конфиг не изменился за исключением параметров труб, сделал так
Код: Выделить всё
$cmd pipe 1 config bw 512Kbit/s queue 20 mask src-ip 0xffffffff gred 0.002/3/15/0.1
$cmd pipe 2 config bw 512Kbit/s queue 20 mask dst-ip 0xffffffff gred 0.002/3/15/0.1
ipfw pipe show

Вроде расчитал все верно, но пакеты все равно дропаються. Подскажите в чем косячу?
Всем спасибо.
