Avanti Indietro Indice

4.3 Configurare le tabelle di routing

Una volta configurata un'interfaccia, è necessario configurare correttamente quelle che vengono definite ``tabelle di routing''. Una tabella di routing contiene l'elenco di tutte le reti raggiungibili tramite il nostro computer e delle informazioni che consentano al kernel del nostro sistema operativo di decidere quale interfaccia utilizzare a secondo delle necessità dell'utente.

Una tabella di routing è quindi costituita da una riga per ogni rete che è possibile raggiungere con le indicazioni sul come raggiungerla. Per visualizzare la tabella di routing correntemente utilizzata è possibile utilizzare il comando vecchio stile ``route'' oppure il comando:

# ip route

Che darebbe un output molto simile al seguente:

194.109.2.0/24 dev sl0 proto kernel scope link src 192.168.0.1 
192.168.200.0/24 dev eth0 proto kernel scope link src 192.168.200.1

Dalla prima riga vediamo che possiamo raggiungere tutti i computer i cui primi 24 bit di indirizzo sono uguali a 194.109.2.0 passando attraverso sl0, interfaccia che corrisponde alla prima porta seriale. Vediamo anche che l'indirizzo sorgente di questi pacchettini sarebbe 192.168.0.1. Questo, ad una prima analisi, potrebbe sembrare strano. Com'è possibile che pacchetti destinati alla rete 194.109.2.0/24 debbano uscire da sl0 con un indirizzo di provenienza uguale a 192.168.0.1 che fa parte di tutt'altra rete? Questo è dovuto al fatto che sl0 utilizza una connessione ``punto a punto'' (point to point -- come mostrato dal comando ip addr), ed è quindi un tipo un po' particolare di collegamento che mette l'interfaccia di rete in contatto con un ``peer'' (compagno) che è poi effettivamente collegato alla rete 194.109.2.0. Per quanto riguarda eth0, invece, vediamo che esiste già una riga nella tabella di routing: questo perché tutte le volte che attiviamo un'interfaccia (la settiamo come UP), automaticamente le reti raggiungibili tramite la stessa vengono aggiunte alla tabella di routing.

Rimane però un problema. Con questa tabella di routing possiamo raggiungere solo la rete 194.109.2 o la rete 192.168.200, ma non tutte le altre reti che fanno parte di internet. Sarebbe però impensabile aggiungere una riga per ogni rete collegata ad internet, così è possibile utilizzare una sorta di jolly: la rete di ``default'', con indirizzo 0.0.0.0/0, ovvero, tutti i computer (nessun bit deve essere uguale a quello dell'indirizzo).

Per raggiungere computer facenti parte di un'altra rete però, si deve far uso di quello che viene definito gateway o router, ovvero di un computer collegato ad entrambe le reti in grado di trasmettere i dati da una rete all'altra.

Ipotizzando quindi di avere sulla nostra rete un gateway con indirizzo 192.168.200.3 che ci colleghi al resto del mondo, dovremmo configurare il kernel dicendogli di mandare tutti i pacchettini destinati ad ogni rete sconosciuta al computer con questo indirizzo ip. Per fare questo potremmo usare il comando ``route add -net default gw 192.168.200.3'' oppure il comando:

# ip route add default via 192.168.200.3

Che dice al kernel qualcosa del tipo ``se non sai dove mandare un pacchettino, mandalo a 192.168.200.3''. Se a questo punto volessimo eliminare il route appena aggiunto, potremmo dare il comando:

# ip route del default

Oppure potremmo utilizzare il comando ``ip route replace'' per rimpiazzare il route con un altro, come mostrato qua sotto:

# ip route replace default dev eth1 via 192.168.300.3

Il comando ``ip route'' consente di fare molte altre cose (ip route help né può essere testimone): può, per esempio, gestire delle funzioni di NAT abbastanza basilari, oppure bilanciare il traffico su due differenti gateway o ancora indicare su che interfaccia il kernel manderebbe un pacchetto.


Avanti Indietro Indice