Автор Тема: рутер+шейпър  (Прочетена 10815 пъти)

k4BIG

  • Напреднали
  • *****
  • Публикации: 133
    • Профил
рутер+шейпър
« Отговор #30 -: Sep 13, 2007, 19:31 »
Ами като цяло избора ти не е от най-добрите.Дебиан като втора дистрибуция да ,но за първа не мисля ,че е добре.Учи на лоши навици с тази си пакетна система и етц.

А по въпроса.Смени дистрото на FreeBSD и разгледаи http://www.openbsd.org/faq/pf/.

Iptables и TC на едно.Лесно удобно красиво и завършено нещо.Плаче някои да го ползва.

Аз ползвам Дебиан нищо ,че препоръчвам друго.Просто мисля ,че доста зор ще видиш с iptables и особено TC.А да ползваш скриптове за направата му е като да слагаш презерватив.Пак е добре АМА може и по добре
Активен

Човешко е да се греши, но за да се объркат съвсем нещата е необходим компютър.

h7d8

  • Напреднали
  • *****
  • Публикации: 197
  • Distribution: Debian;Ubuntu
  • Window Manager: Gnome
    • Профил
рутер+шейпър
« Отговор #31 -: Sep 13, 2007, 22:59 »
С този пост ме прати в тъча. '<img'> Без думи.
Активен

arda_kj

  • Напреднали
  • *****
  • Публикации: 631
  • Distribution: Debian Sid/Unstable; Ubuntu 12.04
  • Window Manager: Gnome/KDE
    • Профил
рутер+шейпър
« Отговор #32 -: Sep 13, 2007, 23:36 »
Цитат
Учи на лоши навици с тази си пакетна система и етц.

Ако Дебиана учи на лоши навици... ще отида да се застрелям някъде '<img'>.
Активен

Debian Sid/Unstable; Ubuntu 12.04
"За да открием истината, е нужно поне веднъж в живота си да подложим всичко на съмнение" - Р. Декарт

edmon

  • Гост
рутер+шейпър
« Отговор #33 -: Sep 14, 2007, 00:15 »
явно лошите навици са всичко да работи както го очакваш и да няма нужда да променяш кой знае какво.
...
а к'ъв лош,лош навик е да знаеш, че колата ти винаги пали!!!!.
Активен

bnight

  • Напреднали
  • *****
  • Публикации: 313
  • Distribution: Ubuntu 8.10
  • Window Manager: KDE 3.5.10
    • Профил
    • WWW
рутер+шейпър
« Отговор #34 -: Sep 14, 2007, 00:19 »
Цитат (arda_kj @ Сеп. 14 2007,00:36)
Цитат
Учи на лоши навици с тази си пакетна система и етц.

Ако Дебиана учи на лоши навици... ще отида да се застрелям някъде '<img'>.

По добре деиствай че дебиан наистина учи на много лоши навици. Като например да не може да се компилира от сорс. Други са че повечето хора и идея си нямат кое къде отива след инсталацията от пакет а и не си правят труда да проверяват. И все пак Дебиан си е Дебиан.
Активен

Registered Linux user: 473460
http://skyhost.bg - Хостинг и Домейни

edmon

  • Гост
рутер+шейпър
« Отговор #35 -: Sep 14, 2007, 00:25 »
Цитат (h7d8 @ Сеп. 13 2007,04:46)
Цитат на: edmon,Сеп. 13 2007,02:53
htb:

Примерен код

#!/bin/bash

/root/manage/htb/htb.batch $1 > /tmp/shaper
/sbin/tc -force -batch /tmp/shaper



тва e:
htb.batch

 
Примерен код

#!/usr/bin/php -q
<?php
#qdisc add dev eth0 parent 1:1000 handle 1000 sfq perturb 10
#qdisc add dev eth1 parent 1:1000 handle 1000 sfq perturb 10
#qdisc add dev eth1 parent 1:2000 handle 2000 sfq perturb 10
#qdisc add dev eth1 parent 1:6000 handle 6000 sfq perturb 10


$tc_root =<<<TCROOT
qdisc del dev eth0 root
qdisc add dev eth0 root handle 1 htb default 1000 r2q 3
class add dev eth0 parent 1: classid 1:1000 htb rate 100Mbit ceil 100Mbit quantum 2000
qdisc add dev eth0 parent 1:1000 handle 1000 sfq perturb 10

