Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

Użytkownik


Sprawdźcie mi poprawność działania kolejek wygenerowanych przez ten skrypt (narazie drukuje je na ekran) :
#!/usr/bin/perl
use warnings;
print "Podaj interfejs od połączenia z Internetemn";
chomp($net=<STDIN>);
print "Podaj interfejs do swojej sieci LANn";
chomp($lan=<STDIN>);
print "Podaj prędkość łącza(DOWNLOAD) w kbpsn";
chomp($snet=<STDIN>);
print "Podaj prędkość łącza(UPLOAD)w kbpsn";
chomp($unet=<STDIN>);
print "Podaj prędkość sieci lokalnej w kbpsn";
chomp($slan=<STDIN>);
print "Podaj liczbę użytkownikówn";
chomp($user=<STDIN>);
print "Podaj minimalną prędkość(DOWNLOAD) dla użytkownika w kbpsn";
chomp($min=<STDIN>);
print "Podaj maksymalną prędkość(DOWNLOAD) dla użytkownika w kbpsn";
chomp($max=<STDIN>);
print "Podaj minimalną prędkość(UPLOAD) dla użytkownika w kbpsn";
chomp($gup=<STDIN>);
print "Podaj maksymalną prędkość(UPLOAD) dla użytkownika w kbpsn";
chomp($mup=<STDIN>);
# Czyszczenie
print "tc qdisc del root dev $lan 2>/dev/nulln";
print "tc qdisc del root dev $net 2>/dev/nulln";
print "iptables -t mangle -D POSTROUTING -o $net -j upload 2>/dev/nulln";
print "iptables -t mangle -F upload 2>/dev/nulln";
print "iptables -t mangle -X upload 2>/dev/nulln";
# Główna kolejka
print "tc qdisc add dev $lan root handle 1:0 htbn";
print "tc class add dev $lan parent 1:0 classid 1:1 htb rate " . $slan . "kbit ceil " . $slan . "kbitn";
print "tc class add dev $lan parent 1:1 classid 1:2 htb rate " . $snet . "kbit ceil " . $snet . "kbitn";
print "tc class add dev $lan parent 1:1 classid 1:3 htb rate " . $slan . "kbit ceil " . $slan . "kbitn";
print "tc qdisc add dev $net root handle 1:0 htbn";
print "tc class add dev $net parent 1:0 classid 1:1 htb rate " . $unet . "kbit ceil " . $unet . "kbitn";
# Kolejki dla userów :)
$ip="2";
$id="4";
$p="3";
$handle="24";
print "tc filter add dev $lan protocol ip preference 2 parent 1:0 u32 match ip src 192.168.1.1 flowid 1:3n";
for ($ile="0"; $ile<$user;++$ile){
print "tc class a dev $lan parent 1:2 classid 1:" . $id . " htb rate " . $min . "kbit ceil " . $max . "kbitn";
print "tc filter add dev $lan protocol ip preference 2 parent 1:0 u32 match ip dst 192.168.1." . $ip . " flowid 1:" . $id ."n";
print "tc qdisc add dev $lan parent 1:" . $id . " handle " . $id . ":0 sfq perturb 10n";
print "tc class add dev $net parent 1:1 classid 1:" . $p . " htb rate " . $gup . "kbit ceil " . $mup . "kbitn";
print "tc qdisc add dev $net parent 1:" . $p . " handle " .$p . ":0 sfq perturb 10n";
print "tc filter add dev $net protocol ip preference 2 parent 1:0 handle $handle fw flowid 1:" . $p . "n";
++$id;
++$ip;
++$p;
++$handle;
}
print "iptables -t mangle -N uploadn";
print "iptables -t mangle -I POSTROUTING -o $net -j uploadn";
$ip2="2";
$mark="25";
for ($ile2="0"; $ile2<$user;++$ile2){
print "iptables -t mangle -A upload -s 192.168.1." . $ip2 . " -j MARK --set-mark $markn";
++$mark;
++$ip2;
}
print "iptables -t mangle -A upload -m mark --mark 0 -j MARK --set-mark 24n";
Offline


Moderator
Pierwsze spostrzeżenia ... rate to sobie przekalkuluj na podstawie szybkości łącza i ilości userów , inaczej będziesz miał kłopoty.
//edit
Sprawia wrażenie działającego
PS gratuluję podejścia , więcej osób powinno zaczynac od pisania własnych skryptów, zamiast dopieszczać padalsko napisane gotowce .
Offline

Użytkownik


Dzięki za odpowiedź i za przetestowanie, a z tym rate to chyba zrobie tak : rate łącza/liczbe userów
Pozdro
Offline