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/.
Witam.
Przeczytałem kilka opisów HTB, wiem jak to dziala, ale nie moge wymyslic jak to rozegrać ww mojej sytuacji a mianowicie:
Mam łącze neo 512kbs, jest polaczone przez modem usb do serwera (interfejs ppp0)
Do serwera przez LAN'a (interfejs eth0)mam polaczone 2 kompy, z adresami IP pobieranymi z DHCP (mam wpisane mac'ki w dhcp, komp ma zawsze ten sam ip).
Na serwerze stoi serwer WWW, CVS i gry ET ;), teraz chcę uzyskać efekt:
1. Serwer gry ET ma pirorytet wyższy na upload od www i cvs ale niższy od kompów w lanie, a jego maksymalny download ma wynosic max 128kbs
2. Łącze ma być podzielone dynamicznie między kompy (upload gw 64kbs, gw download 256kbs)
3. Nieużywane przez kompy lacze jest najpierw dawane serwerowi a co zostanie kompom w lanie
4. Po lanie nie ma byc limitow
5. Na pozostale uslugi serwera limit uploadu 64kbs, priorytet nizzszy od lana, download 64kbs tez nizszy od lana
Wie ktoś jakby można to było najoptymalniej rozwiązać??
Pozdrawiam.
Offline
Nikt nie pomógł więc stworzyłem takie cuś:
#!/bin/sh # HTB Configuration # Konfiguracje podzele na 4 bloki: # * Serwer - Download # * Serwer - Upload # * Komputery w LAN - Download # * Komputery w LAN - Upload # Tworzymy gl kolejke na eth0 tc qdisc del root dev eth0 tc qdisc add dev eth0 root handle 1:0 htb # Tworzymy gl klase na interfejs eth0 tc class add dev eth0 parent 1:0 classid 1:1 htb rate 95000kbit ceil 95000kbit # Tworzymy gl kolejke na ppp0 tc qdisc del root dev ppp0 tc qdisc add dev ppp0 root handle 1:0 htb default 4 # Tworzymy gl klase na interfejs ppp0 tc class add dev ppp0 parent 1:0 classid 1:1 htb rate 120kbit ceil 120kbit #============================================================= # BLOK 1: Serwer - download # Nie wiem jak i czy sie da to zrobic :P #============================================================= #============================================================= # BLOK 2: Serwer - upload # Klasy dla poszczegolnych uslug : tc class add dev ppp0 parent 1:1 classid 1:2 htb rate 60kbit ceil 120kbit prio 1 # Serwer ET tc class add dev ppp0 parent 1:1 classid 1:3 htb rate 30kbit ceil 60kbit prio 2 # Apache (http i https) tc class add dev ppp0 parent 1:1 classid 1:4 htb rate 30kbit ceil 32kbit prio 3 # Inne (FTP, CVS, POP3, etc.) # Filtry: et i www tc filter add dev ppp0 protocol ip parent 1:0 u32 match ip sport 27960 0xffff flowid 1:2 tc filter add dev ppp0 protocol ip parent 1:0 u32 match ip sport 80 0xffff flowid 1:3 tc filter add dev ppp0 protocol ip parent 1:0 u32 match ip sport 445 0xffff flowid 1:3 # "Sprawiedliwe kolejkowanie" tc qdisc add dev ppp0 parent 1:2 handle 2:0 sfq perturb 10 tc qdisc add dev ppp0 parent 1:3 handle 3:0 sfq perturb 10 tc qdisc add dev ppp0 parent 1:4 handle 4:0 sfq perturb 10 #============================================================= #============================================================= # BLOK 3: Kompy w lanie - download # klasa dla polaczen z INTERNET <--> LAN tc class add dev eth0 parent 1:1 classid 1:2 htb rate 510kbit ceil 510kbit # klasa dla polaczen LAN <--> Serwer tc class add dev eth0 parent 1:1 classid 1:3 htb rate 94500kbit ceil 94500kbit # Podklasy da poszczegolnych kompow tc class add dev eth0 parent 1:2 classid 1:4 htb rate 240kbit ceil 510kbit # COLOSUS tc class add dev eth0 parent 1:2 classid 1:5 htb rate 120kbit ceil 510kbit # LEVIATAN tc class add dev eth0 parent 1:2 classid 1:6 htb rate 120kbit ceil 250kbit # JURCOKI tc class add dev eth0 parent 1:2 classid 1:7 htb rate 20kbit ceil 120kbit # Others # Filtrujemy wg zrodla pakietu, jezeli zrodlem jest serwer pakiet trafia do 1:3 tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip src 10.0.0.1 flowid 1:3 tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip dst 10.0.0.2 flowid 1:4 tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip dst 10.0.0.3 flowid 1:5 tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip dst 10.0.0.4 flowid 1:6 # "Sprawiedliwy" algorytm kolejkowania tc qdisc add dev eth0 parent 1:3 handle 3:0 sfq perturb 10 tc qdisc add dev eth0 parent 1:4 handle 4:0 sfq perturb 10 tc qdisc add dev eth0 parent 1:5 handle 5:0 sfq perturb 10 tc qdisc add dev eth0 parent 1:6 handle 6:0 sfq perturb 10 tc qdisc add dev eth0 parent 1:7 handle 7:0 sfq perturb 10 #============================================================= #============================================================= # Blok 4: Kompy w LAN'ie upload # Klasy dla poszczegolnych kompow tc class add dev ppp0 parent 1:1 classid 1:5 htb rate 50kbit ceil 120kbit prio 1 # COLOSUS tc class add dev ppp0 parent 1:1 classid 1:6 htb rate 40kbit ceil 120kbit prio 1 # LEVIATAN tc class add dev ppp0 parent 1:1 classid 1:7 htb rate 30kbit ceil 90kbit prio 2 # JURCOKI # "Sprawiedliwe kolejkowanie" tc qdisc add dev ppp0 parent 1:5 handle 5:0 sfq perturb 10 tc qdisc add dev ppp0 parent 1:6 handle 6:0 sfq perturb 10 tc qdisc add dev ppp0 parent 1:7 handle 7:0 sfq perturb 10 # Filtry dla kompow tc filter add dev ppp0 protocol ip parent 1:0 handle 20 fw flowid 1:5 # COLOSUS tc filter add dev ppp0 protocol ip parent 1:0 handle 21 fw flowid 1:6 # LEVIATAN tc filter add dev ppp0 protocol ip parent 1:0 handle 22 fw flowid 1:7 # JURCOKI # Nadajemy poszczegolnym pakietom znaczniki iptables -t mangle -D POSTROUTING -o ppp0 -j MYOUT iptables -t mangle -F MYOUT iptables -t mangle -X MYOUT iptables -t mangle -N MYOUT iptables -t mangle -I POSTROUTING -o ppp0 -j MYOUT iptables -t mangle -A MYOUT -p tcp -s 10.0.0.2 -j MARK --set-mark 20 # COLOSUS (tcp) iptables -t mangle -A MYOUT -p udp -s 10.0.0.2 -j MARK --set-mark 20 # COLOSUS (udp) iptables -t mangle -A MYOUT -p tcp -s 10.0.0.3 -j MARK --set-mark 21 # LEVIATAN (tcp) iptables -t mangle -A MYOUT -p udp -s 10.0.0.3 -j MARK --set-mark 21 # LEVIATAN (udp) iptables -t mangle -A MYOUT -p tcp -s 10.0.0.4 -j MARK --set-mark 22 # JURCOKI (tcp) iptables -t mangle -A MYOUT -p udp -s 10.0.0.4 -j MARK --set-mark 23 # JURCOKI (udp) #=============================================================
Prosze o sprawdzenie i ew. uwagi co do tego skryptu.
Między czasie zmienila sie konfiguracja sieci :)
Offline
Witam.
Ja również mam problem z zaprojetowaniem regółek a dopisuje się do tego postu, gdyż problem jest podobny.
Dzielę łącze 256kb/s na dwa komputery. W serwerze mam trzy sieciówki:
eth0 -> do internetu
eth1 -> do pierwszego kompa
eth2 -> do drugiego kompa
ponieważ łącze dzielone jest na dwa kompy to nie ma większego problemu z dostępem do netu, ale żeby bardziej wykorzystać łącze postanowiłem uruchomić na serwerze klienta p2p. Wtedy to szybkość połączenia z internetem na pozostałych kompach drastycznie spadła.
Próbowałem stworzyć coś z regółek HTB, ale nie znalazłem nic, jak zrobić kolejki na dwa interfejsy z dodatkowym zmniejszaniem przepustowości dla usług na serwerze :(
Czy ktoś ma jakiś pomysł?
Pozdrawiam
Offline
A czemu masz oddzielną karte sieciową na każdego kompa?
w takim przypadku nie możesz zrobić np dynamicznego przyedzialania pasma do tych kompów.
radze wszystko podpiąć do jednej sieciówki.
W przypadku twojego rozwiązania możesz coś zrobić jedynie jedynie z uploadem np
tc qdisc add dev $DEV root handle 1: htb default 2 tc class add dev $DEV parent 1: classid 1:1 htb rate 128kbit ceil 256kbit burst 6k prio 1 # to na ruch prio tc class add dev $DEV parent 1: classid 1:2 htb rate 128kbit ceil 256kbit burst 6k prio 2 #to na reszte tc filter add dev $DEV parent 1: protocol ip prio 10 u32 match ip protocol 1 0xff flowid 1:1 #pakiety icmp tc filter add dev $DEV parent 1: protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:1 #pakiety z nagłówkiem TOS 0x10 #kolejkowanie tc qdisc add dev $DEV... itd iptables -t mangle -A POSTROUTING -o $DEV -p tcp --tcp-flags ACK ACK -m length --length :128 -j TOS --set-tos 0x10 iptables -t mangle -A POSTROUTING -o $DEV -p tcp --tcp-flags SYN SYN -m length --length :128 -j TOS --set-tos 0x10 iptables -t mangle -A POSTROUTING -o $DEV -p udp -m length --length :128 -j TOS --set-tos 0x10
#=============================================================
# BLOK 1: Serwer - download
# Nie wiem jak i czy sie da to zrobic :P
#============================================================= [/quote]
tc qdisc add dev $dev handle ffff: ingress
tc filter add dev $dev parent ffff: protocol ip prio 10 u32 match ip dport 27960 0xffff police rate 128kbit burst 10k drop flowid :1
[/quote]
TYlko nie wiem za bardzo czy o to Ci dokładnie chodziło :P
POzdrOffline
Samo ograniczenie uploadu nie będzie rozwiązaniem, gdyż w momencie gdy klient p2p będzie coś ściągał to i tak reszta ma ograniczone łączę. Postanowiłem odgrzebać ze strychu jeszcze jednego starego kompa, dokupić switcha i zrobć coś takiego:
serwer
|
switch
| | |
| | `kompA
| `kompB
`klient p2p (jeżeli tylko do tego będzie służył to mam nadzieję że procek 100MHz i 64MB RAM wytrzyma)
przy czym dobrze by było, gdyby wszystkie kompy w sieci się widziały i możliwa była wymiana danych między nimi.
Na razie szukam w sieci pomocy do napisania skryptu kolejkowania, bo sam niestety sobie nie poradzę, więc z góry dziękuje za pomoc. Głównym celem jest zapewnienie internetu dwóm kompom A i B (zgodnie z wykresem), a klient p2p korzystał by z sieci dopiero wtedy, gdy byłaby nie wykorzystywana przez pozostałe komputery. Dodam jeszcze, że mój provider dostarcza mi łącze download 256 kb/s i upload 128kb/s ( tak mam na umowie chociaż trochę to mnie dziwi w momencie, gdy ktoś ściąga ode mnie z prędkością 20kB/s - czy ktoś może mi to wytłumaczyć? :) )
No ale wracając do problemu, na szczęście takie rozwiązanie było już wielokrotnie wałkowane i mam nadzieję, że nie będę musiał długo szukać.
pozdrawiam
Offline
Time (s) | Query |
---|---|
0.00015 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00101 | 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.144.40.239' WHERE u.id=1 |
0.00066 | UPDATE punbb_online SET logged=1732547958 WHERE ident='3.144.40.239' |
0.00027 | SELECT * FROM punbb_online WHERE logged<1732547658 |
0.00045 | SELECT topic_id FROM punbb_posts WHERE id=38252 |
0.00029 | SELECT id FROM punbb_posts WHERE topic_id=4800 ORDER BY posted |
0.00047 | 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=4800 AND t.moved_to IS NULL |
0.00040 | SELECT search_for, replace_with FROM punbb_censoring |
0.01082 | 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=4800 ORDER BY p.id LIMIT 0,25 |
0.00082 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=4800 |
Total query time: 0.01538 s |