Se siete arrivati direttamente qui forse è più conveniente per voi che leggiate le puntate precedenti, a partire dalla Prima puntata degli Appunti di Reti. In questa pagina parliamo della tabella di routing o tabella di instradamento.

Tutti i dispositivi di rete che usano il protocollo TCP/IP hanno una tabella di instradamento o, come si dice comunemente, di routing. Quindi la tabella di routing è qualcosa che ha a che fare con l’interfaccia di rete. Ogni interfaccia di rete (per esempio possiamo avere un’interfaccia ethernet, un’interfaccia Wireless e una interfaccia virtuale, attraverso alla quale, per esempio, ci colleghiamo ad una VPN). TUTTI i dispositivi di rete usano la propria tabella di routing per determinare dove devono inviare i pacchetti. Senza tabella di routing il tuo PC o il tuo smartphone non sarebbe in grado di comunicare con i dispositivi che si trovano sulla stessa rete. Questa che segue è la tabella di routing del mio pc; il comando Linux per ottenerla è
marcob@jsbach[14:27:47]:~$ route -n Tabella di routing IP del kernel Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.1.23.254 0.0.0.0 UG 100 0 0 enp1s0 10.1.23.0 0.0.0.0 255.255.255.0 U 100 0 0 enp1s0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 virbr0 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
Le informazioni fondamentali che possiamo leggere sono le seguenti:
Le prime due righe riguardano l’interfaccia ethernet (fisica) a bordo del mio pc; le ultime due invece un’interfaccia virtuale con la quale sono connesso ad una VPN di un cliente.
Occorre leggere gli indirizzi associandoli alla netmask. La combinazione 0.0.0.0 + 0.0.0.0 significa TUTTI GLI INDIRIZZI IP e in corrispondenza a questa c’è il gateway 10.1.23.254. Ciò vuol dire che quale che sia l’indirizzo a cui dobbiamo spedire il pacchetto (ad esempio www.google.com) il router da contattare è in ogni caso il gateway 10.1.23.254. Il gateway è un router particolare con il quale la mia sottorete 10.1.23.0 si connette ad una sottorete più ampia, porebbe anche essere Internet (ma non lo è direttamente in questo caso). La metrica associata a questa scheda di rete è 100, ma in questo caso è irrilevante, sono obbligato a passare per il gateway. Il mio indirizzo IP (quello della mia scheda di rete ethernet) lo leggo con il comando ifconfig:
marcob@jsbach[14:31:47]:~$ ifconfig enp1s0: flags=4163 mtu 1500 inet 10.1.23.228 netmask 255.255.255.0 broadcast 10.1.23.255 inet6 fe80::f152:defa:9f22:1355 prefixlen 64 scopeid 0x20 ether dc:4a:3e:db:c2:e9 txqueuelen 1000 (Ethernet) RX packets 235336 bytes 224613534 (224.6 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 134235 bytes 25449628 (25.4 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000 (Loopback locale) RX packets 16184 bytes 1488762 (1.4 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 16184 bytes 1488762 (1.4 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099 mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:21:b0:39 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Qui ho tre interfacce: ethernet (enp1s0), loopback (lo) e la VPN (vribr0); le infomazioni più importanti che ricavo da questo comando sono: l’indirizzo IP (10.1.23.228) e la subnet mask (255.255.255.0).
Per il funzionamento delle maschere di rete c’è una sezione apposita.
Torniamo alla tabella. La seconda riga (sempre dell’interfaccia ethernet) ha la riga
10.1.23.0 0.0.0.0 255.255.255.0 U 100 0 0 enp1s0
Questa riga ci dice che per tutti gli indirizzi della mia sottorete non ho router, cioè il sistema operativo spedisce il pacchetto direttamente al dispositivo, formando semplicemente nel Destination IP il numero del dispositivo locale (potrebbe essere un altro PC, il DNS -es. 10.1.23.101-, un NAS o una stampante -es. 10.1.23.45- ). Se non ci fosse questa riga dovrei invocare sempre il gateway che però è lì solo per smistare i pacchetti su un’altra sottorete.
Ci sono poi in questo caso gli indirizzi per connettersi alla VPN, si noti come per contattare la sottorete 196.254.*.*
non venga utilizzato il gateway a questo traffico sia considerato come locale, e lo stesso per la sottorete 192.168.122.*
I risultati del comando route -n si possono ottenere anche con netstat -rn e adesso vediamo in dettaglio le colonne della tabella:
- Destination: la sottorete o l’host di destinazione;
- Gateway: il router da usare per raggiungere la destinazione;
- Genmask: net mask (vedi sezione dedicata);
- Flags: descrive certune caratterstiche della rete. Possibili valori sono U (la rotta è stabilita e operativa), H (la rotta punta ad un host – in generale le rotte portano non a host ma a subnet), G (la rotta punta ad un gateway)
- Metric: l’indice di convenienza di una rotta;
- Ref: quante volte la rotta è stata usata;
- Use: quanti pacchetti sono stati spediti su quella rotta;
- Iface: l’identificativo dell’interfaccia
Commenti recenti