qdisc del dev eth1 root
qdisc add dev eth1 root handle 1 htb default 1000 r2q 3
class add dev eth1 parent 1: classid 1:1000 htb rate 100Mbit ceil 100Mbit quantum 2000
qdisc add dev eth1 parent 1:1000 handle 1000 sfq perturb 10

class add dev eth1 parent 1: classid 1:2000 htb rate 11Mbit ceil 11Mbit quantum 2000

class add dev eth1 parent 1: classid 1:6000 htb rate 50Mbit ceil 50Mbit quantum 2000

class add dev eth0 parent 1: classid 1:6000 htb rate 11Mbit ceil 11Mbit quantum 2000


TCROOT;

#upload
for($i=2;$i<501;$i++){
$y=2000+$i;
$tc_upload .=<<<TCUPLOAD
class add dev eth0 parent 1: classid 1:$y htb rate 512kbit
qdisc add dev eth0 parent 1:$y handle $y sfq perturb 10
filter add dev eth0 parent 1:0 protocol ip prio 200 handle $i fw classid 1:$y

TCUPLOAD;
}

$MYSQL_SERVER="localhost:3306";
$MYSQL_USER="root";
$MYSQL_PASS="";
$MYSQL_BASE="accounting";

$db = mysql_connect ($MYSQL_SERVER,$MYSQL_USER,$MYSQL_PASS);
mysql_select_db($MYSQL_BASE,$db);

$sql="select distinct clients.id as client,clients.ipaddr as ipaddr,tarifs.* from tarifs,clients where clients.tarifa=tarifs.name";
$sql_q=mysql_query($sql);

$num=2001;
$num1=2001;
$num2=6001;
while($arr=mysql_fetch_array($sql_q)){
$coef=$argv[1];
if($coef<1) $coef=0;


$rate_int=$arr[int_in_rate];
$ceil_int=$ceil_int."Kbit";


if($ipaddress!=""){

#qdisc add dev eth1 parent 1:$num handle $num sfq perturb 10
#qdisc add dev eth1 parent 1:$num2 handle $num2 sfq perturb 10


$tc_download .=<<<TCDOWNLOAD

class add dev eth1 parent 1:2000 classid 1:$num htb rate $rate_int ceil $ceil_int quantum 2000
filter add dev eth1 parent 1:0 protocol ip prio $prio u32 match ip dst $ipaddress classid 1:$num
qdisc add dev eth1 parent 1:$num handle $num sfq perturb 10

TCDOWNLOAD;

$num++;
$num2++;

}
}
echo $tc_root;
echo $tc_upload;
echo $tc_download;

$tc=$tc_root.$tc_upload.$tc_download;
?>



Така.
Общо взето.
Взимаш това чудо дето се казва htb.batch.
И се опитваш да разбереш кое какво е.
Като стигнеш до някъде все пак питай пак.

От тук от там ми става ясно макар ,че не толкова разбирам от всичко това. '<img'> Мисля ,обаче че това няма възможност да ограничава конкретно зададени айпита -скороста за сваляне и за качване или съм тръгнал в погрешна посока.filter add dev eth0 parent 1:0 protocol ip prio 200 handle $i fw classid 1:$y

filter add dev eth1 parent 1:0 protocol ip prio $prio u32 match ip dst $ipaddress classid 1:$num

тези два филтъра ако си забелязъл имат променливи на единиа пише fw classid 1:$y което по мое скормно мнение се съобразява с маркировката на един ИП адрес.

Другото има променлива $ipaddress т.е. ..това нещо -  целия скрипт, изпълнява заявка към mysql. Прочита каквото му е нужно и изплюва много на брой команди за tc.

Друго да не ти е ясно.?

