Отписал на форуме http://www.obsd.ru и дублирую сдесь ( если нельзя указывать линки на другие ресурсы прошу простить по первому разу )
Некоторое время назад задумал на шлюзе разделить внутренний и внешний трафик, как я думал тривиальная задача
в результате наваял следующий конфиг :
ext_if="xl0"
int_if="rl0"
table <trast> { 192.168.0.111, 192.168.0.50, 192.168.0.93 }
set block-policy drop
set skip on lo0
set require-order yes
set optimization normal
altq on $int_if cbq bandwidth 100Mb queue { net_in, lan_in }
queue net_in cbq bandwidth 256Kb { d, x, a }
queue d cbq ( default, borrow, red ) bandwidth 34%
queue x cbq ( borrow, red ) bandwidth 33%
queue a cbq ( borrow, red ) bandwidth 33%
queue lan_in bandwidth 90Mb cbq
################## NAT #################
nat on $ext_if from <trast> to any -> $ext_if
block in
block out
############# INTERNAL NET #############
pass in quick on $int_if from <trast> to 192.168.0.112 keep state queue lan_in
############# TRAST NET ##############
pass in on $int_if from 192.168.0.111 to { $ext_if, !192.168.0.112 } keep state queue d
pass in on $int_if from 192.168.0.50 to { $ext_if, !192.168.0.112 } keep state queue x
pass in on $int_if from 192.168.0.93 to { $ext_if, !192.168.0.112 } keep state queue a
pass out on $ext_if from $ext_if to any keep state
pass out on $int_if from $int_if to any keep state
результат приятно поразил за одним исключением, дочерние очереди ( d x a )не заимствовали полосу у родительской ( net_in ) после недели неудачных экспириментов, перечитав ещё раз форум на www.obsd.ru написал конфиг практически 1 в 1 как у уважаемого lector'a ( 2 пост http://www.obsd.ru/cgi-bin/forum.cgi?op=view_thread;board=5;thread=474 ) конфиг с виртуальной машины но различия только в именах ифейсов и айпишках, также перепроверялся и на реальной машине
ext_if="pcn1"
int_if="pcn0"
table <trast> { 192.168.136.1, 192.168.136.50, 192.168.136.93 }
set block-policy drop
set skip on lo0
set require-order yes
set optimization normal
altq on $int_if tbrsize 1 cbq bandwidth 100Mb queue { net_in, lan_in }
queue net_in bandwidth 256Kb { d, x, a }
queue d bandwidth 25% priority 2 cbq(borrow)
queue x bandwidth 25% priority 1 cbq(borrow)
queue a bandwidth 50% priority 4 cbq(borrow)
queue lan_in bandwidth 90Mb cbq(default)
################## NAT #################
nat on $ext_if from <trast> to any -> $ext_if
pass in
pass out
############# INTERNAL NET #############
pass out quick on $int_if from ($int_if) to <trast> queue lan_in
############# TRAST NET ##############
pass out on $int_if from any to 192.168.136.1 queue d
pass out on $int_if from any to 192.168.136.50 queue x
pass out on $int_if from any to 192.168.136.93 queue a
pass out on $ext_if from $ext_if to any keep state
pass out on $int_if from $int_if to any keep state
результат тотже, незаимствуется полоса
Гдето я ошибаюсь, понять где немогу, помогите плз, вера в волшебный бубен практически утеряна
PS. OpenBSD 4.0 / i386
Некоторое время назад задумал на шлюзе разделить внутренний и внешний трафик, как я думал тривиальная задача
в результате наваял следующий конфиг :
ext_if="xl0"
int_if="rl0"
table <trast> { 192.168.0.111, 192.168.0.50, 192.168.0.93 }
set block-policy drop
set skip on lo0
set require-order yes
set optimization normal
altq on $int_if cbq bandwidth 100Mb queue { net_in, lan_in }
queue net_in cbq bandwidth 256Kb { d, x, a }
queue d cbq ( default, borrow, red ) bandwidth 34%
queue x cbq ( borrow, red ) bandwidth 33%
queue a cbq ( borrow, red ) bandwidth 33%
queue lan_in bandwidth 90Mb cbq
################## NAT #################
nat on $ext_if from <trast> to any -> $ext_if
block in
block out
############# INTERNAL NET #############
pass in quick on $int_if from <trast> to 192.168.0.112 keep state queue lan_in
############# TRAST NET ##############
pass in on $int_if from 192.168.0.111 to { $ext_if, !192.168.0.112 } keep state queue d
pass in on $int_if from 192.168.0.50 to { $ext_if, !192.168.0.112 } keep state queue x
pass in on $int_if from 192.168.0.93 to { $ext_if, !192.168.0.112 } keep state queue a
pass out on $ext_if from $ext_if to any keep state
pass out on $int_if from $int_if to any keep state
результат приятно поразил за одним исключением, дочерние очереди ( d x a )не заимствовали полосу у родительской ( net_in ) после недели неудачных экспириментов, перечитав ещё раз форум на www.obsd.ru написал конфиг практически 1 в 1 как у уважаемого lector'a ( 2 пост http://www.obsd.ru/cgi-bin/forum.cgi?op=view_thread;board=5;thread=474 ) конфиг с виртуальной машины но различия только в именах ифейсов и айпишках, также перепроверялся и на реальной машине
ext_if="pcn1"
int_if="pcn0"
table <trast> { 192.168.136.1, 192.168.136.50, 192.168.136.93 }
set block-policy drop
set skip on lo0
set require-order yes
set optimization normal
altq on $int_if tbrsize 1 cbq bandwidth 100Mb queue { net_in, lan_in }
queue net_in bandwidth 256Kb { d, x, a }
queue d bandwidth 25% priority 2 cbq(borrow)
queue x bandwidth 25% priority 1 cbq(borrow)
queue a bandwidth 50% priority 4 cbq(borrow)
queue lan_in bandwidth 90Mb cbq(default)
################## NAT #################
nat on $ext_if from <trast> to any -> $ext_if
pass in
pass out
############# INTERNAL NET #############
pass out quick on $int_if from ($int_if) to <trast> queue lan_in
############# TRAST NET ##############
pass out on $int_if from any to 192.168.136.1 queue d
pass out on $int_if from any to 192.168.136.50 queue x
pass out on $int_if from any to 192.168.136.93 queue a
pass out on $ext_if from $ext_if to any keep state
pass out on $int_if from $int_if to any keep state
результат тотже, незаимствуется полоса
Гдето я ошибаюсь, понять где немогу, помогите плз, вера в волшебный бубен практически утеряна
PS. OpenBSD 4.0 / i386