Страница 1 из 1

ipfw pipe

Добавлено: 2007-10-11 20:16:32
squid
привет
есть безлимитный интернет, но поскольку он безлимитный все хотят много качать
в итоге получаются такие моменты что пытаешся пойти на любимый форум :D , а тебе болт большой причем
но когда никто не сидит в нете, хочется использовать канал на полную
пришло решение поделить канал
несколько труб не хочется создавать, поскольку те кто качает не смогут выйти за пределы трубы и будут качать с определенной скоростью
вот нашел решение с помощью веса пакета, хотелось бы услышать на сколько это кошерно и может существует более рабочий вариант, потому что этот мне не очень нравится, поскольку он висит на сетевухе что смотрит внутрь сети
пытался поставить на ng0 но там стоит нат, не работает с такими правилами
собственно настройки файервола:

Код: Выделить всё

#!/bin/sh
#
fwcmd="/sbin/ipfw -q"
inet_if="ng0" # смотрит в нет
pipe_if="xl0" # смотрит в локалку

my_ip="10.12.0.5,192.168.132.5" # мои айпи
proxy_ip="10.12.0.3"          # обычные пользователи
down_ip="192.168.71.0/24"  # те кто много качает

${fwcmd} flush
${fwcmd} pipe flush
${fwcmd} queue flush

${fwcmd} pipe 1 config bw 128Kbits # upload 
${fwcmd} pipe 2 config bw 512Kbits # download

${fwcmd} queue 1 config pipe 1 weight 60
${fwcmd} queue 11 config pipe 2 weight 60

${fwcmd} queue 2 config pipe 1 weight 30
${fwcmd} queue 21 config pipe 2 weight 30

${fwcmd} queue 3 config pipe 1 weight 10
${fwcmd} queue 31 config pipe 2 weight 10

${fwcmd} add queue 1 ip from $my_ip to any in via $pipe_if
${fwcmd} add queue 11 ip from any to $my_ip out via $pipe_if

${fwcmd} add queue 2 ip from $proxy_ip to any in via $pipe_if
${fwcmd} add queue 21 ip from any to $proxy_ip out via $pipe_if

${fwcmd} add queue 3 ip from $down_ip to any in via $pipe_if
${fwcmd} add queue 31 ip from any to $down_ip out via $pipe_if
# далее идет natd

Re: ipfw pipe

Добавлено: 2007-10-11 20:20:58
dikens3
Что именно не работает то?
ipfw pipe show не помогает?

Re: ipfw pipe

Добавлено: 2007-10-11 20:36:45
squid
все работает, только на xl0 а вот на ng0 не получается перенести
правила там работают только на исходящий трафик
а входящий никак нельзя прикрутить поскольку у него один айпи (natd)

====================
вообще интересует мнение all, кто сталкивался с pipe, может существует более рациональное решение?

Re: ipfw pipe

Добавлено: 2007-10-11 20:58:48
Alex Keda
я, помница по трубе на IP делал.
на свой - пошире :)

Re: ipfw pipe

Добавлено: 2007-10-12 8:23:17
squid
и еще такой вопрос, в эту трубу все попадут или кто первый попадет, а все остальные мимо ?

Re: ipfw pipe

Добавлено: 2007-10-12 8:28:37
Alex Keda
squid писал(а):и еще такой вопрос, в эту трубу все попадут или кто первый попадет, а все остальные мимо ?
дак я по IP делал

Re: ipfw pipe

Добавлено: 2007-10-12 8:34:38
squid
а если по этим правилам что я написал ?

Re: ipfw pipe

Добавлено: 2007-10-12 8:42:31
Alex Keda
squid писал(а):а если по этим правилам что я написал ?
а фиг знат.. :)
========
в подписи, если правильно, то последнее слово должно быть 'хочИт', поскольку первое из рифмы, через И :)

Re: ipfw pipe

Добавлено: 2007-10-12 8:46:42
squid
дописал log
вроде отрабатывает
посмотрим, будет ли падать канал
==========================
звыняюсь за плагиат, но фраза прикольная ;)

Re: ipfw pipe

Добавлено: 2007-10-12 8:59:24
Alex Keda
хе - боян боянов :)

Re: ipfw pipe

Добавлено: 2007-10-12 9:23:26
squid
все новое - это хорошо забытое старое :D

Re: ipfw pipe

Добавлено: 2007-10-12 10:18:03
dikens3
Есть к примеру такое:
${fwcmd} pipe 1 config bw 700Kbit/s
${fwcmd} queue 1 config pipe 1 queue 50 mask src-ip 0xffffffff
В работе выглядит так:

Код: Выделить всё