Маркировката изглезда горе долу така:
....
-A POSTROUTING -s 192.168.1.2  -o eth0 -j MARK --set-mark 0x2
-A POSTROUTING -s 192.168.1.8  -o eth0 -j MARK --set-mark 0x8
-A POSTROUTING -s 192.168.1.9 -o eth0 -j MARK --set-mark 0x9
-A POSTROUTING -s 192.168.1.10 -o eth0 -j MARK --set-mark 0xa
-A POSTROUTING -s 192.168.1.11 -o eth0 -j MARK --set-mark 0xb
-A POSTROUTING -s 192.168.1.12 -o eth0 -j MARK --set-mark 0xc
-A POSTROUTING -s 192.168.1.13 -o eth0 -j MARK --set-mark 0xd

....
Активен

h7d8

  • Напреднали
  • *****
  • Публикации: 197
  • Distribution: Debian;Ubuntu
  • Window Manager: Gnome
    • Профил
рутер+шейпър
« Отговор #36 -: Sep 14, 2007, 12:58 »
Цитат (edmon @ Сеп. 14 2007,00:25)
Цитат на: h7d8,Сеп. 13 2007,04:46
Цитат на: edmon,Сеп. 13 2007,02:53
htb:

Примерен код

#!/bin/bash

/root/manage/htb/htb.batch $1 > /tmp/shaper
/sbin/tc -force -batch /tmp/shaper



тва e:
htb.batch

 
Примерен код

#!/usr/bin/php -q
<?php
#qdisc add dev eth0 parent 1:1000 handle 1000 sfq perturb 10
#qdisc add dev eth1 parent 1:1000 handle 1000 sfq perturb 10
#qdisc add dev eth1 parent 1:2000 handle 2000 sfq perturb 10
#qdisc add dev eth1 parent 1:6000 handle 6000 sfq perturb 10


$tc_root =<<<TCROOT
qdisc del dev eth0 root
qdisc add dev eth0 root handle 1 htb default 1000 r2q 3
class add dev eth0 parent 1: classid 1:1000 htb rate 100Mbit ceil 100Mbit quantum 2000
qdisc add dev eth0 parent 1:1000 handle 1000 sfq perturb 10

qdisc del dev eth1 root
qdisc add dev eth1 root handle 1 htb default 1000 r2q 3
class add dev eth1 parent 1: classid 1:1000 htb rate 100Mbit ceil 100Mbit quantum 2000
qdisc add dev eth1 parent 1:1000 handle 1000 sfq perturb 10

class add dev eth1 parent 1: classid 1:2000 htb rate 11Mbit ceil 11Mbit quantum 2000

class add dev eth1 parent 1: classid 1:6000 htb rate 50Mbit ceil 50Mbit quantum 2000

class add dev eth0 parent 1: classid 1:6000 htb rate 11Mbit ceil 11Mbit quantum 2000


TCROOT;

#upload
for($i=2;$i<501;$i++){
$y=2000+$i;
$tc_upload .=<<<TCUPLOAD
class add dev eth0 parent 1: classid 1:$y htb rate 512kbit
qdisc add dev eth0 parent 1:$y handle $y sfq perturb 10
filter add dev eth0 parent 1:0 protocol ip prio 200 handle $i fw classid 1:$y

TCUPLOAD;
}

$MYSQL_SERVER="localhost:3306";
$MYSQL_USER="root";
$MYSQL_PASS="";
$MYSQL_BASE="accounting";

$db = mysql_connect ($MYSQL_SERVER,$MYSQL_USER,$MYSQL_PASS);
mysql_select_db($MYSQL_BASE,$db);

$sql="select distinct clients.id as client,clients.ipaddr as ipaddr,tarifs.* from tarifs,clients where clients.tarifa=tarifs.name";
$sql_q=mysql_query($sql);

$num=2001;
$num1=2001;
$num2=6001;
while($arr=mysql_fetch_array($sql_q)){
$coef=$argv[1];
if($coef<1) $coef=0;


$rate_int=$arr[int_in_rate];
$ceil_int=$ceil_int."Kbit";


if($ipaddress!=""){

#qdisc add dev eth1 parent 1:$num handle $num sfq perturb 10
#qdisc add dev eth1 parent 1:$num2 handle $num2 sfq perturb 10


$tc_download .=<<<TCDOWNLOAD

class add dev eth1 parent 1:2000 classid 1:$num htb rate $rate_int ceil $ceil_int quantum 2000
filter add dev eth1 parent 1:0 protocol ip prio $prio u32 match ip dst $ipaddress classid 1:$num
qdisc add dev eth1 parent 1:$num handle $num sfq perturb 10

TCDOWNLOAD;

$num++;
$num2++;

}
}
echo $tc_root;
echo $tc_upload;
echo $tc_download;

