in quale ordine viene analizzata la tabella di percorso?


19

Sul mio pc devo seguire la seguente tabella di routing:

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0

Non capisco come viene analizzato, intendo dall'alto verso il basso o dal basso verso l'alto?

Se viene analizzato dall'alto verso il basso, tutto sarà sempre inviato al router di casa mia anche se la destinazione ip era 192.168.1.15; ma quello che sapevo (erroneamente?) era che se un PC si trovava all'interno della mia stessa rete locale, una volta recuperata la destinazione MAC tramite un messaggio broadcast, il mio PC poteva inviare direttamente il messaggio alla destinazione.

Risposte:


19

La tabella di routing viene utilizzata nell'ordine dal più specifico al meno specifico.

Tuttavia su Linux è un po 'più complicato di quanto ci si possa aspettare. Innanzitutto esiste più di una tabella di routing e quando la tabella di routing utilizzata dipende da una serie di regole.

Per ottenere il quadro completo:

$ ip rule show
0:  from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default

$ ip route show table local
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1 
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1 
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1 
broadcast 192.168.0.0 dev eth0  proto kernel  scope link  src 192.168.1.27 
local 192.168.1.27 dev eth0  proto kernel  scope host  src 192.168.1.27 
broadcast 192.168.1.255 dev eth0  proto kernel  scope link  src 192.168.1.27 

$ ip route show table main
default via 192.168.1.254 dev eth0 
192.168.0.0/23 dev eth0  proto kernel  scope link  src 192.168.1.27 

$ ip route show table default

$

La localtabella è la tabella di routing speciale contenente route di controllo ad alta priorità per indirizzi locali e broadcast.

La maintabella è la normale tabella di routing che contiene tutte le route non strategiche. Questa è anche la tabella che puoi vedere se esegui semplicemente ip route show(o ip roin breve). Consiglio di non usare più il vecchio routecomando, poiché mostra solo la maintabella e il suo formato di output è in qualche modo arcaico.

La tabella defaultè vuota e riservata per la post-elaborazione se le regole predefinite precedenti non selezionavano il pacchetto.

Puoi aggiungere le tue tabelle e aggiungere regole per usarle in casi specifici. Un esempio è se si hanno due connessioni Internet, ma un host o una sottorete deve sempre essere instradato tramite una determinata connessione Internet.

Il libro Policy Routing with Linux spiega tutto ciò in modo squisito.


c'è un modo per cambiare quella priorità?
Mheni,

4

La tabella di routing viene generalmente applicata in ordine dal "più specifico" al "meno specifico". Una destinazione 0.0.0.0con una maschera di rete 0.0.0.0, ovvero il percorso predefinito , è il meno specifico possibile e quindi verrà sempre applicato per ultimo.

Se tu avessi l'indirizzo MAC per un altro PC sulla tua rete locale, ma quello fosse su una sottorete diversa, potresti aggiungere un percorso host specifico per quel PC e probabilmente otterrai comunicazione.


s / di solito / sempre /. È piuttosto fondamentale per il funzionamento delle tabelle di routing.
Celada,

1
@Celada Ho omesso di menzionare le metriche per percorsi "stessi specifici". E poi c'è il routing delle politiche. Almeno per il momento, resto in piedi di solito .
roaima,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.