Statické směrování (routování).

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:

route

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