$tc=$tc_root.$tc_upload.$tc_download;
?>



Така.
Общо взето.
Взимаш това чудо дето се казва htb.batch.
И се опитваш да разбереш кое какво е.
Като стигнеш до някъде все пак питай пак.

Цитат
От тук от там ми става ясно макар ,че не толкова разбирам от всичко това. '<img'> Мисля ,обаче че това няма възможност да ограничава конкретно зададени айпита -скороста за сваляне и за качване или съм тръгнал в погрешна посока.

Цитат
filter add dev eth0 parent 1:0 protocol ip prio 200 handle $i fw classid 1:$y

filter add dev eth1 parent 1:0 protocol ip prio $prio u32 match ip dst $ipaddress classid 1:$num

тези два филтъра ако си забелязъл имат променливи на единиа пише fw classid 1:$y което по мое скормно мнение се съобразява с маркировката на един ИП адрес.

Другото има променлива $ipaddress т.е. ..това нещо -  целия скрипт, изпълнява заявка към mysql. Прочита каквото му е нужно и изплюва много на брой команди за tc.

Друго да не ти е ясно.?

Маркировката изглезда горе долу така:
....
-A POSTROUTING -s 192.168.1.2  -o eth0 -j MARK --set-mark 0x2
-A POSTROUTING -s 192.168.1.8  -o eth0 -j MARK --set-mark 0x8
-A POSTROUTING -s 192.168.1.9 -o eth0 -j MARK --set-mark 0x9
-A POSTROUTING -s 192.168.1.10 -o eth0 -j MARK --set-mark 0xa
-A POSTROUTING -s 192.168.1.11 -o eth0 -j MARK --set-mark 0xb
-A POSTROUTING -s 192.168.1.12 -o eth0 -j MARK --set-mark 0xc
-A POSTROUTING -s 192.168.1.13 -o eth0 -j MARK --set-mark 0xd

....

Нека започнем с разположението ,зареждането ,отделянето на конкретни айпита за конкретно ограничаване.Освен ограничаване на download ограничаване и на upload.Досадно е особенно с торентите,ако може да се ограничи upload на 0,0001 проблема се решава до някъде.  '<img'>
Активен

Dean79

  • Напреднали
  • *****
  • Публикации: 151
    • Профил
рутер+шейпър
« Отговор #37 -: Sep 15, 2007, 16:48 »
Една малка поправка - маркировката на пакети е добре да се направи в mangle:

iptables -t mangle -A FORWARD -s $ip -o $iface -j MARK --set-mark $mark



Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
рутер+шейпър
« Отговор #38 -: Sep 15, 2007, 16:53 »
IPMARK, IPCLASSIFY са по-добрите варианти на MARK в такива случаи '<img'>
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

edmon

  • Гост
рутер+шейпър
« Отговор #39 -: Sep 15, 2007, 22:25 »
Цитат (Dean79 @ Сеп. 15 2007,17:48)
Една малка поправка - маркировката на пакети е добре да се направи в mangle:

iptables -t mangle -A FORWARD -s $ip -o $iface -j MARK --set-mark $mark

какво значи по-добре.. питам си за да знам не че нещо.
иначе както виждаш не е дадено каде се прави защото командата е една и съща и се изпълнява от другаде.
не знам в -т нат можели да правиш МАРК '<img'>))
Активен

edmon

  • Гост
рутер+шейпър
« Отговор #40 -: Sep 15, 2007, 22:28 »
Цитат (bnight @ Сеп. 14 2007,01:19)
Цитат (arda_kj @ Сеп. 14 2007,00:36)
Цитат
Учи на лоши навици с тази си пакетна система и етц.

Ако Дебиана учи на лоши навици... ще отида да се застрелям някъде '<img'>.

По добре деиствай че дебиан наистина учи на много лоши навици. Като например да не може да се компилира от сорс. Други са че повечето хора и идея си нямат кое къде отива след инсталацията от пакет а и не си правят труда да проверяват. И все пак Дебиан си е Дебиан.

