Шейпинг канала по правилам фаервола.
Необходимо подключить две опции в ядре FreeBSD: DUMMYNET и FIREWALL.
Есть два пути загрузить модули и скомпилировать ядро с необходимыми опциями.
Загрузка модулей происходить следующим образом:

kldload ipfw
kldload dummynet

*не забываем о том что если у вас не прописано никаких правил для фаервола — то влючится правило по умолчанию, которое все блокирует и вы можете потерять доступ к удаленной машине.

Второй путь реализуется следующим образом.

cd /usr/src/sys/i386/conf
cp GENERIC HEART (создаем свою сборку ядра, если её не было)
ee HEART (редактируем конфигурационный файл ядра)

Добавляем следующие строчки:

options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=1000
options IPFILTER
options DUMMYNET (работа с шэйпером)
options IPDIVERT

Собираем конфигурацию

config HEART
cd ../compile/HEART
make cleandepend
make depend
make
make install

Далее перезагружаемся: restart
для разграничение входящего и исходящего потока

oif=fxp0            # имя внешнего интерфейса
bw=100Kbit/s            # его ширина
ipfw pipe 1 config bw $bw   # исходящая труба
ipfw pipe 2 config bw $bw   # входящая труба
ipfw queue 1 config pipe 1 mask src-ip 0xffffffff # per-ip fair queueing
ipfw queue 2 config pipe 2 mask dst-ip 0xffffffff
ipfw add 1000 queue 1 ip from any to any via $oif out
ipfw add 1010 queue 2 ip from any to any via $oif in

для симметричного зарезания скорости

ipfw pipe 1 config bw 100Kbit/s
ipfw queue 1 config pipe 1 weight 50
ipfw add 1000 queue 1 ip from any to 192.168.0.50
Tagged with:  

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>