Impossibile eliminare una route con gateway 0.0.0.0


8

Sto cercando di impostare i miei percorsi in un modo che mi permetta di connettermi al box Vagrant della demo di Solum .

La mia tabella di routing contiene, ma non è limitato a, i seguenti percorsi:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0
192.168.76.0    192.168.76.2    255.255.255.0   UG    0      0        0 vboxnet0
192.168.76.0    0.0.0.0         255.255.255.0   U     0      0        0 vboxnet0

Sospetto che la terza rotta (generata automaticamente all'avvio di Vagrant box) interferisca con la seconda rotta (creata manualmente), quindi sto cercando di eliminarla.

Tuttavia, utilizzando uno dei seguenti comandi

$ sudo route del 192.168.76.0 gw 0.0.0.0
$ sudo route del 192.168.76.0

ritorna:

SIOCDELRT: No such process

che di solito viene visualizzato quando routenon è possibile trovare il percorso.

D'altra parte, usando

$ sudo route del 192.168.76.0/24 gw 0.0.0.0
$ sudo route del 192.168.76.0/24

rendimenti:

route: netmask 000000ff doesn't make sense with host route
Usage: route [-nNvee] [-FC] [<AF>]           List kernel routing tables
(rest of usage)

Che cosa sto facendo di sbagliato? C'è un motivo per cui non riesco a rimuovere quella rotta? Sbaglio nel ritenere che interferisca con quello che ho impostato?

(Sto usando Ubuntu 14.04+).


2
In cima alla mia testa: prova route del -net 192.168.76.0. Altrimenti pensa che tu stia cercando di eliminare una route verso un singolo host.
Jos,

Come hai aggiunto il percorso? Sembra che tu stia usando Vbox, quindi il routing potrebbe far parte della configurazione di Vobx, non posso dire da cosa hai pubblicato.
Pantera,

Solo per curiosità, ma perché hai impostato quel percorso? A me sembra che la rete 192.168.76.0/24 sia on-link - nessun gateway necessario. Ma quando dai un'occhiata alle istruzioni di installazione che hai collegato, troverai il percorso route add -net 192.168.78.0/24 192.168.76.2che ha molto più senso.
Nephente,

2
Btw. Se due o più route corrispondono a un host, la più specifica ha la precedenza, ovvero quella con il prefisso più lungo. Una route host statica ha il prefisso / 32 e sarà preferita. Il criterio successivo (di solito) dipende da come il percorso è stato appreso, ad esempio statico o tramite un protocollo di routing, in cui i percorsi on-link hanno la massima precedenza, seguiti da quelli statici, seguiti da percorsi dinamici appresi tramite, ad esempio, OSPF.
Nephente,

@Jos la tua risposta si è rivelata quasi corretta - se aggiungo solo /24alla fine del comando, funziona. Grazie. Se pubblichi una risposta, forse con qualche elaborazione nell'interesse delle persone che sfoglieranno questa domanda in futuro, la accetterò.
Dragomok,

Risposte:


11

Per eliminare una singola route da una tabella di route, è necessario specificare parametri sufficienti in modo da poter effettuare una corrispondenza univoca con una delle route.

Se si desidera eliminare un'intera sottorete (al contrario di un singolo host) è necessario utilizzare sia il -netflag sia alcune indicazioni dell'ambito dell'indirizzo di rete, ovvero il netmaskparametro (ad es. 255.255.255.0) o un numero come / 24 (significa che i primi 24 bit sono il numero di rete e gli altri 8 sono utilizzati per gli host). Nel tuo caso, entrambi

sudo route del -net 192.168.76.0/24

e

sudo route del -net 192.168.76.0 netmask 255.255.255.0

avrebbe funzionato.

(grazie a @nephente per utili aggiunte)


oppure seguito specificando l'interfaccia, ad esempio dev vboxnet0->sudo route del -net 192.168.76.0 netmask 255.255.255.0 dev vboxnet0
adadion il

0

Il commento fatto da Jos è quasi corretto:

$ sudo route del -net 192.168.76.0/24 rimuove il percorso.

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.