до сега не съм виждал сорс без инструкция за инсталирането му. т.е. тоя проблем отпада.
ако имаш предвид компилиране на кърнел....
опитите в генто продължават и там някои хора вече  сами не си вярват, че постигат нещо.
ако се съмняваш пробвай гугл!
Активен

bnight

  • Напреднали
  • *****
  • Публикации: 313
  • Distribution: Ubuntu 8.10
  • Window Manager: KDE 3.5.10
    • Профил
    • WWW
рутер+шейпър
« Отговор #41 -: Sep 16, 2007, 19:57 »
Цитат (edmon @ Сеп. 15 2007,23:28)
Цитат (bnight @ Сеп. 14 2007,01:19)
Цитат на: arda_kj,Сеп. 14 2007,00:36
Цитат
Учи на лоши навици с тази си пакетна система и етц.

Ако Дебиана учи на лоши навици... ще отида да се застрелям някъде '<img'>.

По добре деиствай че дебиан наистина учи на много лоши навици. Като например да не може да се компилира от сорс. Други са че повечето хора и идея си нямат кое къде отива след инсталацията от пакет а и не си правят труда да проверяват. И все пак Дебиан си е Дебиан.до сега не съм виждал сорс без инструкция за инсталирането му. т.е. тоя проблем отпада.
ако имаш предвид компилиране на кърнел....
опитите в генто продължават и там някои хора вече  сами не си вярват, че постигат нещо.
ако се съмняваш пробвай гугл!

Абе те инструкции хубаво ама ./configure понякога има една дузина и повече опции. И ако не си наистина запознат какво се опитваш да направиш смятай че със сигурност ще пропуснеш нещо. Както и да е. Иначе апсолютно съм фен на Дебиан и си го ползвам с кеф.
Активен

Registered Linux user: 473460
http://skyhost.bg - Хостинг и Домейни

h7d8

  • Напреднали
  • *****
  • Публикации: 197
  • Distribution: Debian;Ubuntu
  • Window Manager: Gnome
    • Профил
рутер+шейпър
« Отговор #42 -: Oct 01, 2007, 14:21 »
Отново проблеми със скриптовете '<img'> който има време и може да помогна да пише.По бързо ще стане ,обаче с icq или skype.
Активен

h7d8

  • Напреднали
  • *****
  • Публикации: 197
  • Distribution: Debian;Ubuntu
  • Window Manager: Gnome
    • Профил
рутер+шейпър
« Отговор #43 -: Nov 05, 2007, 18:33 »
Със скрипта по-доло имам проблем.Така изглеждащ е направен за рутери от точно определен модел.Имайки в предвид ,че са базирани на линукс кернел би трябвало да трагнат без проблем.Момента в който започвам да сменям "br0" с "eth0" и "eth1" нещо не се получава.В момента е закован на 60KB/s download (480kbps) и 4KB/s upload (32kbps) ,ограничение важащо за определено ИП и определен МАК адрес.Незная дали така направен за ИП и МАК адрес би сработил.

Примерен код

TCA="tc class add dev br0"
TFA="tc filter add dev br0"
tc qdisc del dev br0 root
tc qdisc add dev br0 root handle 1: htb
tc class add dev br0 parent 1: classid 1:1 htb rate 3000kbit
$TCA parent 1:1 classid 1:10 htb rate 480kbit ceil 480kbit prio 2
$TFA parent 1:0 protocol ip prio 2 u32 match u16 0x0800 0xFFFF at -2 match u32 0x00000000 0xFFFFFFFF at -12 match u16 0x0000 0xFFFF at -14 flowid 1:10
tc qdisc add dev br0 ingress
$TFA parent ffff: protocol ip handle 50 fw police rate 32kbit mtu 12k burst 10k drop
iptables -t mangle -A POSTROUTING -d 192.168.2.233 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -m mac --mac-source 00:4F:4C:F3:50:00 -j MARK --set-mark 50



Искам също да разбера дали може да се корегира и да се раздели на няколко групи с различна скорост на ъплоад и доунлоад,също отделени за ИП и МАК.Добра е идеята да се чете от отделни файлове ,но понеже немога да я реализирам пасувам '<img'> Благодаря и чакам мненията ви по темата.  ':ok:'
Активен