/ Linux Reviews / Networking / Kształtowanie Ruchu i Zaawansowany Routing HOWTO - en - pl


Rozdział 11. Netfilter & iproute - oznaczanie pakietów

Jak na razie, widzieliśmy jak działa iproute i wspomnieliśmy o netfilter. Jest to dobry moment by przejrzeć kolekcję poradników Rustyego:. Sam pakiet netfilter można znaleźć pod tym.

Netfilter pozwala na filtrowanie pakietów i grzebanie w ich nagłówkach. Jedną ze specjalności jest możliwość znaczenia pakietów numerami. Można to zrobić posługując się opcją --set-mark.

Jako przykład, to polecenie znaczy wszystkie pakiety wysłane na port 25, czyli wychodzące połączenie pocztowe SMTP:

# iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 25 \
 -j MARK --set-mark 1

Teraz załóżmy, że mamy wiele połączeń, jedno bardzo szybkie (i bardzo drogie, rozliczane za megabajty) i drugie wolniejsze, ale prawie za darmo. Chcielibyśmy zapewne, by wychodząca poczta przechodziła przez to tańsze.

Oznaczyliśmy już takie połączenia numerem `1', teraz poinstruujemy bazę danych polityki routingu by odpowiednio kierowała ruchem:

# echo 201 mail.out >> /etc/iproute2/rt_tables
# ip rule add fwmark 1 table mail.out
# ip rule ls
0:       from all lookup local 
32764:       from all fwmark        1 lookup mail.out 
32766:       from all lookup main 
32767:       from all lookup default 

Teraz wygenerujemy tabelę mail.out dla routowania na wolne, ale tanie łącze:

# /sbin/ip route add default via 195.96.98.253 dev ppp0 table mail.out

I to już. Jeśli chcielibyśmy zrobić jakieś wyjątki jest wiele różnych sposobów. Możemy zmodyfikować polecenie netfilter, by wyłączyło pewne hosty, możemy wstawić regułę z niższym priorytetem, która wskazuje na główną tabelę dla wyłączonych z grupy hostów.

Możemy również używać tej cechy by honorować bity ToS, przez oznaczanie pakietów różnymi numerami w zależności od zdefiniowanych w tabeli ToS i jednocześnie stworzenie reguł filtrujących na tej podstawie. W ten sposób możemy np. przeznaczyć połączenie ISDN na dedykowane sesje interaktywne.

Oczywiście, działa to również gdy prowadzimy NAT (maskaradę).

WAŻNE: Otrzymaliśmy informacje, że MASQ i SNAT kolidują ze sobą jeśli chodzi o znaczenie pakietów. Rusty Russell wyjaśnia to w tym poście. Musisz wyłączyć filtr kolejki wychodzącej by działało to poprawnie.

UWAGA: By oznaczać pakiety, musisz mieć włączone pewne opcje w konfiguracji jądra:

IP: advanced router (CONFIG_IP_ADVANCED_ROUTER) [Y/n/?]
IP: policy routing (CONFIG_IP_MULTIPLE_TABLES) [Y/n/?]
IP: use netfilter MARK value as routing key (CONFIG_IP_ROUTE_FWMARK) [Y/n/?]

Zajrzyj również do Sekcja 15.5 w Cookbook.


/ Linux Reviews / Networking / Kształtowanie Ruchu i Zaawansowany Routing HOWTO