IMQ+NAT

Miroslaw Dyduch dydko1 w o2.pl
Sob, 17 Wrz 2005, 12:34:05 CEST


Witam

Mam pytanie związane z ostanio pojawiającym sie imq. Przepraszam że jest 
bardzo długie pytanie ale nie mam już kogo się spytać a chciałbym jakoś to 
rozwiązać. Da się jakoś zrobić by ruch przychodzący do eth0 rozdzielić na 
ruch serwera oraz lanu za pomocą imq. Chcę tak zrobić by pewne usługi na 
routerze miały niższe prio niż lanu (za natem) a np .: wspólny mldonkey (dla 
calej sieci) miał wyższe prio, niż p2p lanu (są tacy co mają problem z 
obsługą mldonkeya. A ich windowsowe zamulacze i torrenty wysysją całe pasmo 
wydzielone na p2p).

A) PREROUTING+NAT
   Pytanie jest takie jak wstawić (przestawić) imq by było widziane ip serwera 
oraz ip sieci lan na (PREROUTINGU -t mangle -i eth0 oraz imq1)?? 
Napewno gdzieś mam mały błąd. Na 2.4 był patch imq-nat i podobno to działo 
tyle mówią google np http://lartc.org/ 
http://www.it-faq.pl/news_archives/pl.comp.networking/2003/nov/msg02700.html 
i wiele innych. 
Jak to teraz zrobic na 2.6. Zmieniłem z w .config CONFIG_IMQ_BEHAVIOR_AB na 
CONFIG_IMQ_BEHAVIOR_BB (przkompilowałem) i dalej nic (tylko w logach są 
zmiany dmesg |grep IMQ 
IMQ starting with 2 devices... 
IMQ driver loaded successfully. 
Hooking IMQ before NAT on PREROUTING [przedtem było after na AB- tak jak 
domyślnie w PLD] 
Hooking IMQ before NAT on POSTROUTING)
Tu zrobiłem wszytkie 4 możliwosci (CONFIG_IMQ_BEHAVIOR- AA,AB,BA,BB) i nic- 
jak by imq nie reagowało wcale na te zmiany

Prawie ta sama konfiguracja na (POSTROUTINGU -t mangle -o eth0 oraz imq1) 
ładnie działa- rozrożnia prawidłowo ruch serwera i lanu.

B) INPUT
  Czyszcze calą tablice mangle 
Jeśli dam iptables -t mangle -A INPUT -i eth0 -j IMQ --todev 1 to nic nie 
wpada do imq1 ( nload -m -u K imq1 ) natomiast watch -n1 iptables -L -t 
mangle -nv pokazuje za pakiety przychodzą na lokalną maszynę. Wydaje się że 
ipatbles nie umie przekierować INPUT do imq1 
watch -n1 tc -s class show dev imq1- też nic nie pokazuje w imq1

jeśli daje 
iptables -t mangle -A INPUT -i eth0 -j DROP 
to ping nie idzie 
Co zrobić by łapać ruch w INPUT i przkierować do imq1. Jeśli by INPUT działało 
to bym tylko dołożył FORWARD i by mi to wystarczyło

C)  PREROUTING+FORWARD 

czyszczę calą tablice mangle 
Jeśli dam iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 1 to widze 
że pakiety tak jak powinny idą do imq1. Jeśli dołoże do tego iptables -t 
mangle -A FORWARD -i eth0 -o eth1 -j IMQ --todev 1 to wtedy jest ciekawy 
przypadek (tak się musi dziać bo pakiety "zawracją"). Efektem dołożenia 
FORWARD jest że kompy za natem mają 1/2 transferu a nlod -m -u K imq1 
wskazuje dwukronie wyższy transfer (łącze*2 np z 128kB/s robi się 256 a za 
natem jest 64kB/s)

Co zrobić by PREROUTING -i eth0 rozrożniał ip (serwer, lan) lub by z INPUT 
dało się przekierować do imq1. Używam kernela 2.6.12.5-0.5(cvs z PLD), może 
to wina patcha 2.6.10-imq.patch (może na 2.6.13-imq.patch to bedzie działać), 
albo braku jakieś łatki na iptables (raczej jej braku)

-- 
Pozdrawiam 
Miroslaw Dyduch
gg 3936429, email 	dydko1 w o2.pl



Więcej informacji o liście dyskusyjnej pld-users-pl