Policy routing

Wstęp

Polityki routing są techniką pozwalającą na podejmowanie decyzji związanych z trasowaniem na podstawie polityk zdefiniowanych przez administratora. W tradycyjnym routingu, gdy router otrzymuje pakiet, podejmuje decyzję na podstawie adresu docelowego zawartego w pakiecie IP. Porównując adres IP z tablicą routingu wie dokąd skierować pakiet (next-hop). Bywają jednak sytuacje stwarzające potrzebę kierowania pakietów na podstawie innych przesłanek. Administrator sieci może stwierdzić, że chciałby podejmować decyzję o kierowaniu pakietów na podstawie adresu źródłowego, czy portu docelowego, wielkości pakietu, czy przenoszonego protokołu warstwy wyższej.

Informacja

Uwaga !!! Fakt kierowania pakietami na podstawie adresu źródłowego nie oznacza, że jest to tzw. source routing.

Tablice routingu w systemie Linux

W systemach Linux polityki routingu można tworzyć od wersji jądra 2.2. Umożliwia to pakiet iproute, który daje możliwość tworzenia wielu tablic routingu oraz reguł. Dodatkowo współpracując ze znacznikami nadawanymi przez iptables, administrator jest w stanie uzyskać bardzo zaawansowane polityki routingu.

Tablice routingu w systemie Linux zdefiniowane są w pliku /etc/iproute2/rt_tables. Można je także wyświetlić komendą: ip rule show.

Wylistowanie wpisów w odpowiedniej tablicy routingu wykonuje się poleceniem: ip route list table NAZWA, np. poniższe polecenie pokaże nam tablicę główną.

#> ip route list table main

Tworzenie nowych tablic wykonuje się dodając wpis do pliku rt_tables, np. dodanie tablicy mops, można zrobić następująco: echo 200 mops >> /etc/iproute2/rt_tables. Numer 200 oznacza priorytet tablicy (niższy priorytet przetwarzany jest wcześniej).

Reguły routingu

Gdy mamy zdefiniowane tablice, można dodawać reguły, pakiet iproute2 pozwala nam na zdefiniowanie reguł bazujących na kilku wyznacznikach: adresie docelowym, adresie źródłowym, znaczniku iptables fwmark, polu tos, interfejsie wejściowym i wyjściowym, więcej informacji - ip rule add help.

W poniższym przykładzie zdefiniowana zostanie polityka routingu na podstawie adresu źródłowego, mówiąca, że pakiety z adresu 192.168.1.2 będą przetwarzane przez tablicę mops, zdefiniowaną we wcześniejszym punkcie. Następnie stworzona zostaje trasa domyślna dla tablicy mops.

#> ip rule add from 192.168.1.2 table mops
#> ip route add default via 1.2.3.4 dev eth0 table mops

Reguły wbudowane w pakiet iproute2 dają dość ograniczone możliwości klasyfikowania ruchu. Więcej opcji można osiągnąć stosując mechanizm znaczników iptables. Poniższy przykład znakuje pakiety z adresu 192.168.1.2 wychodzące na port 90 znacznikiem 90.

#> iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 90 -j MARK --set-mark 90

Tak oznaczone pakiety, można klasyfikować za pomocą komendy ip rule i przełącznika fwmark.

Ćwiczenia

../_images/policy-routing1.png

Rys.1. Policy routing zadanie

  1. Stwórz politykę routingu zgodnie z rysunkiem Rys.1. Idea sieci VLAN. Router A powinien trasować pakiety od komputera X bramą C, od komputera Y bramą B.
  2. Korzystając z pakietu iptables, spraw, żeby ruch z komputera X na port 80 wychodził bramą B, reszta ruchu bramą C.