Sieci te są transmitowane przez pakiety. Pakiety przechodzą przez kilka innych węzłów sieci przed dotarciem do miejsca docelowego, aby zakończyć na początku sieci lokalnej miejsca docelowego, a następnie bezpośrednio do miejsca docelowego. Nierzadko zdarza się, że takie pakiety błądzą. Aby skierować je na właściwą ścieżkę w sieci, każdy pakiet ma określony czas życia.
Parametr TTL jest odpowiedzialny za jego żywotność. Jest to liczba węzłów, przez które pakiet może przejść, zanim zostanie zniszczony. Podczas przechodzenia przez każdy węzeł, wartość TTL maleje, aż osiągnie wartość zero Im wyższy TTL, tym bardziej zawiłe sieci może przemierzać pakiet.
Niskopoziomowe parametry sieci TTL w systemie Linux są kontrolowane przez jądro. Można je skonfigurować za pomocą interfejsu konfiguracji jądra. Jakiego TTL używa system?
Użyjmy polecenia ping:
$ ping 127.0.0.1
W pakiecie wysyłającym dane możemy zobaczyć TTL, z jakim pakiet został wysłany. Widzimy, że użyta wartość to 64. W systemie Windows używana jest wartość TTL 128. Zwykle jest to wystarczające, ponieważ między węzłami sieci znajduje się co najmniej 20-30 routerów. Nie zawsze warto zmieniać TTL, aby pakiety mogły dotrzeć do miejsca docelowego.
Zmiana TTL jest możliwa poprzez dostosowanie parametru net.ipv4.ip_default_ttl.
Wypróbujemy takie polecenie:
$ sudo sysctl -w net.ipv4.ip_default_ttl=65
Aby zmiany utrzymały się po restarcie można zapisać taką linijkę ustawień do pliku /etc/sysctl.conf:
$ sudo vi /etc/sysctl.conf
net.ipv4.ip_default_ttl=65
After TTL will be 65:
Jeśli nie chcemy zmieniać ustawień jądra, możemy zmodyfikować TTL dla pakietów przechodzących przez filtr sieciowy iptables. Aby to zrobić, uruchom polecenie takie jak to:
$ iptables -t mangle -A POSTROUTING -j TTL --ttl-set 65
To również zadziała. Zmiana TTL w systemie Linux nie jest wcale trudna.