Trasy wymagane do dostarczenia pakietów do miejsca docelowego są skonfigurowane w interfejsie lub routerze. Jeśli komputer ma za zadanie wysłać pakiet do sieci, sprawdza tablicę routingu, która zawiera listę docelowych adresów IP oraz adresy interfejsów i routerów w sieci domowej, które mogą wysłać pakiet pod właściwy adres. Jeśli dla miejsca docelowego nie określono żadnej trasy, najpierw używana jest tak zwana brama domyślna lub trasa domyślna. Dokładnie ten sam schemat jest obserwowany na routerze. Urządzenie sprawdza docelowy adres IP i porównuje go ze swoją tablicą routingu, a następnie wysyła go dalej. Następnie przyjrzyjmy się, jak skonfigurować określone trasy i utworzyć nowe trasy na przykładzie.
Zanim zaczniesz cokolwiek zmieniać, musisz zrozumieć, jakie reguły są już używane. W tym celu system operacyjny Linux udostępnia kilka poleceń. Aby to zrobić, używamy specjalnego polecenia route
:
$ route
Tak wygląda tablica routingu systemu Linux. Dostarcza ona prostych informacji, które nie zawsze są wystarczające, aby zrozumieć sedno sprawy. Aby uzyskać bardziej szczegółowe informacje, należy użyć polecenia routel
:
$ routel
Tutaj można zobaczyć adres IP (docelowy), adres IP bramy, źródłowy adres IP, protokół, a nawet interfejs sieciowy. Istnieje jednak wygodniejszy sposób na wyświetlenie tablicy routingu systemu Linux za pomocą polecenia IP:
$ ip route
Widzimy wynik, który jest podobny do wyjścia poprzedniego polecenia. Ponieważ dane wyjściowe nie są w najwygodniejszej formie, można użyć ip
route
add
lub ip route del
jako argumentu do ip route
add
lub ip route del
. Uwierz mi, jest to bardzo wygodne. W ten sposób wszędzie zobaczysz 192.168.1.1
jako bramę domyślną. Następnie porozmawiajmy o tym, co oznaczają dane wyjściowe tego polecenia:
default
- opcja domyślna. Powinien to być docelowy adres IP lub maska podsieci;via 192.168.1.1.1
- wskazuje, przez którą bramę możemy osiągnąć ten cel, dla nas jest to 192.168.1.1;
dev enp2s0
- interfejs sieciowy, przez który ta brama będzie dostępna;proto static
oznacza, że trasa została ustawiona przez administratora, kernel oznacza, że została ustawiona przez jądro;metric
- jest to priorytet trasy, im niższa wartość, tym wyższy priorytet.Następnie zobaczmy, jak konfigurowane są trasy w systemie Linux.
Użytkownik nadal ma możliwość konfigurowania tablicy routingu za pomocą polecenia ip
. Na przykład, aby zmienić domyślną trasę, wystarczy wykonać polecenie ip:
$ ip route add default via 192.168.1.1
W ten sposób można dodać trasę dla dowolnego adresu IP, na przykład 243.143.5.25
:
$ sudo ip route add 243.143.5.25 via 192.168.1.1
Określamy więc docelowy adres IP, a następnie bramę w sieci lokalnej, przez którą można dotrzeć do tego adresu. Jedynym problemem jest to, że takie trasy są aktywne do pierwszego restartu komputera. Po restarcie są one automatycznie usuwane. Aby naprawić ten błąd, trasy muszą zostać dodane do pliku konfiguracyjnego.
Przykładowo, systemy z rodziny Red Hat posiadają pliki konfiguracyjne /etc/sysconfig/network-scripts/route-ethX
. Każdy plik może opisywać wiele tras, np:
GATEWAY=10
.10.0.0.1NETMASK=255
.0.0.0IPADDR=10
.10.0.0.22
Ten plik konfiguracyjny używa gateway, czyli bramy dla interfejsu, netmask
to maska sieci, a ipaddr
to adres IP interfejsu. W Debianie i innych dystrybucjach można konfigurować trasy w pliku /etc/network/interfaces
. Tutaj polecenie route jest dodawane do sekcji iface
. Na przykład:
up route add -net 10.10.0.0 netmask 255.0.0.0 gw 10.10.0.1
Za pomocą iface -net
określamy sieć docelową, netmask
to maska sieci, a gw
to brama. Nie ma w tym nic skomplikowanego. Teraz dodane trasy pozostaną nawet po ponownym uruchomieniu komputera.
Zobaczyliśmy więc jak działa routing w Linuksie, jak jest on konfigurowany i dlaczego jest niezbędny.