Вот выкладываю конфиг IPFW +Шейпер - Рабочий 100% провереный
также незабудте включть ./etc/sysctl.conf опцию - net.inet.ip.fw.one_pass=0
Здесть режется трафик на кажую машину:
Мир:
Download: 300Kbit/s
Upload: 128Kbit/s
Молдова:
Download: 2048Kbit/s
Upload: 128Kbit/s
vr0 - это внешний итерфэйс
vr1 -это внутренний итерфэйс
#!/bin/sh
# Очищаем pipe, table, queue
ipfw -q -f flush
ipfw -f pipe flush
ipfw -f table 2 flush
ipfw -f table 1 flush
ipfw -f queue -f
# Команда IPFW
cmd="ipfw -q"
# table 2 - сюда вносите вашу локальную сеть
ipfw table 2 add 192.168.0.0/24
# или так внесите те ip адреса каке вам надо добавля каждый раз ${t2} новый IP...
# смотри ниже
#t2="ipfw table 2 add"
#${t2} 192.168.0.10
#${t2} 192.168.0.5
#${t2} 192.168.0.4
#${t2} 192.168.0.7
# Здесь ниже предоставлены IP адреса у телемедии ( З.Ы может старые уже ), таким же образом можно добавить и для старнета и других ISP
t1="ipfw table 1 add"
${t1} 89.41.64.0/18
${t1} 89.36.255.0/24
${t1} 89.33.0.0/22
${t1} 89.28.0.0/17
${t1} 89.187.32.0/19
${t1} 89.149.64.0/18
${t1} 87.255.73.0/24
${t1} 87.255.64.0/19
${t1} 87.248.160.0/19
${t1} 86.124.160.0/24
${t1} 86.106.224.0/19
${t1} 86.106.208.0/20
${t1} 86.104.240.0/22
${t1} 83.218.192.0/19
${t1} 82.198.16.0/23
${t1} 81.180.64.0/20
${t1} 80.97.59.0/24
${t1} 80.97.58.0/24
${t1} 80.97.57.0/24
${t1} 80.97.56.0/24
${t1} 217.26.174.0/24
${t1} 217.26.173.0/24
${t1} 217.26.172.0/24
${t1} 217.26.168.0/24
${t1} 217.26.166.0/24
${t1} 217.26.161.0/24
${t1} 217.26.160.0/24
${t1} 217.26.160.0/20
${t1} 217.26.159.0/24
${t1} 217.26.158.0/24
${t1} 217.26.157.0/24
${t1} 217.26.156.0/24
${t1} 217.26.155.0/24
${t1} 217.26.154.0/24
${t1} 217.26.153.0/24
${t1} 217.26.152.0/24
${t1} 217.26.151.0/24
${t1} 217.26.150.0/24
${t1} 217.12.112.0/20
${t1} 212.56.192.0/19
${t1} 212.0.214.0/24
${t1} 212.0.211.0/24
${t1} 212.0.210.0/24
${t1} 212.0.207.0/24
${t1} 212.0.198.0/24
${t1} 212.0.197.0/24
${t1} 212.0.192.0/19
${t1} 195.22.224.0/19
${t1} 195.170.178.0/24
${t1} 195.138.99.0/24
${t1} 195.138.98.0/24
${t1} 195.138.97.0/24
${t1} 195.138.96.0/24
${t1} 195.138.96.0/20
${t1} 195.138.126.0/23
${t1} 195.138.120.0/23
${t1} 195.138.118.0/23
${t1} 195.138.107.0/24
${t1} 195.138.104.0/24
${t1} 195.138.103.0/24
${t1} 195.138.101.0/24
${t1} 195.138.100.0/24
${t1} 194.169.204.0/24
${t1} 194.102.152.0/23
${t1} 193.84.183.0/24
${t1} 193.243.132.0/24
${t1} 193.239.182.0/23
${t1} 193.226.65.0/24
${t1} 193.226.64.0/24
# Здесть пропускаем всё через внутренний интерфейс и локальный 127.0.0.1
$cmd add allow ip from any to any via vr1
$cmd add allow ip from any to any via lo0
#Сюда помещаем правила Uploada для мира и MD [b]Важно! правила Uploada строго перед NATD[/b]
#upload
$cmd add queue 1 ip from "table(2)" to not "table(1)" out xmit vr0
#upload MD
$cmd add queue 3 ip from "table(2)" to "table(1)" out xmit vr0
# Сам собственно и NATD: Заметка если вы используете в table2 таукю запись 192.168.0.0/24
# то можете скопировать правила NATD так как есть
# если нет, то в место "$cmd add divert natd ip from "table(2)" to any out xmit vr0"
# поставте "$cmd add divert natd ip from 192.168.0.0/24 to any out xmit vr0"
#
# В следующем правиле замените xxx.xxx.xxx.xxx на ваш внешний ip адрес
# "$cmd add divert natd ip from any to xxx.xxx.xxx.xxx in recv vr0"
#
$cmd add divert natd ip from "table(2)" to any out xmit vr0
$cmd add divert natd ip from any to xxx.xxx.xxx.xxx in recv vr0
# Пропускаем все от гейта и обратно
$cmd add allow ip from me to any
$cmd add allow ip from any to me
# Конфигурация самих труб (pipe)
# Здесь меняйте только bw допустим 300Kbit/s либо 2Mbit/s как кому надо
#upload WORLD
$cmd pipe 1 config bw 128Kbit/s queue 86 gred 0.002/10/30/0.1
$cmd queue 1 config pipe 1 queue 20KBytes gred 0.002/10/30/0.1 mask src-ip 0xffffffff
#download WORLD
$cmd pipe 2 config bw 300Kbit/s queue 86 gred 0.002/10/30/0.1
$cmd queue 2 config pipe 2 queue 20KBytes gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
#upload MOLDOVA
$cmd pipe 3 config bw 128Kbit/s queue 86 gred 0.002/10/30/0.1
$cmd queue 3 config pipe 3 queue 20Kbytes gred 0.002/10/30/0.1 mask src-ip 0xffffffff
#download MOLDOVA
$cmd pipe 4 config bw 2048Kbit/s queue 86 gred 0.002/10/30/0.1
$cmd queue 4 config pipe 4 queue 20Kbytes gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
#Сюда помещаем правила Download
#
#download
$cmd add queue 2 ip from not "table(1)" to "table(2)" in recv vr0
#download MD
$cmd add queue 4 ip from "table(1)" to "table(2)" in recv vr0
# А вот здесь добавлям правила для прохождения пакетов без них не будет работать
$cmd add allow all from "table(2)" to not "table(1)"
$cmd add allow all from "table(2)" to "table(1)"
$cmd add allow all from not "table(1)" to "table(2)"
$cmd add allow all from "table(1)" to "table(2)"
Вот и всё