IPFW.Настройка шейпера

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Аватара пользователя
aTom
Сообщения: 7

IPFW.Настройка шейпера

Сообщение aTom »

Здравствуйте!
Есть сервер (FreeBSD 6) одним концом подсоеденён к ADSL-роутеру (172.16.1.1), смотрящим в инет, другим в локалку, состоящую из четырёх компов (192.168.1.2-5), пользователи через него должны попасть в инет. На нём стоит NAT. Пытаюсь организовать динамическое деление канала (256Kbit/s) в зависимости от количества активных в данный момент пользователей, но ничего не получается((

И так, всё по порядку:
перособрал ядро, включил следующие опции:

options IPFIREWALL
options IPFIREWALL_VERBOSEoptions IPFIREWALL_VERBOSE_LIMIT=10
options IPFIREWALL_FORWARD
options IPDIVERT
options DUMMYNET
options TCP_DROP_SYNFIN



теперь мои конфиги:

#####rc.conf

defaultrouter="172.16.1.1"
ifconfig_rl0="inet 172.16.1.3 netmask 255.255.0.0" #это внешний интерфейс, к ADSL-роутеру
ifconfig_vr0="inet 192.168.1.1 netmask 255.255.255.0" #это внутренний интерфейс, в локальную сеть
rpcbind_enable="YES"
sshd_enable="YES"
usbd_enable="YES"
router_enable="YES"
sendmail_enable="NONE"
firewall_enable="YES"
firewall_quiet="YES"
firewall_type="open"
#firewall_logging="YES"
firewall_script="/usr/local/billing/rc.firewall"
natd_enable="YES"
natd_interface="rl0"
gateway_enable="YES"

#####/usr/local/billing/rc.firewall

ipfw='sbin/ipfw -q'
${ipfw} -f flush
${ipfw} add divert natd all from any to any via rl0
${ipfw} add allow all from any to any

###### создаю скрипт rc.shaper
#делаю две очереди для входящего и исходящего трафика

ipfw -f pipe flush
ipfw -f queue flush
ipfw pipe 1 config bw 64Kbit/s queue 20
ipfw queue 1 config pipe 1 weight 50 queue 20 mask dst-ip 0xffffffff
ipfw queue 11 config pipe 1 weight 50 queue 20 mask src-ip 0xffffffff
ipfw add queue 1 ip from any to 192.168.1.2
ipfw add queue 11 ip from 192.168.1.2 to any
ipfw add queue 1 ip from any to 192.168.1.3
ipfw add queue 11 ip from 192.168.1.3 to any

#распределение трафика для начала осуществляю между двумя компами (192.168.1.2,3)
#скрипт проверочный, скорость пайпа в 64 Кбит/с делаю умышленно

# ./rc.shaper
Flushed all pipes.
Flushed all pipes.
00300 queue 1 ip from any to 192.168.1.2
00400 queue 11 ip from 192.168.1.2 to any
00500 queue 1 ip from any to 192.168.1.3
00600 queue 11 ip from 192.168.1.3 to any

# ipfw show
00100 21 6613 divert 8668 ip from any to any via rl0
00200 96 17538 allow ip from any to any
00300 0 0 queue 1 ip from any to 192.168.1.2
00400 0 0 queue 11 ip from 192.168.1.2 to any
00500 0 0 queue 1 ip from any to 192.168.1.3
00600 0 0 queue 11 ip from 192.168.1.3 to any
65535 6 416 deny ip from any to any

# ipfw pipe show
00001: 64.000 Kbit/s 0 ms 20 sl. 0 queues (1 buckets) droptail
q00001: weight 50 pipe 1 20 sl. 0 queues (64 buckets) droptail
q00011: weight 50 pipe 1 20 sl. 0 queues (64 buckets) droptail

Никакого деления канала, и тем белее динамического не происходит, работает один NAT.
скорость как была, так и осталась 256Кбит/с.

Буду благодарен, если ткнете в косяки, и поможете от них избавиться х избавиться
Спасибо сказали: