Es kann keine statische Hostroute eingerichtet werden - "SIOCADDRT: Kein solcher Prozess"


11

In meinem Büro gibt es einen Windows Server 2008-Router, 192.168.16.1, der unser Standard-Gateway ist. Dies sendet Daten über unsere Haupt-Internetverbindung. Das funktioniert perfekt.

192.168.16.1 verfügt auch über eine andere Internetverbindung, die derzeit nicht verwendet wird. Dies stellt eine Verbindung zu einem Router her, 192.168.1.254, der dann eine Verbindung zu unserer sekundären Internetverbindung herstellt.

Ich habe Routing und RAS eingerichtet, um den Bereich 192.168.1. * An unser internes Netzwerk weiterzuleiten, und ich kann 192.168.1.254 von meinem Desktop aus mit einer IP-Adresse von 192.168.16.22 anpingen.

Ich habe eine sehr intensive Upload- und Download-Aufgabe für eine Linux-Box im selben Büro, daher möchte ich eine statische Route einrichten, damit ich unsere Haupt-Internetverbindung nicht verbinde und meine Mitarbeiter nicht beeinträchtige. Mein Plan ist es also, diese Box mit einer statischen Route einzurichten.

Über die Linux-Box kann ich 192.168.1.254 anpingen, aber ich kann dem Zielserver in unserem Rechenzentrum keine statische Route hinzufügen:

$ sudo route add -host 123.123.123.123 gw 192.168.1.254 dev eth0
SIOCADDRT: No such process

Nach umfangreichem Googeln scheint diese Fehlermeldung darauf hinzudeuten, dass ich nicht auf 192.168.1.254 zugreifen kann, um eine Route einzurichten, aber ich kann sie anpingen. Ich habe versucht, 192.168.1.254 eine statische Route hinzuzufügen, was einwandfrei funktioniert hat, aber das Problem wurde dadurch nicht gelöst (wie erwartet).

Ich bin im Netzwerk nicht weit genug fortgeschritten, um dieses Problem weiter zu diagnostizieren, da mein Hintergrund in der Softwareentwicklung und nicht in der Systemadministration liegt. Für Ratschläge wäre ich sehr dankbar.

Vielen Dank für Ihre Zeit.

Antworten:


8

Ist der Desktop auf 192.168.16.0/24?

Sie können keine Route (zu einem Ziel) über ein Gateway hinzufügen, mit dem Sie nicht direkt verbunden sind, da Ihr Computer nicht weiß, wie er den Weg zum Router findet, ohne die Standardroute zu durchlaufen.


Richtig, die Routing-Entscheidung muss auf 192.168.16.1 gesetzt werden.
Mark Wagner

2

Sie können den Fehler "SIOCADDRT: Kein solcher Prozess" erhalten , wenn "Sie versucht haben, eine Route für ein Netzwerk festzulegen, bevor Sie eine Hostroute für das Gateway festgelegt haben, das den Datenverkehr für dieses Netzwerk verarbeitet."

zB für lokal -> 172.19.0.1 -> 172.19.0.xx.

[root@local]# route add -net 172.19.0.0 gw 172.19.0.1 netmask 255.255.255.0 dev eth0
SIOCADDRT: No such process

ANTWORT: Erstellen Sie zuerst eine Host-Route und dann eine Netzroute.

zB für das betreffende Netzwerk: lokal -> 192.168.1.254 -> 123.123.123.123

sudo route add -host 192.168.1.254 dev eth0

sudo route add -net 123.123.123.123 netmask 255.255.255.255 gw 192.168.1.254 dev eth0

Eine statische Route lädt das Netzwerk weiterhin , ich denke, es hängt davon ab;). Der Upload / Download-Verkehr muss das Netzwerk überqueren. Dies wirkt sich also auf andere Benutzer des Netzwerks aus. Sie können den Datenverkehr durch Bandbreite begrenzen oder auf ruhigere Stunden verschieben, wenn Sie die Auswirkungen auf andere Netzwerkbenutzer verringern möchten. z. B. hat rsync gute Optionen zur Begrenzung der Bandbreite.

Ich hatte ein ähnliches Problem mit Routing und SIOCADDRT. lokal -> Docker-Server -> Dockercontainer. Durch Hinzufügen der Hostroute und der Netzroute funktionierte das Routing in eine Richtung.

Dies hat mir geholfen, https://support.symantec.com/en_US/article.TECH142841.html

Vollständiges Routing-Beispiel, Routing funktioniert in beide Richtungen:

dockerserver=172.19.0.1
dockerservernet=172.19.0.0
dockercontainer=172.19.0.25
local=192.168.111.23
localnet=192.168.111.0

### 0. create host route for gw and net route local->docker
[root@local]# route add -host $dockerservernet dev eth0
[root@local]# route add -net $dockerservernet gw $dockerserver netmask 255.255.255.0 dev eth0

### 1. route on dockerserver to local
[root@dockerserver ~]# route add -net $localnet netmask 255.255.255.0 dev eno1
[root@dockerserver ~]# ping $local

### 2. route FROM dockercontainer to local (via gateway dockerserver)
[root@dockercontainer /]# route add -net $localnet netmask 255.255.255.0 gw gateway dev eth1
[root@dockercontainer /]# ping $local

0

In Bezug auf den Teil der Frage zum Festlegen persistenter Routen in einer AWS EC2-Instanz unter Ubuntu ist der richtige Ort, um statische Routen zu platzieren, die nach einem Neustart, Stopp und Start von AWS bestehen bleiben /etc/rc.local.

In dieser Datei müssen Sie Ihre Routen in der Zeile über der letzten Zeile platzieren. Ihre Zeilen sollten genau so aussehen:

route add -net XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX gw XXX.XXX.XXX.XXX

Das Ausführen des sudoBefehls geht beim Neustart verloren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.