Shorewall - kolejkowanie
Kolejkowanie przeważnie dla mało zaawansowanych użytkowników systemu Linux budzi przerażenie z powodu komplikacji zagadnienia. W poniższym artykule postaram się pokazać jak za pomocą Shorewall (nakładki na iptables) ustawić całkiem zacnie działające kolejkowanie ruchu (przydział pasma na użytkownika końcowego). Dodatkowo pokaże jak ustawić aby:
- ruch do/z serwera lokalnego który jest bramą do internetu pracował z maksymalną szybkością np. 100Mbit
- na tym samym komputerze jest Squid, ruch z serwera proxy ma jednak być kolejkowany
Zakładamy że posiadamy łącze powiedzmy 6Mbit download oraz 512Kbit upload, serwer z systemem Linux, dwie karty sieciowe. Jedna karta służy nam do połączenia z ISP, druga do naszej sieci lokalnej. W pierwszej kolejności określamy możliwości naszych łącz WAN (eth0) i LAN (eth1) w pliku tcdevices:
#INTERFACE IN-BANDWITH OUT-BANDWIDTH eth0 6144kbit 512kbit eth1 100000kbit 100000kbit
Teraz zajmiemy się zaznaczaniem ruchu od/do komputerów w sieci lokalnej. Korzystamy z pliku tcrules. Pierwsze 4 reguły dotyczą ICMP (ping) oraz zapytań DNS. Zakładamy że nie chcemy ich kolejkować:
#MARK SOURCE DEST PROTO PORT(S) CLIENT USER TEST LENGTH TOS 1:F 0.0.0.0/0 0.0.0.0/0 icmp echo-request 1:F 0.0.0.0/0 0.0.0.0/0 icmp echo-reply 1:F 0.0.0.0/0 0.0.0.0/0 tcp 53 1:F 0.0.0.0/0 0.0.0.0/0 udp 53 1 $FW 192.168.0.0/24 all - 2 eth1:192.168.0.3/32 0.0.0.0/0 all - 3 eth1:192.168.0.3/32 0.0.0.0/0 all - 4 eth1:192.168.0.4/32 0.0.0.0/0 all - 5 eth1:192.168.0.5/32 0.0.0.0/0 all - 6 eth1:192.168.0.6/32 0.0.0.0/0 all - 7 eth1:192.168.0.7/32 0.0.0.0/0 all - 8 eth1:192.168.0.8/32 0.0.0.0/0 all - 9 eth1:192.168.0.9/32 0.0.0.0/0 all - 10 eth1:192.168.0.10/32 0.0.0.0/0 all - 2:F eth0:0.0.0.0/0 192.168.0.2/32 all - 3:F eth0:0.0.0.0/0 192.168.0.3/32 all - 4:F eth0:0.0.0.0/0 192.168.0.4/32 all - 5:F eth0:0.0.0.0/0 192.168.0.5/32 all - 6:F eth0:0.0.0.0/0 192.168.0.6/32 all - 7:F eth0:0.0.0.0/0 192.168.0.7/32 all - 8:F eth0:0.0.0.0/0 192.168.0.8/32 all - 9:F eth0:0.0.0.0/0 192.168.0.9/32 all - 10:F eth0:0.0.0.0/0 192.168.0.10/32 all -
Kolejną rzeczą jest określenie szybkości upload dla każdego z komputerów w naszej sieci lokalnej, robimy to w pliku tcclasses. Wartości w dużym skrótcie: pierwsza szybkość od lewej to wartość gwarantowana, druga wartość od lewej to wartość maksymalna (gdy jest wolne łączę)
#INTERFACE MARK RATE CEIL PRIORITY OPTIONS eth0 1 full full 1 tcp-ack,tos-minimize-delay eth0 2 64kbit 128kbit 6 default eth0 3 128kbit 128kbit 6 eth0 4 64kbit 128kbit 6 eth0 5 16kbit 16kbit 6 eth0 6 64kbit 128kbit 6 eth0 7 64kbit 128kbit 6 eth0 8 16kbit 16kbit 6 eth0 9 64kbit 128kbit 6 eth0 10 64kbit 64kbit 6
Teraz download, ten sam plik:
eth1 1 full full 1 tcp-ack,tos-minimize-delay eth1 2 1024kbit 1024kbit 6 default eth1 3 2048kbit 2048kbit 6 eth1 4 1024kbit 1024kbit 6 eth1 5 16kbit 16kbit 6 eth1 6 1792kbit 1792kbit 6 eth1 7 256kbit 256kbit 6 eth1 8 16kbit 16kbit 6 eth1 9 512kbit 512kbit 6 eth1 10 512kbit 512kbit 6
Poprawka na serwer proxy, niestety Shorewall nie potrafi kolejkować na tcout ale samo iptables tak:
iptables -t mangle -A tcout -o eth1 -s 192.168.0.1/32 -d 192.168.0.2/32 -p tcp --sport 3128 -j MARK --set-mark 0x2 iptables -t mangle -A tcout -o eth1 -s 192.168.0.1/32 -d 192.168.0.3/32 -p tcp --sport 3128 -j MARK --set-mark 0x3 iptables -t mangle -A tcout -o eth1 -s 192.168.0.1/32 -d 192.168.0.4/32 -p tcp --sport 3128 -j MARK --set-mark 0x4 iptables -t mangle -A tcout -o eth1 -s 192.168.0.1/32 -d 192.168.0.5/32 -p tcp --sport 3128 -j MARK --set-mark 0x5 iptables -t mangle -A tcout -o eth1 -s 192.168.0.1/32 -d 192.168.0.6/32 -p tcp --sport 3128 -j MARK --set-mark 0x6 iptables -t mangle -A tcout -o eth1 -s 192.168.0.1/32 -d 192.168.0.7/32 -p tcp --sport 3128 -j MARK --set-mark 0x7 iptables -t mangle -A tcout -o eth1 -s 192.168.0.1/32 -d 192.168.0.8/32 -p tcp --sport 3128 -j MARK --set-mark 0x8 iptables -t mangle -A tcout -o eth1 -s 192.168.0.1/32 -d 192.168.0.9/32 -p tcp --sport 3128 -j MARK --set-mark 0x9 iptables -t mangle -A tcout -o eth1 -s 192.168.0.1/32 -d 192.168.0.10/32 -p tcp --sport 3128 -j MARK --set-mark 0xa
Oczywiście teraz zmuszamy do korzystania z proxy przez użytkowników, dopisujemy regułę w pliku rules
DNAT loc loc:192.168.0.1:3128 tcp www - !192.168.0.1
Sam Shorewall ma wiele możliwości i znacznie ułatwia zarządzaniem regułami firewall’a. Więcej można poczytać ja jego stronach
Wpis “Shorewall - kolejkowanie” ma jeden komentarz
Dodaj komentarz



2011-01-07 o godz. 00:31
Dzieki wielkie
Prosto i na temat.