>[оверквотинг удален]
>
># Запрещаем всё остальное
>ipfw add 65530 deny all from any to any
>два прохода, но где - не пойму.. если в правилах указать
>направления, типа:
># выпускаем юзеров в инет
>ipfw add 30000 pipe 2 ip from any to 10.101.0.5 in
>ipfw add 30010 pipe 1 ip from 10.101.0.5 to any out
>
> то инет вообще перестаёт работать. Правила 30000 и 30010 срабатывают на внутреннем интерфейсе em0, по этому правильнее было бы писать
ipfw add 30000 pipe 2 ip from any to 10.101.0.5 out
ipfw add 30010 pipe 1 ip from 10.101.0.5 to any in
Как я понимаю надо ограничить ширину канала для 10.101.0.5 т.е. для одного Ip-адреса. И для этого одного адреса есть один пайп. Как результат указывать маску в конфиге пайпа не нужно.
Потом... так как у Вас написано, в пайпе 1 маска из конфига применяется к dst-ip, т.е. канал выделяется для каждого отдельного ипа на который идет соединение. С пайпом 2 все с точности до наобарот.
На заметку :
MASK SRC-IP/DST-IP mask - инвертированая маска. /24 - 0.255.255.255
однако /32 - 255.255.255.255, all - 0.0.0.0
ip1 ip2
1.1.1.1 1.1.2.1
mask src-ip/dst-ip 0.0.0.ff 0.0.0.ff
result 0.0.0.1 = 0.0.0.1 => одна труба
ip1 ip2
1.1.1.1 1.1.2.1
mask src-ip/dst-ip 0.0.ff.ff 0.0.ff.ff
result 0.0.1.1 <> 0.0.2.1 => разные трубы
Есть возможность указать сразу префикс сети, и для каждого ипа из этого префикса установить ширину канала:
Например:
ipfw pipe 1 config bw 64KB/s mask dst-ip 0xffffffff
ipfw add 50 pipe 1 ip from any to 10.0.0.0/24
При этом _каждый_ хост из диапазона 10.0.0.1-10.0.0.254 получит полосу
по 64KB/s, т.е. на каждый IP будет создана отдельная pipe.