Warum eine Standardroute für den Zugriff auf eingehende Ports erforderlich ist

373
Wizard79

Ich habe diese Netzwerkkonfiguration:

- Local router 10.0.0.1, public IP 1.2.3.4 forwarding port 1002 to 10.0.0.2 forwarding port 1003 to 10.0.0.3 - Local host 10.0.0.2, server on port 1002, no default route - Local host 10.0.0.3, server on port 1003, default route via 10.0.0.1 - Remote host public IP 5.6.7.8 

Es sind keine Firewalls konfiguriert.

Ich kann ohne Probleme eine Verbindung von 10.0.0.3 zu 10.0.0.2:1002 herstellen.

Ab 5.6.7.8 stelle ich ohne Probleme eine Verbindung zu 1.2.3.4:1003 her, aber 1.2.3.4:1002 antwortet nicht. Wenn ich jedoch eine Standardroute über 10.0.0.1 auf Host 10.0.0.2 hinzufüge, funktioniert die Verbindung.

Die Verbindung zu einem 10.0.0.2:1002 funktioniert also immer im lokalen Netzwerk, aber von Remote-Hosts nur, wenn die Standardroute aktiviert ist.

Ich verstehe den Unterschied nicht: aus der Perspektive von 10.0.0.2. Warum und eingehende komprimierte Pakete unterscheiden sich, wenn sie von einer anderen lokalen IP kommen oder weitergeleitet werden?

0
Wo haben Sie die Standardroute hinzugefügt? djsmiley2k vor 6 Jahren 0
Muss 10.0.0.2 nicht wissen, wie Pakete an 5.6.7.8 zurückgeschickt werden sollen? Es müsste eine Standardroute bekannt sein. Ist in 10.0.0.3 eine Standardroute festgelegt? Ich könnte mir vorstellen, dass es müsste. Dawn Benton vor 6 Jahren 0
@ djsmiley2k: Es steht in der Frage: _addiere eine Standardroute über 10.0.0.1 auf Host 10.0.0.2_ Wizard79 vor 6 Jahren 0
@DawnBenton: Aber woher weiß 10.0.0.2, wie man Pakete an 10.0.0.3 zurücksendet? Warum ist es anders? Das ist der Punkt der Frage. Ja, für 10.0.0.3 ist die Standardroute festgelegt, dies steht in der Frage. Wizard79 vor 6 Jahren 0
10.0.0.2 muss nicht an 10.0.0.3 weitergeleitet werden, da dies möglich ist. Die Standardeinstellung ist, wie Pakete an ein anderes Netzwerk gesendet werden. 2 und 3 befinden sich im selben Netzwerk. Ich entschuldige mich auch, dass ich nicht weit genug gescrollt habe, um zu sehen, dass Sie angegeben hatten, dass für 3 eine Route festgelegt wurde. Dawn Benton vor 6 Jahren 0
@DawnBenton: aber weitergeleitete Pakete kommen nicht aus 10.0.0.1? 10.0.0.2 kann es sehen ... - Warum schreiben Sie nicht eine vollständige erklärende Antwort anstelle von Kommentaren? Wizard79 vor 6 Jahren 0

1 Antwort auf die Frage

1
Dawn Benton

Wenn 10.0.0.2 die Anforderung von 5.6.7.8 empfängt und zu antworten versucht, wenn keine explizite Route zu 5.6.7.8 oder eine Standardroute vorhanden ist, auf die zurückgegriffen werden kann, weiß es nicht, wohin die Antwort gesendet werden soll.

Erläuterung: Angenommen, 10.0.0.2 und 10.0.0.3 befinden sich in demselben Subnetz (durch die Subnetzmaske bestimmt).

Eine Beispielroute-Tabelle unter 10.0.0.2 (ROUTE PRINT in Windows)

Network Destination Netmask Gateway Interface 0.0.0.0 0.0.0.0 10.0.0.1 10.0.0.2 10.0.0.0 255.255.255.0 On-link 10.0.0.2 (added by me)10.0.2.0 255.255.255.0 10.0.0.99 10.0.0.2  

Ab Version 10.0.0.2 befindet sich der .3-Computer innerhalb des Netzwerkziels "10.0.0.0". Dies ist "On-Link", dh 10.0.0.2 und 10.0.0.3 befinden sich auf derselben logischen Verbindung. Daher müssen Pakete von und nach .2 und .3 nicht weitergeleitet werden. Sie schicken sie direkt miteinander. Es ist kein Routing beteiligt.

Wenn .3 oder .2 als Antwort auf eine Anforderung von 5.6.7.8 versuchen, ein Paket an 5.6.7.8 zurückzuschicken (unabhängig davon, ob NAT weitergeleitet oder tatsächlich geroutet wird), weil 5.6.7.8 weder direkt in der Verknüpfung ist noch sich innerhalb der anderen Routen befindet In der Routentabelle liegt sie unter dem Netzwerkziel "0.0.0.0" und müsste wissen, wohin das Paket zum Weiterleiten an das endgültige Ziel gesendet werden soll - in diesem Fall die Standardroute.

Wenn in der Routingtabelle 10.0.0.2 versucht hat, an 10.0.2.50 zu senden, wird das Paket über einen anderen Router bei 10.0.0.99 geroutet, da diese Route in der Routentabelle angegeben ist. Wenn diese Route nicht angegeben wurde, wird die Standardroute übernommen.

Wenn also keine explizit definierten Routen zu einem Ziel vorhanden sind und sich das Ziel nicht im lokalen Subnetz befindet, wird es an den Standardrouter gesendet.

Pakete, die aus '5.6.7.8' stammen, werden einfach weitergeleitet, wenn die Portweiterleitung aktiviert ist. Mit anderen Worten, in der IP-Kopfzeile ist "source" "5.6.7.8" und "destination" ist "1.2.3.4", und "1.2.3.4" leitet es unverändert zu "10.0.0.2" weiter, ohne Adressen zu übersetzen. Wizard79 vor 6 Jahren 0
Wenn Sie kein NAT-Setup haben, wird es ja weitergeleitet. djsmiley2k vor 6 Jahren 1
NAT schreibt das Ziel in den eingehenden Paketheader, um es an den Host im lokalen Netzwerk zu übermitteln, die Quelle wird jedoch nicht geändert. Wenn also 5.6.7.8 eine Anforderung an 1.2.3.4:1002 sendet, wird 10.0.0.2 ein Paket von 5.6.7.8 sehen und versuchen, auf dieses Problem zu antworten. Beachten Sie, dass die Quelle des eingehenden Pakets gleich ist, unabhängig davon, ob sich das interne Ziel hinter NAT befindet oder über eine echte routbare IP-Adresse verfügt (z. B. 1.2.3.6). Alles, was NAT tut, ist, dass der äußere Host einen Host sehen, das Ziel der eingehenden Pakete umschreiben und mit einer Port-Mapping-Tabelle verfolgen kann. Dawn Benton vor 6 Jahren 1