00001: 700.000 Kbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
q00001: weight 1 pipe 1   50 sl. 30 queues (64 buckets) droptail
    mask: 0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
 2 ip     192.168.27.213/0             0.0.0.0/0     1405   155838  0    0   0
 4 ip      192.168.27.22/0             0.0.0.0/0      144     6912  0    0   0
 6 ip      192.168.27.23/0             0.0.0.0/0     5017   654673  0    0   0
 8 ip     192.168.27.176/0             0.0.0.0/0     7471   786432  0    0   0
 10 ip     192.168.27.177/0             0.0.0.0/0     14392  1534411  0    0   0
 12 ip     192.168.27.114/0             0.0.0.0/0     1128   114294  0    0   0
 14 ip     192.168.27.211/0             0.0.0.0/0     14136  1627718  0    0   0
 16 ip      192.168.27.28/0             0.0.0.0/0      130     7112  0    0   0
 18 ip     192.168.27.157/0             0.0.0.0/0     2768   260571  0    0   0
 20 ip     192.168.27.254/0             0.0.0.0/0      359    41884  0    0   0
 22 ip     192.168.27.223/0             0.0.0.0/0     1877   146785  0    0   0
 24 ip      192.168.27.24/0             0.0.0.0/0       91     6275  0    0   0
 26 ip     192.168.27.153/0             0.0.0.0/0     11131  1094149  0    0   0
 28 ip     192.168.27.154/0             0.0.0.0/0      306    62114  0    0   0
 30 ip      192.168.27.27/0             0.0.0.0/0     20421  2199838  0    0   0
 32 ip       192.168.27.4/0             0.0.0.0/0     34659  3136810  0    0   0
 34 ip     192.168.27.197/0             0.0.0.0/0     1544    68389  0    0   0
 36 ip     192.168.27.102/0             0.0.0.0/0      138     6284  0    0   0
 38 ip     192.168.27.199/0             0.0.0.0/0       11      528  0    0   0
 40 ip     192.168.27.224/0             0.0.0.0/0     34572  1471885  0    0   0
 42 ip     192.168.27.161/0             0.0.0.0/0     13356  1735781  0    0  27
 44 ip       192.168.27.2/0             0.0.0.0/0     5734   397062  0    0   0
 46 ip       192.168.27.3/0             0.0.0.0/0      284    16083  0    0   0
 48 ip     192.168.27.204/0             0.0.0.0/0     53485  5080881  0    0   0
 50 ip     192.168.27.109/0             0.0.0.0/0     24360  2962144  0    0   0
 52 ip     192.168.27.110/0             0.0.0.0/0     33815  4403138  0    0   0
 56 ip     192.168.27.200/0             0.0.0.0/0     1200   139505  0    0   0
 58 ip     192.168.27.201/0             0.0.0.0/0     60007  6778468  0    0   0
 60 ip     192.168.27.202/0             0.0.0.0/0     29107  3058431  0    0   0
 62 ip     192.168.27.203/0             0.0.0.0/0     5099   625080  0    0   0
Вот и делят на всех.

Re: ipfw pipe

Добавлено: 2007-10-12 20:32:06
pimlab

Код: Выделить всё

#!/bin/sh 

 fwcmd="/sbin/ipfw -q" 

${fwcmd} -f flush
${fwcmd} -f pipe flush
${fwcmd} -f queue flush

#### vsjo v odnu trubu fxp0
${fwcmd} pipe 1 config bw 0 queue 100 mask src-ip 0xffffffff gred 0.002/10/60/0.1
${fwcmd} pipe 2 config bw 0 queue 100 mask dst-ip 0xffffffff gred 0.002/10/60/0.1
#
${fwcmd} add pass  all from any to any via lo0
${fwcmd} add allow all from any to any via xl0

############################################################################
#upload
${fwcmd} queue 1 config pipe 1 weight 50 queue 100 mask src-ip 0xffffffff gred 0.002/10/60/0.1
${fwcmd} queue 2 config pipe 2 weight 50 queue 100 mask dst-ip 0xffffffff gred 0.002/10/60/0.1

#upload 
${fwcmd} add queue 1 all from 192.168.108.0/24{2-30} to any  in recv fxp0
#download
${fwcmd} add queue 2 all from any to 192.168.108.0/24{2-30} out via fxp0
#proxy
${fwcmd} add fwd 127.0.0.1,3128 tcp from 192.168.108.0/24{2-30} to any 8000-8100,79-81,1080,3128  via fxp0 limit dst-addr 320

${fwcmd} add allow all from any to 192.168.108.0/24{2-30} out via fxp0 limit dst-addr 320
${fwcmd} add allow all from 192.168.108.0/24{2-30} to any  in via fxp0 limit src-addr 320

######################################################################################################
Приветствую!
вот собственно мой конфиг.
возможно кому будет интересно.
а вот меня интересует как же работает труба , если у меня нет лимитов на download и upload ?
Цель просто поделить поровну , чтоб всем хватило.
У моего провайдера нет стабильной скорости и сколько я не наблюдаю за трубами , то непонимаю всётаки разруливает она то что есть всем поровну или нет .... Просветите пожалуста

Re: ipfw pipe

Добавлено: 2007-10-12 22:31:58
dikens3
Вывод ipfw pipe show смотри. В моём случае(выше) все делят 700Кbit/sec.
Если будет качать один, у него будет 700Кбит.

Re: ipfw pipe

Добавлено: 2007-10-13 11:14:56
squid
проверил, вроде тоже попадают все только в ipfw pipe show попадает первый айпи
включал логирование - туда все

Re: ipfw pipe

Добавлено: 2007-10-13 11:17:06
dikens3
Значит и ограничение работает только на одного.
Пробуй src-ip 0xffffffff или dst-ip 0xffffffff

Re: ipfw pipe

Добавлено: 2007-10-13 11:25:32
squid
уже, все попадают вот только

Код: Выделить всё

16 ip      192.168.27.28/0             0.0.0.0/0      130     7112  0    0   0
0.0.0.0/0 - здесь и должны быть
сейчас у меня там айпи ну то есть без src-ip и dst-ip или это значит что на любой адрес ?

Re: ipfw pipe

Добавлено: 2007-10-13 11:34:39
squid
вроде работает
буду тестить
спс всем :)

Re: ipfw pipe

Добавлено: 2007-10-13 12:20:20
dikens3
сейчас у меня там айпи ну то есть без src-ip и dst-ip или это значит что на любой адрес ?
Именно так.