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/.
Strony: 1
Witam.
Obecnie lapie wszystko w mangle pre/postrouting i kieruje do imq, dziala ok, trzyma limity.
Wyglada to tak:
eth0 - wan
eth2,3 - dwie podsieci lanu
debian sarge, imq BA, kernel 2.6.18.8, iptables 1.3.8, iproute 2.6.18, squid 2.5 stable9
#przekierowanie na squida $IPTABLES -t nat -A PREROUTING -s 10.1.0.0/24 -p tcp --dport 80 -j DNAT --to 10.1.0.1:8080 $IPTABLES -t nat -A PREROUTING -s 10.1.0.0/24 -p tcp --dport 8080 -j DNAT --to 10.1.0.1:8080 $IPTABLES -t nat -A PREROUTING -s 10.2.0.0/24 -p tcp --dport 80 -j DNAT --to 10.2.0.1:8080 $IPTABLES -t nat -A PREROUTING -s 10.2.0.0/24 -p tcp --dport 8080 -j DNAT --to 10.2.0.1:8080 #download wrzucam do imq0 $IPTABLES -t mangle -A POSTROUTING -o eth2 -j IMQ --todev 0 $IPTABLES -t mangle -A POSTROUTING -o eth3 -j IMQ --todev 0 #upload wrzucam do imq1 $IPTABLES -t mangle -A PREROUTING -i eth2 -j IMQ --todev 1 $IPTABLES -t mangle -A PREROUTING -i eth3 -j IMQ --todev 1 #htb uzywam nastepujaco: $tc qdisc add dev imq0 root handle 1:0 htb default 99 $tc qdisc add dev imq1 root handle 2:0 htb default 99 $tc class add dev imq0 parent 1:0 classid 1:1 htb rate 5mbit ceil 5mbit $tc class add dev imq1 parent 2:0 classid 2:1 htb rate 2mbit ceil 2mbit #to co sie nigdzie nie zakwalifikuje trafia tu $tc class add dev imq0 parent 1:1 classid 1:99 htb rate 100kbit ceil 256kbit $tc qdisc add dev imq0 parent 1:99 handle 99:0 sfq perturb 10 $tc class add dev imq1 parent 2:1 classid 2:99 htb rate 10kbit ceil 100kbit $tc qdisc add dev imq1 parent 2:99 handle 99:0 sfq perturb 10 #i dalej sa klienci, dla przykldu jeden z nich #WPIS 10.2.0.28 - 128 $tc class add dev imq0 parent 1:1 classid 1:128 htb rate $d ceil $dm $tc filter add dev imq0 protocol ip parent 1:0 u32 match ip dst 10.2.0.128 flowid 1:128 $tc qdisc add dev imq0 parent 1:128 handle 128:0 sfq perturb 10 $tc class add dev imq1 parent 2:1 classid 2:128 htb rate $u ceil $um $tc filter add dev imq1 protocol ip parent 2:0 u32 match ip src 10.2.0.128 flowid 2:128 $tc qdisc add dev imq1 parent 2:128 handle 128:0 sfq perturb 10
Nalozylem na squida patcha ZPH i chcialbym puszczac oddzielnie ruch lokalny (squid HIT, dns itp.), z lenistwa pomyslalem ze wystarczylo by "wybic" z mangle ten ruch ktorego nie chce kolejkowac i po sprawie ;) tak wiec tez zroblem dla squida, skrypt wygladal jak wyzej z tym ze:
#download $IPTABLES -t mangle -A POSTROUTING -o eth2 -p tcp --sport 8080 -m tos --tos 0x8 -j ACCEPT $IPTABLES -t mangle -A POSTROUTING -o eth2 -j IMQ --todev 0 $IPTABLES -t mangle -A POSTROUTING -o eth3 -p tcp --sport 8080 -m tos --tos 0x8 -j ACCEPT $IPTABLES -t mangle -A POSTROUTING -o eth3 -j IMQ --todev 0 (...)
i dziala PRAWIE zadowalajaco, hity ze squida leca ile tylko moga, a wszystko inne trafia w kolejke. No ale ze czesc ludzi mam na radiu, to trzeba to jednak jakos ograniczyc do rozsadnej wartosci - i tu problem, nie moge nad tym zapanowac w zaden sposob, zrobilem tak:
##$IPTABLES -t mangle -A POSTROUTING -o eth2 -p tcp --sport 8080 -m tos --tos 0x8 -j ACCEPT $IPTABLES -t mangle -A POSTROUTING -o eth2 -p tcp --sport 8080 -m tos --tos 0x8 -j IMQ --todev 2 (...)
zeby te HIT'y skierowac do dodatkowego imq, a na nim:
$tc qdisc add dev imq2 root handle 3:0 htb default 99 $tc class add dev imq2 parent 3:0 classid 3:1 htb rate 3000kbit ceil 3000kbit $tc class add dev imq2 parent 3:1 classid 3:99 htb rate 2900kbit ceil 2900kbit $tc qdisc add dev imq2 parent 3:99 handle 99:0 sfq perturb 10
i nie dziala ;( iptables -t mangle -vnL pokazuje ze te pakiety ze squida wpadaja w imq2 ale leca ile wlezie, nie ma mowy o kontroli.
po tej porazce porzucilem calkiem koncepcje stwierdzajac ze zrobie to bardziej po ludzku urzywajac mangle forward, co zalatwi mi tez za jednym zamachem min. zapytania do lokalnego dnsa, wzorujac sie na przykladzie od ZlyZwierz zrobilem tak:
#przekierowanie na squida $IPTABLES -t nat -A PREROUTING -s 10.1.0.0/24 -p tcp --dport 80 -j DNAT --to 10.1.0.1:8080 $IPTABLES -t nat -A PREROUTING -s 10.1.0.0/24 -p tcp --dport 8080 -j DNAT --to 10.1.0.1:8080 $IPTABLES -t nat -A PREROUTING -s 10.2.0.0/24 -p tcp --dport 80 -j DNAT --to 10.2.0.1:8080 $IPTABLES -t nat -A PREROUTING -s 10.2.0.0/24 -p tcp --dport 8080 -j DNAT --to 10.2.0.1:8080 #lapie ruch $IPTABLES -t mangle -N SUMA_DL $IPTABLES -t mangle -A FORWARD -i eth0 -j SUMA_DL $IPTABLES -t mangle -A OUTPUT -o eth1 -p tcp --sport 8080 -m tos --tos 0x0 -j SUMA_DL $IPTABLES -t mangle -A OUTPUT -o eth2 -p tcp --sport 8080 -m tos --tos 0x0 -j SUMA_DL $IPTABLES -t mangle -N SUMA_UL $IPTABLES -t mangle -A FORWARD -o eth0 -j SUMA_UL $IPTABLES -t mangle -A INPUT -i eth1 -p tcp --dport 8080 -j SUMA_UL $IPTABLES -t mangle -A INPUT -i eth2 -p tcp --dport 8080 -j SUMA_UL #i wrzucam do imq $IPTABLES -t mangle -A SUMA_DL -j IMQ --todev 0 $IPTABLES -t mangle -A SUMA_UL -j IMQ --todev 1
dalej jest HTB identyczne jak w pierwszym przykladzie zrobione, na tym etapie nie trzyma mi uploadu, download sie kolejkuje normalnie, hity ze squida leca pelna predkoscia - na razie ich nie proboje jeszcze ograniczac bo i tak juz mi qos nie dziala prawidlowo wiec utknalem -.-
probowalem z imq na BA jak i AB, efekt ten sam, iptables pokazuje ze pakiety wpadaja w te regolki i do imq pozniej, ale efektu brak - podobnie jak w pierwszej wersji z pre/postrouting. nie mam pojecia co spapralem, obczytalem juz chyba caly internet, tydzien sie z tym prawie mecze i nic - czarna dupa ;/
pozdr
Offline
Taka pierwsza mysli mi przyszla: zrobić dodatkową kolejkę na SQUIDa na IMQ a filtrami wyłapać co leci na port squida i jego adres i przeprznac w ta kolejke.
Offline
[quote=mariaczi]Taka pierwsza mysli mi przyszla: zrobić dodatkową kolejkę na SQUIDa na IMQ a filtrami wyłapać co leci na port squida i jego adres i przeprznac w ta kolejke.[/quote]
latwo powiedziec :D:D:D: trudno zrobic :D:D:
hehe
Offline
Taka pierwsza mysli mi przyszla: zrobić dodatkową kolejkę na SQUIDa na IMQ a filtrami wyłapać co leci na port squida i jego adres i przeprznac w ta kolejke.[/quote]
1. bez sensu, bo musisz dac klientowi 2x upload, powiedzmy mial 512kbit to teraz bedzie mial 512dla www + 512 dla !www - no bo jak zmusisz htb do zliczania sumarycznie z dwoch interfejsow ;>
2. przeciez w tej chwili nie moge ograniczyc tego na imq1 to uwazasz ze jak bede chcial to zrobic na imq2,3,5 czy 199 to cos zmieni?
3. pomijajac 1i2 - jest sens kilka razy dublowac roch ?
problem chyba lezy gdzie indziej, pewnie jakis szczegol/pierdolka i szlak mnie trafia bo powinno dzialac...
pozdr
[url=http://dziecineo.prv.pl][img]http://sopot.i365.pl/neo/i/us4.jpg[/img][/url]
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00098 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.15.186.78' WHERE u.id=1 |
0.00081 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.15.186.78', 1732693857) |
0.00039 | SELECT * FROM punbb_online WHERE logged<1732693557 |
0.00068 | SELECT topic_id FROM punbb_posts WHERE id=109305 |
0.00127 | SELECT id FROM punbb_posts WHERE topic_id=13258 ORDER BY posted |
0.00055 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=13258 AND t.moved_to IS NULL |
0.00008 | SELECT search_for, replace_with FROM punbb_censoring |
0.00073 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=13258 ORDER BY p.id LIMIT 0,25 |
0.00290 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=13258 |
Total query time: 0.00853 s |