HTB i wysyłanie przez trzy łącza DSL
: 17 lutego 2009, 15:49
Witam.
Z Debianem zaczynam swoją przygodę i na razie jeszcze bardzo cienki jestem. Mam problem z poprawnym skonfigurowaniu kolejek HTB dla trzech łącz DSL Szukam, googluję i skleciłem coś takiego i nie wiem czy zmierzam w dobrą stronę. Chciałem to zrobić bez IMQ. Routing ustawiony jest dobrze, jedynie to kolejkowanie.
Część kodu:
Pobieranie pominę.
Tak samo dla pozostałych dwóch interfejsów.
I tak samo dla trzeciego łącza.
I tu problem z tym markowaniem ,,set-mark 1002'' (jak markuję każdego użytkownika na każdym łączu tak samo to nie działa prawidłowo --set-mark 2 dla Eth1 Eth2 i Eth3). (wydawało mi sie jak przy każdym łączu zamarkuje --set-mark 2 to będzie działać a tu niestety tylko na 1 łączu poprawnie będzie chodzić wysyłanie (upload).
Teraz tak, czy idę dobrą drogą i czy dobrze rozumuje bo chcę dla każdego użytkownika zroibić kolejki na każdym łączu potem sobie ich dowolnie przerzucać między poszczególnymi łączami?
Pogubiłem sie z tym markowaniem --set-mark 2 działa prawidłowo.
Gdzie i jak dodać abym mógł sobie markować dla 2 łącza --set-mark 1002 i dla trzeciego --set-mark 2002. Nie umiem znaleźć gdzie jeszcze ustawić to markowanie. Nie wiem czy w ogóle się tak da?
Bardzo proszę o pomoc i ewentualną podpowiedź czy takie rozwiązanie ma sens?
Pozdrawiam.
Z Debianem zaczynam swoją przygodę i na razie jeszcze bardzo cienki jestem. Mam problem z poprawnym skonfigurowaniu kolejek HTB dla trzech łącz DSL Szukam, googluję i skleciłem coś takiego i nie wiem czy zmierzam w dobrą stronę. Chciałem to zrobić bez IMQ. Routing ustawiony jest dobrze, jedynie to kolejkowanie.
Część kodu:
Kod: Zaznacz cały
#!/bin/bash
INTERNET=eth1
INTERNET2=eth2
INTERNET3=eth3
SIEC=eth0
# Tutaj ustalamy dynamiczny gwarantowany oraz max DOWNLOAD i UPLOAD w kbit dla każdego ip wymienionego powyżej #
GD=96 # gwarantowany download
MD=512 # maksymalny downloadu
GU=30 # gwarantowany upload
MU=36 # maksymalny upload
# Tutaj ustalamy przepustowość karty sieciowej(K) oraz max download(M) w kbit od strony karty do sieci wew #
K=99000
M=99000
# Podaj przepustowość łącza (D)-Download (U)-Upload w kbit #
D=8000
U=480
### Ponizej podaj network sieci bez ostatniej cyferki np: ###
LAN=192.168.0
### Ponizej podaj IP karty wewnetrznej dla sieci np: ###
HOST1=192.168.0.1
### Teraz adresy IP ktore HTB ma wlaczyc do podzialu ###
HOST2=${LAN}.2
HOST3=${LAN}.3
HOST4=${LAN}.4
if [ "$1" == "stop" ]
then
echo "HTB zostalo zatrzymane"
tc qdisc del root dev $SIEC 2>/dev/null
tc qdisc del root dev $INTERNET 2>/dev/null
tc qdisc del root dev $INTERNET2 2>/dev/null
tc qdisc del root dev $INTERNET3 2>/dev/null
iptables -t mangle -D POSTROUTING -o $INTERNET -j HTB-OUT 2>/dev/null
iptables -t mangle -F HTB-OUT 2>/dev/null
iptables -t mangle -X HTB-OUT 2>/dev/null
iptables -t mangle -D POSTROUTING -o $INTERNET2 -j HTB-OUT2 2>/dev/null
iptables -t mangle -F HTB-OUT2 2>/dev/null
iptables -t mangle -X HTB-OUT2 2>/dev/null
iptables -t mangle -D POSTROUTING -o $INTERNET3 -j HTB-OUT3 2>/dev/null
iptables -t mangle -F HTB-OUT3 2>/dev/null
iptables -t mangle -X HTB-OUT3 2>/dev/null
exit
fi
if [ "$1" == "start" ]
then
echo "HTB zostalo wlaczone"
tc qdisc del root dev $SIEC 2>/dev/null
tc qdisc del root dev $INTERNET 2>/dev/null
tc qdisc del root dev $INTERNET2 2>/dev/null
tc qdisc del root dev $INTERNET3 2>/dev/null
iptables -t mangle -D POSTROUTING -o $INTERNET -j HTB-OUT 2>/dev/null
iptables -t mangle -F HTB-OUT 2>/dev/null
iptables -t mangle -X HTB-OUT 2>/dev/null
iptables -t mangle -D POSTROUTING -o $INTERNET2 -j HTB-OUT2 2>/dev/null
iptables -t mangle -F HTB-OUT2 2>/dev/null
iptables -t mangle -X HTB-OUT2 2>/dev/null
iptables -t mangle -D POSTROUTING -o $INTERNET3 -j HTB-OUT3 2>/dev/null
iptables -t mangle -F HTB-OUT3 2>/dev/null
iptables -t mangle -X HTB-OUT3 2>/dev/null
Kod: Zaznacz cały
tc qdisc add dev $INTERNET root handle 1:0 htb
tc class add dev $INTERNET parent 1:0 classid 1:1 htb rate ${U}kbit ceil ${U}kbit quantum 576
tc class add dev $INTERNET parent 1:1 classid 1:102 htb rate 800kbit ceil 1000kbit quantum 576
tc class add dev $INTERNET parent 1:1 classid 1:103 htb rate 80kbit ceil 100kbit quantum 576
tc class add dev $INTERNET parent 1:1 classid 1:104 htb rate 30kbit ceil 100kbit quantum 576
tc class add dev $INTERNET parent 1:1 classid 1:105 htb rate 20kbit ceil 30kbit quantum 576
.
.
tc qdisc add dev $INTERNET parent 1:102 handle 302:0 sfq perturb 10
tc qdisc add dev $INTERNET parent 1:103 handle 303:0 sfq perturb 10
tc qdisc add dev $INTERNET parent 1:104 handle 304:0 sfq perturb 10
tc qdisc add dev $INTERNET parent 1:105 handle 305:0 sfq perturb 10
.
.
tc filter add dev $INTERNET protocol ip preference 1 parent 1:0 handle 2 fw flowid 1:102
tc filter add dev $INTERNET protocol ip preference 1 parent 1:0 handle 3 fw flowid 1:103
tc filter add dev $INTERNET protocol ip preference 1 parent 1:0 handle 4 fw flowid 1:104
tc filter add dev $INTERNET protocol ip preference 1 parent 1:0 handle 5 fw flowid 1:105
.
.
iptables -t mangle -N HTB-OUT
iptables -t mangle -I POSTROUTING -o $INTERNET -j HTB-OUT
iptables -t mangle -A HTB-OUT -s $HOST2 -j MARK --set-mark 2
iptables -t mangle -A HTB-OUT -s $HOST3 -j MARK --set-mark 3
iptables -t mangle -A HTB-OUT -s $HOST4 -j MARK --set-mark 4
iptables -t mangle -A HTB-OUT -s $HOST5 -j MARK --set-mark 5
.
.
.
Kod: Zaznacz cały
tc qdisc add dev $INTERNET2 root handle 2:0 htb
tc class add dev $INTERNET2 parent 2:0 classid 2:1 htb rate ${U}kbit ceil ${U}kbit quantum 576
tc class add dev $INTERNET2 parent 2:1 classid 2:102 htb rate 800kbit ceil 1000kbit quantum 576
tc class add dev $INTERNET2 parent 2:1 classid 2:103 htb rate 80kbit ceil 100kbit quantum 576
tc class add dev $INTERNET2 parent 2:1 classid 2:104 htb rate 30kbit ceil 100kbit quantum 576
tc class add dev $INTERNET2 parent 2:1 classid 2:105 htb rate 20kbit ceil 30kbit quantum 576
.
.
c qdisc add dev $INTERNET2 parent 2:102 handle 2302:0 sfq perturb 10
tc qdisc add dev $INTERNET2 parent 2:103 handle 2303:0 sfq perturb 10
tc qdisc add dev $INTERNET2 parent 2:104 handle 2304:0 sfq perturb 10
tc qdisc add dev $INTERNET2 parent 2:105 handle 2305:0 sfq perturb 10
.
.
tc filter add dev $INTERNET2 protocol ip preference 1 parent 2:0 handle 2 fw flowid 2:102
tc filter add dev $INTERNET2 protocol ip preference 1 parent 2:0 handle 3 fw flowid 2:103
tc filter add dev $INTERNET2 protocol ip preference 1 parent 2:0 handle 4 fw flowid 2:104
tc filter add dev $INTERNET2 protocol ip preference 1 parent 2:0 handle 5 fw flowid 2:105
.
.
.
iptables -t mangle -N HTB-OUT2
iptables -t mangle -I POSTROUTING -o $INTERNET2 -j HTB-OUT2
iptables -t mangle -A HTB-OUT2 -s $HOST2 -j MARK --set-mark 1002
iptables -t mangle -A HTB-OUT2 -s $HOST3 -j MARK --set-mark 1003
iptables -t mangle -A HTB-OUT2 -s $HOST4 -j MARK --set-mark 1004
iptables -t mangle -A HTB-OUT2 -s $HOST5 -j MARK --set-mark 1005
I tu problem z tym markowaniem ,,set-mark 1002'' (jak markuję każdego użytkownika na każdym łączu tak samo to nie działa prawidłowo --set-mark 2 dla Eth1 Eth2 i Eth3). (wydawało mi sie jak przy każdym łączu zamarkuje --set-mark 2 to będzie działać a tu niestety tylko na 1 łączu poprawnie będzie chodzić wysyłanie (upload).
Teraz tak, czy idę dobrą drogą i czy dobrze rozumuje bo chcę dla każdego użytkownika zroibić kolejki na każdym łączu potem sobie ich dowolnie przerzucać między poszczególnymi łączami?
Pogubiłem sie z tym markowaniem --set-mark 2 działa prawidłowo.
Gdzie i jak dodać abym mógł sobie markować dla 2 łącza --set-mark 1002 i dla trzeciego --set-mark 2002. Nie umiem znaleźć gdzie jeszcze ustawić to markowanie. Nie wiem czy w ogóle się tak da?
Bardzo proszę o pomoc i ewentualną podpowiedź czy takie rozwiązanie ma sens?
Pozdrawiam.