Routing statyczny¶
Internet składa się z mniejszych, połączonych ze sobą sieci komputerowych. Jak przesłać pakiet z dowolnego urządzenia w Internecie do dowolnego innego urządzenia, jeśli jego trasa przecina wiele podsieci?
Rutery (urządzenia warstwy sieciowej) przesyłają pakiety między sieciami. Router posiada tablicę trasowania (routing table) zawierającą:
- adres sieci docelowej (destination) i maskę podsieci (mask)
- bramę (gateway)
Przykładowo:
destination mask gateway 192.168.1.0
255.255.255.0
10.0.0.1
192.168.2.0
255.255.255.0
10.0.0.2
192.168.3.0
255.255.255.0
10.0.0.3
192.168.4.0
255.255.255.0
10.0.0.4
10.0.0.0
255.0.0.0
-
Jeśli pakiet przychodzący do rutera ma być wysłany na adres komputera 192.168.1.42/24, to ruter określa, że ma on trafić do sieci 192.168.1.0/24 (na podstawie destination,mask). Wtedy ruter przesyła pakiet na adres IP 10.0.0.1 (określonmy przez gateway).
Jeśli pakiet przychodzący do routera ma być wysłany do sieci w której router się znajduje (oznaczone -), to jest on rozgłoszony w odpowiedniej sieci.
Uwagi:
- Wybór trasy to proces wieloetapowy: dla danego pakietu, każdy kolejny ruter podejmuje niezależnie decyzję o tym, dokąd dalej ten pakiet przesłać.
- Adreś źródłowy pakietu nie jest brany pod uwagę przy wyznaczaniu trasy.
Typy routingu:
- routing statyczny (static routing) – zawartość tablicy routingu zdefiniowana przez administratora (na stałe),
- routing dynamiczny (dynamic routing) – tablica routingu wyznaczona jest przez protokół routingu (np. RIP, OSPF, IS-IS, IGRP) w czasie działania urządzenia.
- routing sprzętowy – realizowany przez hardware
- routing programowy – realizowany przez software
Przykład¶
Tablice tras:
R1¶
destination mask gateway 10.0.0.0
255.0.0.0
-
20.0.0.0
255.0.0.0
-
30.0.0.0
255.0.0.0
20.0.0.2
40.0.0.0
255.0.0.0
20.0.0.2
R2¶
destination mask gateway 10.0.0.0
255.0.0.0
20.0.0.1
20.0.0.0
255.0.0.0
-
30.0.0.0
255.0.0.0
-
40.0.0.0
255.0.0.0
30.0.0.2
R3¶
destination mask gateway 10.0.0.0
255.0.0.0
30.0.0.1
20.0.0.0
255.0.0.0
30.0.0.1
30.0.0.0
255.0.0.0
-
40.0.0.0
255.0.0.0
-
Wyznaczanie trasy¶
Obliczanie trasy dla pakietu wysłanego z sieci 10.0.0.0
pod adres 40.0.0.2
:
Ruter R1 wyodrębnia z pakietu adres sieci docelowej: operacja
AND
na40.0.0.2
i kolejnych maskach w swojej tablicy.
- Dla każdego wiersza w wyniku zawsze otrzymuje
40.0.0.0
.- Po każdym mnożeniu sprawdza, czy wynik jest równy destination danego wiersza.
- Po pomnożeniu przez czwartą maskę wynik jest równy destination, więc pakiet zostaje wysłany jest pod adres
20.0.0.2
.Ruter R2 po otrzymaniu pakietu postępuje dokładnie tak samo, jak R1, więc wysyła pakiet pod adres
30.0.0.2
.Ruter R3 po otrzymaniu pakietu powtarza całą procedurę i stwierdza, że siecią docelową jest
40.0.0.0
, czyli ta, w której sam jest obecny. Pakiet zostaje więc rozgłoszony w sieci lokalnej i odebrany przez komputer o adresie40.0.0.2
.
Routing statyczny w Linuksie¶
Komputer może wykonywac funkcje routera, jeśli ma ustawioną tablicę routingu i włączoną funkcję przenoszenia pakietów między logicznymi interfejsami (forwarding).
Tabela routingu¶
- Polecenie
ip route
: pokaż tablicę:
ip route
lubip route show
pokaż tablicę dla urządzenia
eth0
:ip route show dev eth0
dodaj trasę do sieci
192.168.55.0/24
przez ruter o adresie192.168.1.254
dla urządzeniaeth0
:ip route add 192.168.55.0/24 via 192.168.1.254 dev eth0
- dodaj domyślną bramę dla urządzenia
eth0
: ip route add default via 192.168.1.254
- dodaj domyślną bramę dla urządzenia
usuń trasę do sieci
192.168.55.0/24
dla urządzeniaeth0
:ip route delete 192.168.55.0/24 dev eth0
Forwarding¶
- Ustawienie za pomocą pliku
/proc/sys/net/ipv4/ip_forward
: - wartość
1
– włączony forwarding - wartość
0
– wyłączony forwarding
- wartość
- Manipulacja plikiem za pomocą
sysctl
: - wyświetl zawartość:
sysctl net.ipv4.ip_forward
- włącz forwarding:
sysctl -w net.ipv4.ip_forward=1
- wyłącz forwarding:
sysctl -w net.ipv4.ip_forward=0
- wyświetl zawartość:
- Manipulacja plikiem:
- wyświetl zawartość:
cat /proc/sys/net/ipv4/ip_forward
- włącz forwarding:
echo 1 > /proc/sys/net/ipv4/ip_forward
- wyłącz forwarding:
echo 0 > /proc/sys/net/ipv4/ip_forward
- wyświetl zawartość:
Ustawienie na stałe: /etc/sysctl.conf