Eine Route mit dem 0.0.0.0-Gateway kann nicht gelöscht werden

8

Ich versuche, meine Routen so einzurichten, dass ich eine Verbindung zur Vagrant-Box der Solum-Demo herstellen kann .

Meine Routing-Tabelle enthält, ohne darauf beschränkt zu sein, folgende Routen:

$ 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

Ich vermute, dass die dritte Route (die beim Start der Vagrant-Box automatisch generiert wird) die zweite Route stört (manuell erstellt), daher versuche ich, sie zu löschen.

Verwenden Sie jedoch einen der folgenden Befehle

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

kehrt zurück:

SIOCDELRT: No such process

Dies wird normalerweise angezeigt, wenn routedie Route nicht gefunden werden kann.

Auf der anderen Seite mit

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

Ausbeuten:

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

Was mache ich falsch? Gibt es einen Grund, warum ich diese Route nicht entfernen kann? Bin ich falsch anzunehmen, dass es das von mir eingerichtete stört?

(Ich benutze Ubuntu 14.04+).

Dragomok
quelle
2
Aus dem Kopf: Versuch es route del -net 192.168.76.0. Andernfalls wird angenommen, dass Sie versuchen, eine Route zu einem einzelnen Host zu löschen.
Jos
Wie haben Sie die Route hinzugefügt? Es scheint, dass Sie vbox verwenden, daher ist das Routing möglicherweise Teil der vobx-Konfiguration. Ich kann anhand Ihrer Beiträge nicht erkennen, was Sie gepostet haben.
Panther
Nur aus Neugier, aber warum haben Sie diesen Weg eingeschlagen? Mir scheint, das Netzwerk 192.168.76.0/24 ist über eine Verbindung - kein Gateway erforderlich. Wenn Sie sich jedoch die von Ihnen verknüpften Setup-Anweisungen ansehen, finden Sie die Route route add -net 192.168.78.0/24 192.168.76.2, die viel sinnvoller ist.
Nephente
2
Übrigens. Wenn zwei oder mehr Routen mit einem Host übereinstimmen, hat die spezifischste Vorrang, dh die mit dem längsten Präfix. Eine statische Hostroute hat das Präfix / 32 und wird bevorzugt. Das nächste Kriterium hängt (normalerweise) davon ab, wie die Route gelernt wurde, z. B. statisch oder über ein Routing-Protokoll, wobei Routen auf der Verbindung die höchste Priorität haben, gefolgt von statischen Routen, gefolgt von dynamischen Routen, die über z. B. OSPF gelernt wurden.
Nephente
@Jos Ihre Antwort stellte sich als fast richtig heraus - wenn ich nur /24am Ende des Befehls hinzufüge , funktioniert es. Vielen Dank. Wenn Sie eine Antwort veröffentlichen, vielleicht mit einer Ausarbeitung im Interesse der Leute, die diese Frage in Zukunft durchsuchen werden, werde ich sie akzeptieren.
Dragomok

Antworten:

11

Um eine einzelne Route aus einer Routentabelle zu löschen, müssen Sie genügend Parameter angeben, damit eine eindeutige Übereinstimmung mit einer der Routen hergestellt werden kann.

Wenn Sie ein ganzes Subnetz löschen möchten (im Gegensatz zu einem einzelnen Host), müssen Sie sowohl das -netFlag als auch eine Angabe des Bereichs der Netzwerkadresse verwenden, dh entweder den netmaskParameter (z. B. 255.255.255.0) oder eine Zahl wie / 24 (Dies bedeutet, dass die ersten 24 Bits die Netzwerknummer sind und die restlichen 8 für Hosts verwendet werden). In Ihrem Fall beides

sudo route del -net 192.168.76.0/24

und

sudo route del -net 192.168.76.0 netmask 255.255.255.0

hätte funktioniert.

(danke an @nephente für nützliche Ergänzungen)

Jos
quelle
oder gefolgt von der Angabe der Schnittstelle, zum Beispiel dev vboxnet0->sudo route del -net 192.168.76.0 netmask 255.255.255.0 dev vboxnet0
adadion
0

Kommentar von Jos ist fast richtig:

$ sudo route del -net 192.168.76.0/24 entfernt die Route.

Dragomok
quelle