Sieć tonid.net
Tomasz Nidecki
Skrypty HTB + IPTABLES
Wymagania systemowe
Aby zastosować skrypty potrzebne są następujące elementy:
Kernel z obsługą HTB3
Elementem niezbędnym do działania skryptów jest kernel z obsługą HTB.
- Kernel 2.4.20 i nowsze wersje mają wbudowaną obsługę HTB. Jądra dostarczane z różnymi dystrybucjami mogą mieć jednak wyłączoną obsługę HTB lub też wymagać uruchomienia modułu z obsługą HTB. Jeśli obsługi HTB nie ma ani w jądrze, ani w module, sugeruje się samodzielną rekompilację kernela. Jeśli obsługa HTB jest w module, należy tak zmodyfikować skrypty, by moduł był przez nie uruchamiany. Skrypty zakładają, że HTB jest wkompilowane w jądro.
- Wcześniejsze wersje kernela nie mają obsługi HTB. Sugeruje się pobranie ze strony autora HTB stosownej łatki do kernela bądź też zainstalowanie kernela 2.4.20 lub wyższej wersji.
- Skrypty nie będą pracować z wersjami kernela poniżej 2.4.x (czyli np. 2.2.x), ponieważ kernele te nie obsługują iptables. Choć można stosować HTB w kernelach serii 2.2.x, to brak iptables, a jednocześnie możliwości znakowania pakietów, uniemożliwi kontrolę pasma wychodzącego. To z kolei spowoduje, że skrypty będą niezbyt użyteczne szczególnie dla użytkowników DSL (Neostrada, Internet DSL), gdzie kluczem do skutecznego dzielenia pasma jest kontrola pasma wychodzącego.
iproute2
Do korzystania z HTB konieczny jest pakiet iproute2, a konkretnie program tc z tego pakietu. Standardowe iproute2 nie obsługuje HTB.
- Ze strony autora HTB można pobrać plik zawierający program tc z wkompilowaną obsługą HTB.
- Można również samodzielnie zrekompilować iproute2 stosując łatkę ze strony autora HTB.
esfq
Elementem opcjonalnym, ale bardzo przydatnym jest esfq, które umożliwia bardziej sprawiedliwy podział łącza niż dostępne standardowo w kernelu sfq.
- Aby skorzystać z esfq konieczne jest pobranie łatek ze strony autora, zastosowanie łatki na kernel oraz łatki na iproute2, a następnie zrekompilowanie kernela i iproute2.
- Aby skorzystać z sfq zamiast esfq należy zmodyfikować skrypty (zamieniając "esfq" na "sfq" i usuwając opcje niedostępne w sfq, czyli "hash").
- Uwaga - podobnie jak HTB, sfq może być nieuaktywnione w kernelu dostępnym w standardowej dystrybucji. Należy więc uruchomić stosowny moduł lub zrekompilować jądro.
netfilter/iptables
Do poprawnego działania skryptów potrzebny jest również pakiet netfilter/iptables. Pakiet ten jest standardowo dostępny w jądrach serii 2.4.x i wyższych wersjach, jednak nie zawiera on wszystkich niezbędnych elementów.
- Elementem niezbędnym do działania skryptów jest znakowanie pakietów. Aby dołożyć znakowanie pakietów do iptables należy pobrać kod źródłowy iptables oraz patch-o-matic, uruchomić patch-o-matic i dołożyć do iptables łatkę MARK_operations.patch.
- Elementem opcjonalnym ale bardzo przydatnym jest łatka do iptables o nazwie iplimit. Umożliwia ona ograniczenie liczby jednoczesnych połączeń dla użytkownika lub dla całej sieci. Dzięki temu można uniknąć problemów z terminalami HiS lub DSL, które zawieszają się przy zbyt dużej jednoczesnej liczbie połączeń. Programy p2p wykorzystywane przez użytkowników sieci mogą zaś spowodować zbyt dużą liczbę jednoczesnych połączeń. Łatkę iplimit również można dołożyć stosując patch-o-matic. W najnowszych wersjach iptables/netfilter łatka ta jest dostępna pod nazwą connlimit. Aby skorzystać z nowszej wersji łatki konieczna jest modyfikacja skryptów: zamiana fragmentów wykorzystujących iplimit na connlimit.