I percorsi necessari per consegnare i pacchetti alla destinazione finale sono configurati nell'interfaccia o nel router. Se il computer deve inviare un pacchetto alla rete, consulta la tabella di routing, che elenca gli indirizzi IP di destinazione e gli indirizzi delle interfacce e dei router della rete domestica che possono inviare il pacchetto all'indirizzo corretto. Se non viene specificato alcun percorso per la destinazione, viene utilizzato prima il cosiddetto gateway predefinito o percorso predefinito. Lo stesso schema si osserva sul router. Il dispositivo esamina l'indirizzo IP di destinazione e lo controlla con la sua tabella di routing, quindi lo invia. Vediamo quindi come configurare percorsi specifici e crearne di nuovi con un esempio.
Prima di iniziare a modificare qualcosa, è necessario capire quali regole sono già in uso. A questo scopo, il sistema operativo Linux mette a disposizione diversi comandi. Per farlo, utilizziamo il comando speciale route
:
$ route
Ecco come appare la tabella di routing di Linux. Fornisce informazioni semplici, che non sempre sono sufficienti per ottenere il risultato desiderato. Per informazioni più dettagliate, è necessario utilizzare il comando routel
:
$ routel
Qui è possibile vedere l'indirizzo IP (destinazione), l'indirizzo IP del gateway, l'IP di origine, il protocollo e persino l'interfaccia di rete. Ma c'è un modo più comodo per vedere la tabella di routing di linux usando il comando IP:
$ ip route
Vediamo un risultato simile a quello del comando precedente. Poiché l'output non è nella forma più comoda, si può usare ip route add
o ip route del
come argomento di ip route
add
o ip route del
. Credetemi, è molto comodo. In questo modo si vedrà ovunque 192.168.1.1
come gateway predefinito. Parliamo ora del significato dell'output di questo comando:
default
- opzione predefinita. Dovrebbe essere l'indirizzo ip o la subnet mask di destinazione;via 192.168.1.1.1
- indica il gateway attraverso il quale è possibile raggiungere l'obiettivo, per noi è 192.168.1.1;
dev enp2s0
- l'interfaccia di rete attraverso la quale questo gateway sarà accessibile;proto static
significa che la rotta è stata impostata dall'amministratore, kernel significa che è stata impostata dal kernel;metric
- è la priorità della rotta; più basso è il valore, più alta è la priorità.Vediamo ora come si configurano le rotte di Linux.
L'utente ha ancora la possibilità di configurare la tabella di routing utilizzando il comando ip
. Ad esempio, per modificare la rotta predefinita è sufficiente eseguire il comando:
$ ip route add default via 192.168.1.1
In questo modo è possibile aggiungere una rotta per qualsiasi indirizzo IP, come ad esempio 243.143.5.25
:
$ sudo ip route add 243.143.5.25 via 192.168.1.1
Quindi, si specifica l'indirizzo IP di destinazione e poi un gateway sulla rete locale attraverso il quale raggiungere tale indirizzo. L'unico problema è che tali rotte sono attive fino al primo riavvio del computer. Dopo il riavvio, vengono automaticamente cancellate. Per correggere questa mancanza, le rotte devono essere aggiunte al file di configurazione.
Ad esempio, i sistemi della famiglia Red Hat dispongono di file di configurazione /etc/sysconfig/network-scripts/route-ethX
. Ogni file può descrivere più rotte, ad esempio
GATEWAY=10
.10.0.0.1NETMASK=255
.0.0.0.0IPADDR=10
.10.0.0.22
Questo file di configurazione usa gateway, che è il gateway dell'interfaccia, netmask
è la maschera di rete e ipaddr
è l'indirizzo ip dell'interfaccia. In Debian e nelle distribuzioni basate, è possibile configurare le rotte nel file /etc/network/interfaces
. Qui il comando route viene aggiunto alla sezione iface
. Per esempio:
up route add -net 10.10.0.0 netmask 255.0.0.0 gw 10.10.0.1
Con iface -net
si specifica la rete di destinazione, netmask
è la maschera di rete e gw
è il gateway. Non c'è nulla di complicato. Ora le rotte aggiunte rimarranno anche dopo un riavvio.
Abbiamo quindi visto come funziona il routing in Linux, come si configura il routing in Linux e perché è necessario.