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/.
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
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
Dzięki za odpowiedź i za przetestowanie, a z tym rate to chyba zrobie tak : rate łącza/liczbe userów
Pozdro
Offline