GNU/Linux >> Linux Esercitazione >  >> Linux

Introduzione ai fondamenti del routing IP di Linux (Parte 1)

Probabilmente sai come controllare i percorsi esistenti (o anche aggiungere/modificare percorsi) su Linux usando il comando route o netstat. Potresti averlo fatto senza capire molto su come funziona il routing IP.

Questo articolo ti aiuterà a comprendere i principi alla base dell'instradamento IP e come funziona.

Questa è la prima parte della serie di articoli sull'instradamento IP.

l'instradamento IP implica l'inoltro di datagrammi IP. È un processo semplice in cui l'host invia il datagramma IP direttamente alla destinazione se l'host di destinazione è connesso. Ad esempio, tramite un collegamento punto a punto o tramite una rete condivisa. Se l'host di destinazione non è connesso direttamente, l'host invia il datagramma IP al router predefinito e consente al router di decidere dove inviare ulteriormente il datagramma IP.

Principi di percorso

Una differenza fondamentale tra un host normale e un router è che un host non inoltra mai un datagramma da un'interfaccia all'altra mentre un router può inoltrare un datagramma.

Oggi, la maggior parte dei sistemi multiutente può essere configurata per fungere da router. Pertanto, è possibile specificare un algoritmo di routing comune che può essere utilizzato dal router oltre che da un host. Quando un host può agire come un router, si dice generalmente che l'host ha una funzionalità di router incorporata. Un tale host che ha una funzionalità di router incorporata non dovrebbe mai inoltrare datagrammi fino a quando e a meno che non sia configurato per farlo, ad esempio configurato per agire come un router.

Il livello IP mantiene una tabella di routing che utilizza mentre prende decisioni su cosa fare con il datagramma ricevuto. Quando il data gram viene ricevuto dalla rete, il livello IP controlla prima il suo indirizzo IP per vedere se l'indirizzo IP è proprio o meno.

Nel caso in cui l'indirizzo IP di destinazione nel datagramma sia proprio, il datagramma viene inviato al protocollo appropriato al livello di trasporto, ma se l'indirizzo di destinazione non è proprio, il datagramma viene inoltrato se l'host è stato configurato per agire come un router altrimenti il ​​datagramma viene scartato.

I dati nella tabella di routing sono generalmente sotto forma di voci. Una tipica voce della tabella di routing contiene le seguenti voci principali:

  • Indirizzo IP di destinazione :questo campo rappresenta l'indirizzo IP della destinazione. Questo indirizzo IP potrebbe essere l'indirizzo di un singolo host o potrebbe essere quello di una rete. Se questa voce contiene l'indirizzo IP di un host, allora è indicata da un ID host diverso da zero nell'indirizzo mentre se la voce contiene l'indirizzo IP di una rete, allora è indicata da un valore ID host pari a 0.
  • Indirizzo IP del router successivo :Perché abbiamo usato il termine "successivo" è perché questo non è sempre il router finale ma potrebbe benissimo essere un router intermedio. Questa voce fornisce l'indirizzo IP del router successivo che decide come inviare ulteriormente un gramma di dati IP ricevuto sulla sua interfaccia.
  • Bandiere :questo campo fornisce un altro insieme di informazioni vitali come l'indirizzo IP di destinazione (specificato sopra) è un indirizzo host o un indirizzo di rete. Inoltre, i flag indicano se il router successivo (specificato sopra) è davvero un router successivo o un'interfaccia connessa direttamente.
  • Specifiche dell'interfaccia di rete :Alcune specifiche sull'interfaccia di rete che il datagramma dovrebbe essere passato per un'ulteriore trasmissione.

Come funziona il routing di base?

Quindi, se proviamo brevemente a visualizzare ora il processo di instradamento, vediamo che non appena un datagramma da una rete viene ricevuto al livello IP di un host (che è configurato per agire come un router), dopo aver verificato che l'IP di destinazione l'indirizzo nel pacchetto non è quello di questo host si consultano le tabelle di routing.

Qualsiasi voce il cui primo campo corrisponde all'indirizzo IP di destinazione completamente (un host) o parzialmente (una rete) segnalerebbe l'indirizzo IP del router successivo. Questa è l'informazione vitale che un host (che agisce come un router) richiederebbe per inoltrare un pacchetto poiché queste informazioni indicano direttamente su quale router successivo deve essere inoltrato il datagramma. Tutti gli altri campi della voce supportano il processo decisionale fornendo maggiori informazioni per l'instradamento.

Nel paragrafo precedente costruiamo una comprensione di base, ma se cerchiamo di ottenere un livello più profondo, i seguenti punti forniscono informazioni dettagliate sull'algoritmo della tabella di routing:

  • In primo luogo, nella tabella di routing viene ricercata una voce il cui campo "Indirizzo IP di destinazione" corrisponda completamente all'indirizzo IP di destinazione del datagramma. Per completamente, si intende che l'ID host e l'ID di rete degli indirizzi IP corrispondano. Se trovato, il datagramma viene inviato a quell'interfaccia o al router intermedio.
  • Se non viene trovata una corrispondenza completa, viene eseguita una ricerca per l'ID di rete corrispondente. Se trovato, il datagramma viene inoltrato al router indicato. Quindi vediamo che tutti gli host su questa rete sono gestiti da questa singola voce nella tabella di routing.
  • Se nessuna delle due precedenti è vera, il datagramma viene inoltrato a un "router predefinito".
  • Se anche il passaggio precedente fallisce, ad esempio non c'è un router predefinito, il datagramma finisce per non essere recapitato. Qualsiasi datagramma non recapitato produrrebbe un host ICMP irraggiungibile o Rete ICMP irraggiungibile errore e questo errore viene restituito all'applicazione che ha generato questo datagramma.

A volte ci si chiede perché ci sono due tipi di voci nella tabella di routing o per essere più precisi perché sono necessarie voci relative alla rete in un router? Bene, avere voci nella tabella di routing corrispondenti alle reti ha un grande vantaggio. Il vantaggio è che avendo una voce correlata una rete completa evita la necessità di avere un numero enorme di voci separate di ciascun host su quella rete. Questo riduce la dimensione della tabella di routing a un livello significativo, il che è sempre buono.

Comando per elencare le tabelle di instradamento

Puoi usare il comando netstat per elencare le tabelle di routing come mostrato di seguito.

$ netstat -rn
Kernel IP routing table
Destination  Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.2.0  0.0.0.0         255.255.255.0   U         0 0        0    eth0
169.254.0.0  0.0.0.0         255.255.0.0     U         0 0        0    eth0
0.0.0.0      192.168.2.1     0.0.0.0         UG        0 0        0    eth0

L'output fornisce informazioni dettagliate negli indirizzi IP di destinazione e nei relativi gateway. Il flag "U" suggerisce che il percorso è attivo e il flag "G" suggerisce che il router è verso un gateway (router). Se questo flag non è impostato, si può presumere che la destinazione sia collegata direttamente.


Linux
  1. Un'introduzione allo spazio di scambio sui sistemi Linux

  2. Introduzione al comando chown di Linux

  3. Permessi Linux:un'introduzione a chmod

  4. Nozioni di base sui segnali di Linux – Parte I

  5. Introduzione ai thread di Linux – Parte I

Un'introduzione al rilevamento del movimento di base su Linux

Un'introduzione a Vivaldi Browser su Linux

Introduzione alla gestione dei container Linux

Tutto è un file in Linux – Parte 2

Tutto è file in Linux – Parte 1

Introduzione di un amministratore di sistema Linux a cgroups