Comando Linux Route Add con esempi

Il routing è il modo in cui i computer comunicano su una rete locale o su Internet. Per comunicare su una rete, i computer devono sapere a quale gateway devono inviare il traffico. Un gateway potrebbe essere un router nella tua rete.
Il comando route viene utilizzato in Linux per visualizzare e modificare la tabella di routing ip.
In questo tutorial, spiegherò come utilizzare il comando route per aggiungere route statiche attraverso il gateway per inviare traffico.
1) Visualizzare la tabella di instradamento
Prima di modificare la tabella di routing, è bene vedere la tabella di routing predefinita sul kernel Linux.
Usa il comando route con -n
opzione per visualizzare la tabella di routing IP del kernel corrente. Questo comando aiuta a identificare le reti connesse localmente con il suo percorso.
Il seguente comando visualizza la tabella di routing:
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
Puoi anche usare netstat -nr
comando per stampare connessioni di rete, tabelle di instradamento, statistiche di interfaccia, connessioni mascherate e appartenenze multicast.
Visualizza la tabella di routing con il comando netstat:
$ netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
Ora abbiamo il comando ip per visualizzare i percorsi
$ ip route show
2) Aggiungi un nuovo percorso
Come abbiamo detto sopra, per manipolare la tabella di instradamento, usiamo route add
comando (add è facoltativo) per specificare manualmente un percorso statico che i pacchetti utilizzeranno sulla rete. Viene utilizzato per assegnare un percorso statico temporaneo che cambierà solo se l’amministratore modifica manualmente i valori del nuovo percorso.
Ci sono molte possibilità di utilizzare a aggiungere percorso comando.
Dovremmo indicare la rete di destinazione, la subnet mask della rete e il gateway da utilizzare.
route add -net <network_address> gw <gateway> <interface_name>
In alternativa, ora puoi usare ip route
comando, sintassi come segue:
ip route add <network_address> via <gateway> dev <interface_name>
Ad esempio, aggiungiamo una nuova rete di instradamento 10.0.0.0/8 e tramite l’indirizzo IP del gateway 192.168.1.1:
# route add -net 10.0.0.0/8 gw 192.168.1.1 eno1
Ora possiamo visualizzare la tabella di routing utilizzando route -n
:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1
10.0.0.0 192.168.1.1 255.0.0.0 UG 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
Puoi aggiungere netmask
opzione se si desidera aggiungere valore alla maschera di rete. Se non fornito, il comando route trova automaticamente il valore netmask.
# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.100 eth0
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 192.168.1.100 255.255.255.0 UG 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
10.0.0.0 192.168.1.254 255.0.0.0 UG 0 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
Per aggiungere un instradamento a un utilizzo host specifico -host
opzione. Abbiamo solo bisogno di indicare il gateway da utilizzare.
route add -host <host_IP_address> gw <gateway>
Ad esempio, aggiungiamo un host specifico “10.0.0.10” e quindi visualizziamo la tabella di routing
# route add -host 10.0.0.10 gw 192.168.1.1 eno1
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1
10.0.0.0 192.168.1.1 255.0.0.0 UG 0 0 0 eno1
10.0.0.10 192.168.1.1 255.255.255.255 UGH 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
Negli esempi precedenti, la colonna flag ha valori diversi e questi possono creare confusione.
Possibili flag e sua definizione:
U
– il percorso è salitoH
– l’obiettivo è un hostG
– utilizzare il gatewayR
– ripristinare il percorso per il routing dinamicoD
– installato dinamicamente da demone o reindirizzamentoM
– cambiato dal demone di instradamento o inoltroA
– installato da addrconfC
– ingresso nella cache!
– rifiuto del percorso
3) Rifiutare ed eliminare un percorso
Possiamo manipolare la tabella di instradamento non solo per aggiungere rotte statiche, ma anche per eliminare o rifiutare una rotta che abbiamo inserito in precedenza.
Per eliminare una rete di destinazione dalla tabella di instradamento, utilizzare route del
comando:
route del -net <network_address> gw <gateway> <interface_name>
Ad esempio, per eliminare il percorso verso la nostra rete 10.0.0.0/8:
# route del -net 10.0.0.0/8 gw 192.168.1.1 eno1
Uscita
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1
10.0.0.10 192.168.1.1 255.255.255.255 UGH 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
Per vietare un indirizzo IP ma è ancora sulla tabella di routing. Si noti che utilizziamo ancora il parametro add option, ma alla fine del comando dobbiamo utilizzare il reject
opzione. Possiamo preservare o meno il nostro gateway, ma non menzioniamo l’interfaccia in uscita.
route add -host <host_IP_address> reject
Nel seguente comando rifiuteremo il nostro host “10.0.0.10”:
# route add -host 10.0.0.10 reject
Mostra la tabella di routing dopo le modifiche:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1
10.0.0.10 - 255.255.255.255 !H 0 - 0 -
10.0.0.10 192.168.1.1 255.255.255.255 UGH 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
I percorsi aggiunti utilizzando i comandi precedenti non sono persistenti durante un riavvio, quindi ho aggiunto percorsi statici al file di configurazione per mantenerlo permanente.
Per aggiungere route statiche persistenti per qualsiasi distribuzione Linux, puoi utilizzare il file generico /etc/rc.local.
Per Ubuntu e Debian usa il file chiamato “/etc/network/interfaces” e su RHEL/CentOS usa “/etc/sysconfig/network-scripts/route-ethX”.
Conclusione
In questo tutorial, abbiamo imparato come aggiungere route statiche in Linux utilizzando il comando route add. Dovremmo notare che con questo metodo, il percorso non cambierà a meno che tu non lo cambi. È importante eliminare i percorsi di cui non abbiamo bisogno.
Related Read: How to Permanently add Static Route in Linux