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?

../_images/routing1.png

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

../_images/routing-example1.png

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:

  1. Ruter R1 wyodrębnia z pakietu adres sieci docelowej: operacja AND na 40.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.
  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.

  3. 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 adresie 40.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 lub ip 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 adresie 192.168.1.254 dla urządzenia eth0: 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

  • usuń trasę do sieci 192.168.55.0/24 dla urządzenia eth0: 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
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
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

Ustawienie na stałe: /etc/sysctl.conf

Ankieta