Směrování určuje cestu, kterou má být datagram dopraven k adresátovi. Pravidla pro směrování se zapisují do směrovací tabulky v jádře pomocí příkazu route.
# route - vypíše obsah směrovací
tabulky
# route -n - vypíše obsah
směrovací tabulky, ale nepřevádí adresy a jména
sítí
Přidání pravidel do směrovací tabulky:
# route add default gw 192.168.0.1 - nastaví defaultní bránu na adresu 192.168.0.1
Defaultní brána určuje cestu kam mají jít datagramy, které nevyhovují záznamům v routovací tabulce. Chceme-li se například připojit na adresu 130.168.20.1 routovací tabulka v jádře pozná že uvedená adresa nevyhovuje naší síťi a pošle datagram přes námi nastavenou bránu 192.168.0.1, která ho pošle dál až nakonec dorazí na správnou adresu. Princip funguje dobře, protože routování musí být nastaveno u všech zařízení připojených do internetu.
# route add -net 192.168.8.130 netmask 255.255.255.0 dev eth0
Nastaví že podsíť 192.168.8.130 je dostupná přímo přes první síťovou kartu - eth0.
# route add -net 192.168.3.0 gw 192.168.33.6 dev eth1
Není-li podšíť 192.168.3.0 přímo dostupná přes naše síťové rozhraní, data půjdou přes počítač 192.168.33.6 který je dostupný přes rozhraní eth1. Počítač 192.168.33.6 musí mít nastaveno routování aby data dorazila k cíli.
route add -host 192.168.3.20 gw 192.168.33.3
Nastaví že data z počítače 192.168.3.20 půjdou přes adresu(počítač/router) 192.168.33.3
route add -net 127.0.0.0
Tento příkaz nastaví routování loopbacku.
Smazání ze směrovací tabulky se provede příkazem:
# route del 10.101.132.130
Jednoduchý postup si můžeme demonstrovat na následujícím příkladu:
Mezi internetem a lokální síťí LAN máme linux router. Na routeru musíme nastavit, že síť 192.168.0.xx je dostupná přes rozhraní eth0.
# route add -net 192.168.0.0 netmask 255.255.255.0 dev eth0
Pro směrování paketů do internetu nastavíme na routeru defaultní bránu na rozhraní ke kterému je připojen internet (eth1, ppp0, ...).
# route add default dev eth1
Na stanicích v síti LAN je potřeba nastavit:
# route add default gw 192.168.0.1 dev eth0
Pakety, které nemají adresu v místní síti, půjdou přes router (který je předá na internet).
Aby bylo vše funkční musíme na linuxovém routeru zapnout přeposílání paketů. V souboru /proc/sys/net/ipv4/ip_forward najdeme jestli je přeposílání paketů zapnuté (1) nebo vypnuté (0).
Ruční zapnutí provedeme například pomocí příkazu # echo "1" > /proc/sys/net/ipv4/ip_forward
Automaticé zapínání podpory přeposílání paketů po startu systému provedeme editací souboru /etc/sysctl.conf, kde nastavíme:
net.ipv4.ip_forward = 1
Pro plnou funkčnost je ještě potřeba nastavit překlad adres (NAT, maškaráda), to se provádí pomocí iptables například takto:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Tento příkaz zapne překlad na rozhraní eth1, které je připojené k internetu. NAT můžeme zapnout například i pomocí příkazu:
iptables -t nat -A POSTROUTING -s 192.168.0.1/24 -d ! 192.168.0.1/24 -j SNAT --to 62.77.98.70
Pomocí tohoto příkazu jsme řekli že všechny pakety z počítačů ve vnitřní síťi 192.168.0.1/24 budou mít na vnějším rozhraní eth1 (62.77.98.70) routeru adresu tohoto rozhraní. Překlad se postará aby vrácené pakety z intarnetu dorazili na správný počítač ve vnitřní síti.
Otestovat směrování můžeme pomocí:
1. ping (IP adresa)
2. traceroute (IP adresa) - tento příkaz
se snaží určit cestu, která vede k zadanému cíli