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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2007-08-29 16:34:14

  regis - Nowy użytkownik

regis
Nowy użytkownik
Skąd: Zdzieszowice
Zarejestrowany: 2007-08-08

IMQ problem z HTB

Witam!

Temat HTB szeroko wałkowany, ale jednak albo nie wszystko powiedziano albo ja się niedokopałem :)

Wymieniam serwer w sieci, a że układ jest taki:

2 interfejsy LAN <----> HTB <-----> DSL

Powoduje to, że muszę podzielić w HTB interfejsy wewnętrzne po równo do koryta co powoduje, że dla jednego idzie tylko połowa łącza nawet jeśli z drugiego nie korzysta nikt.

Chcę to więc zmienić i zastosować IMQ, które zepnie oba interfejsy i będzie dysponowało całym transferem, który będzie dzielony już wyłącznie na użytkowników bez dodatkowych podziałów pomiędzy interfejsami.

Zasadniczo zabawa się udała ale... właśnie pojawił się problem.
Skorzystałem z opisu http://home.elka.pw.edu.pl/~lantonia/Downloads/IMQ_i_7Layer.pdf

Jakkolwiek HTB wyłapuje transfer wychodzący do internetu, to nie widzi przychodzącego do sieci lokalnej.
Do pracy skompilowałem jajko 2.6.20 i wybrałem dla IMQ tryb AB.

Mój konfig :

modprobe imq
IPT="/usr/sbin/iptables"
DSL="eth0"

$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -F
$IPT -t nat -F
$IPT -X
$IPT -t nat -X
$IPT -t mangle -F

$IPT -A FORWARD -s 192.168.0.2 -d 0/0 -j ACCEPT
$IPT -A FORWARD -s 192.168.0.0/24 -d 0/0 -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t nat -A POSTROUTING -p all -s 192.168.0.0/24 -o $DSL -j SNAT --to ip-dsl

tc qdisc del root dev imq0
tc qdisc del root dev imq1
ip link set imq0 down
ip link set imq1 down

ip link set imq0 up
ip link set imq1 up
$IPT -t mangle -A POSTROUTING -o $DSL -j IMQ --todev imq0
$IPT -t mangle -A PREROUTING -i $DSL -j IMQ --todev imq1

tc qdisc add dev imq0 root handle 1:0 htb default 10
tc class add dev imq0 parent 1:0 classid 1:1 htb rate 640kbit ceil 640kbit
tc qdisc add dev imq1 root handle 1:0 htb default 10
tc class add dev imq1 parent 1:0 classid 1:1 htb rate 8000kbit ceil 8000kbit

tc class add dev imq0 parent 1:1 classid 1:10 htb rate 100kbit ceil 640kbit
tc class add dev imq1 parent 1:1 classid 1:10 htb rate 2000kbit ceil 8000kbit

tc class add dev imq0 parent 1:1 classid 1:21 htb rate 100kbit ceil 640kbit
tc filter add dev imq0 parent 1:0 protocol ip prio 1 u32 match ip src 192.168.0.67 flowid 1:21
tc qdisc add dev imq0 parent 1:21 handle 21:0 sfq perturb 10
tc class add dev imq1 parent 1:1 classid 1:21 htb rate 2000kbit ceil 8000kbit
tc filter add dev imq1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.67 flowid 1:21
tc qdisc add dev imq1 parent 1:21 handle 21:0 sfq perturb 10

Generalnie wg opisu powinno być ok a nie jest. Gdzie popełniłem błąd? Czy jednak wybór AB jest błędny?
Ruch w obie strony kontroluję po IP. Domyślam się, że boli go coś z "u32 match ip dst"
Czy może nie da rady robić tego w ten sposób i muszę wrócić do markowania pakietów tak jak przy rozwiązaniu bez IMQ?

Aha, nie zwracajcie uwagi, że polityki firewalla mam ACCEPT i dodatkowo dodaję wyjątki tak jak dla DROP, jeszcze go nie dokończyłem :)

Offline

 

#2  2007-08-29 23:12:14

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

Re: IMQ problem z HTB

ja bym to zrobił tak :
przekierował ruch z interfeisu podłaczonego do Netu :

Kod:

    tc qdisc del root dev imq1 2> /dev/null 
    tc qdisc del root dev imq0 2> /dev/null 

    ip link set imq0 up 
    ip link set imq1 up 
    
    iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0        # Download
    iptables -t mangle -A POSTROUTING -o eth0 -j IMQ --todev 1        # Upload

i ruch userów zmarkował i wyłapywał np.

Kod:

    tc filter add dev imq1 parent 1:0 protocol ip prio 4 handle 0x${MARK} fw flowid 1:${MARK}
    iptables -t mangle -A POSTROUTING -s $ADDRESS -d 0/0 -j MARK --set-mark 0x${MARK}
    iptables -t mangle -A POSTROUTING -s $ADDRESS -d 0/0 -j RETURN

Offline

 

#3  2007-08-30 11:42:00

  regis - Nowy użytkownik

regis
Nowy użytkownik
Skąd: Zdzieszowice
Zarejestrowany: 2007-08-08

Re: IMQ problem z HTB

No właśnie próbuję ominąć markowanie pakietów, dlatego załadowałem IMQ w konfiguracji AB, która wg. opisu z linka powinna zadziałać w obie strony z u32 src i dst.

Zabieram się za dalsze grzebanie.

No i zdaje się, że przez imq1 nie przechodzi transfer w ogóle, nie ważne gdzie go powieszę.
Spróbowałem przepiąć imq1 na interfejsy eth1 i eth2 i dalej nic. markowanie pakietów także nic nie daje. Transferu brak. Tak jakby omijał całkowicie interfejs imq1 i szedł gdzieś kanałami. Klasa domyślna śpi.

No tak jak się domyślałem, imq1 jest martwe. Niby wstaje, ale nie łapie żadnego transferu. Tak jakby go nie było.

Więc obszedłem chwilowo problem wywalając imq1 i zastępując go imq0 a w miejsce imq0 wykorzystałem rzeczywisty interfejs i gra muzyka. Martwi mnie tylko dlaczego imq1 wcale nie rusza.

Spotkał się ktoś z czymś takim?

Offline

 

#4  2007-09-16 23:04:17

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

Re: IMQ problem z HTB

ruch userów ,tzn upload mozna załatwic tez tak :

Kod:

    tc class add dev imq1 parent 1:1 classid 1:101 htb rate 16kbit ceil 24kbit 
    tc qdisc add dev imq1 parent 1:101 sfq perturb 10
    tc filter add dev imq1 parent 1:0 protocol ip prio 4 u32 match ip src 192.168.0.2 flowid 1:101

i zdaje to egazmin z HTB i HFSC

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)