Queste reti sono trasmesse da pacchetti. I pacchetti passano attraverso diversi altri nodi di rete prima di raggiungere la loro destinazione, per finire all'inizio della rete locale della destinazione e poi direttamente alla destinazione. Non è raro che questi pacchetti si perdano. Per indirizzarli verso il percorso giusto nella rete, a ogni pacchetto viene assegnata una certa durata.
Il parametro TTL è responsabile della sua durata. Si tratta del numero di nodi che un pacchetto può superare prima di essere distrutto. Durante il passaggio di ogni nodo, il valore TTL diminuisce fino a raggiungere un valore pari a zero. Più alto è il TTL, più contorte sono le reti che il pacchetto può attraversare.
I parametri di rete TTL di basso livello in Linux sono controllati dal kernel. Possono essere configurati utilizzando l'interfaccia di configurazione del kernel. Quale TTL utilizza il sistema?
Utilizziamo il comando ping:
$ ping 127.0.0.1
Nei dati di invio del pacchetto possiamo vedere il TTL con cui è stato inviato il pacchetto. Si può notare che il valore utilizzato è 64. Per Windows, si utilizza un valore TTL di 128. Di solito questo valore è sufficiente, dato che ci sono almeno 20-30 router tra i nodi della rete. Non sempre vale la pena modificare il TTL per far sì che i pacchetti raggiungano la loro destinazione.
È possibile modificare il TTL regolando il parametro net.ipv4.ip_default_ttl.
Proviamo a eseguire un comando di questo tipo:
$ sudo sysctl -w net.ipv4.ip_default_ttl=65
Per far sì che le modifiche persistano dopo un riavvio, è possibile scrivere questa riga di impostazioni nel file /etc/sysctl.conf:
$ sudo vi /etc/sysctl.conf
net.ipv4.ip_default_ttl=65
Dopo il TTL sarà 65:
Se non si vogliono modificare le impostazioni del kernel, si può modificare il TTL dei pacchetti quando passano attraverso il filtro di rete iptables. Per farlo, eseguire un comando come questo:
$ iptables -t mangle -A POSTROUTING -j TTL --ttl-set 65
Anche questo funziona. Modificare il TTL di Linux non è affatto difficile.