Portweiterleitung funktioniert im DSL-Router nicht

2

Ich verwende eine BSNL BroadBand-Verbindung und es wird ein DSL-Router bereitgestellt, der als Standard-Gateway für viele drahtlose Geräte fungieren kann. Ein solches Gerät ist mein Server. Ich habe eine statische IP-Adresse gemietet. Damit der gesamte Datenverkehr über die zu dieser IP zum Router geleitet wird.
Um die Anfrage vom Router an meinen Server (der über WLAN verbunden ist) weiterzuleiten, ist jedoch eine Portweiterleitung erforderlich (Hilfe von hier erhalten ). Die Portweiterleitung für den BSNL DSL Router kann über den VIRTUAL SERVERAbschnitt des NATAbschnitts erfolgen. Dort habe ich alle Anfragen auf Port 8080 (mein JBOSS verwendet Port 8080) an den Server weitergeleitet, der eine interne IP-Adresse hat 192.168.1.7.
Ich kann vom Server aus eine Verbindung zum Internet herstellen(192.168.1.7) können alle Geräte, die über WLAN mit dem Router verbunden sind, miteinander pingen. Der Datenverkehr auf Port 8080 wird jedoch nicht an den Server geleitet.
Was können die möglichen Gründe dafür sein?

HINWEIS

Ich kann auf den Server zugreifen, wenn meine Anforderungs-URL lautet http://192.168.1.7:8080/myapp. Aber wenn meine URL ist http://118.XXX.XXX.XXX:8080/myapp. Ich kann nicht darauf zugreifen. 118.xxx.xxx.xxx ist die öffentliche IP des Routers.

Ashwin
quelle

Antworten:

9

Es funktioniert nicht in Ihrem LAN. Es wird nur vom Rest des Internets funktionieren. Hier ist der Grund:

  1. Sie versuchen, Ihre öffentliche IP-Adresse von einem LAN-Computer aus zu erreichen.

  2. Das Gerät erkennt, dass sich die Adresse außerhalb des LAN befindet, und sendet das Paket an den Router.

  3. Der Router sendet das Ziel per NAT an den LAN-Computer, die Quelladresse bleibt jedoch unverändert (weiterhin der LAN-Computer, von dem die Anforderung stammt).

  4. Ihr Server empfängt die Anfrage und sendet eine Antwort an die Quelle der Verbindung (immer noch der LAN-Computer).

  5. Die LAN - Maschine empfängt eine Antwort vom Server, aber es war eine Antwort vom Router erwartet (da es angeschlossen an die öffentlichen IP - Adresse, eine Antwort erhalten muß von der öffentlichen IP - Adresse, nicht der LAN - Adresse des Servers). Da die Antwort die falsche Quelladresse hat, wird sie nicht akzeptiert. Hoppla.

Die Portweiterleitung (Umschreiben der Zieladresse) funktioniert nur von außen nach innen, nicht von innen nach innen. Dazu benötigen Sie Haarnadel-NAT, die zusätzlich zur Quelle die Zieladresse neu schreibt.

David Schwartz
quelle
Das habe ich versucht zu sagen, konnte aber nicht richtig zusammen kommen :) Eine großartige Erklärung.
The_aLiEn
1
@ David Schwartz: es funktioniert! Ich habe es aus einem anderen Netzwerk versucht. Vielen Dank:) . Im vorherigen Szenario wurde die Verbindung während des TCP-Handshakes selbst beendet. Noch ein Zweifel: In Punkt 3 haben Sie gesagt: "Der Router sendet das Ziel per NAT an den LAN-Computer, die Quelladresse bleibt jedoch unverändert (immer noch der LAN-Computer, von dem die Anforderung stammt)." Wenn das Paket den Router erreicht hat, ist es dann nicht die Aufgabe des Routers, die Quelladresse auf Ebene drei in die öffentliche IP-Adresse zu ändern (da dies die Funktion von NAT ist)?
Ashwin
1
@Ashwin: 1) Der TCP-Handshake wird niemals abgeschlossen, da der Quellcomputer niemals die erwartete Antwort erhält. 2) Bei der Portweiterleitung wird nicht die Quelladresse, sondern nur das Ziel geändert. Wenn Sie eine Portweiterleitung an einen Server durchführen, wird dem Server weiterhin die unveränderte Ursprungs-IP-Adresse für die an ihn weitergeleiteten Verbindungen angezeigt.
David Schwartz
@ DavidSchwartz: Ich glaube, ich bin immer noch verwirrt. Ich versuche, von einem der Geräte auf 74.125.236.165 (öffentliche IP von Google) zuzugreifen (den Server vergessen). In diesem Gerät lautet die Quell-IP während der Layer-3-Kapselung 192.168.1.5. Dies wird an den Router weitergeleitet (der das Standard-Gateway ist). Der Router muss diese private Quelladresse verbergen. Es fungiert also als NAT. Ändert es diese Quell-IP nicht in die öffentliche IP des Routers? (Versteckt viele private IP-Adressen hinter einer einzelnen öffentlichen IP-Adresse)
Ashwin
@ Ashwin: Ja, natürlich. Aber wir sprachen über Portweiterleitung (innerhalb des Ziels) und nicht über Maskierung (außerhalb des Ziels). Masquerading ändert die Quelle, aber nicht das Ziel. Die Portweiterleitung ändert das Ziel und nicht die Quelle.
David Schwartz
3

Viele Router lassen nicht zu, dass Verbindungen, die sie vom lokalen Netzwerk an den WAN-Port weitergeleitet haben, zurück in das LAN geleitet werden (NAT-Loopback oder Haarnadel). Die WAN-IP ist dann von innen nicht zugänglich und Sie müssten andere Adressen verwenden, um den Router oder die Computer zu kontaktieren, an die Ports weitergeleitet wurden, in Ihrem Fall 192.168.1.7. Sie können den Port vorwärts von außen testen. Bei einem Webserver ist dies wahrscheinlich am einfachsten, wenn Sie einen Proxy wie http://hidemyass.com verwenden .

Wenn Sie über einen Domänennamen auf den Server zugreifen möchten, tritt dasselbe Problem auf. Die DNS-Server leiten Sie zur öffentlichen IP-Adresse weiter. Wenn Sie die Hosts-Dateien auf lokalen Computern bearbeiten, können Sie sie stattdessen auf die lokale IP des Servers verweisen lassen, und Sie können überall dieselbe Adresse verwenden.

Marcks Thomas
quelle
1
  1. Prüfen Sie, ob Sie direkt auf 8080 zugreifen können (mit Ihrer 192.168 IP)
  2. Leiten Sie dann in Ihrem Router 8080 an Ihren JBoss-Server 8080 weiter. Manchmal hört der Router selbst 8080 ab. Ändern Sie in einem solchen Fall die Port-Nr
Srin
quelle
Ich kann mit 192.168.1.7 (der IP meines Servers) direkt auf 8080 zugreifen.
Ashwin
1

Bei BSNL gekaufte Router deaktivierten die Port-Forwarding-Funktionen größtenteils intern. Das heißt, obwohl Sie die Portweiterleitungsseiten sehen und festlegen können, blockiert die interne Sperre den Port.

Kaufen Sie einen Router eines Drittanbieters wie netgear, linksys .., damit Sie die Portweiterleitung verwenden können.

Ragesh D Antony
quelle
1

2)

Dies liegt wahrscheinlich daran, dass Ihr Router die NAT-Suche nicht unterstützt. Sie können mit Ihrer externen IP-Adresse im LAN nicht auf interne Computer zugreifen, die externe IP-Adresse funktioniert jedoch für den Rest der Welt.

Wenn Sie eine Website über eine externe IP testen möchten, können Sie einen Proxy verwenden. Ich mag Anonymouse, aber Sie können bei proxy.org aus Tausenden auswählen.

Siehe Ist NAT Loopback auf meinem Router ein Sicherheitsproblem? für einige Debatten darüber, ob NAT-Lookup sicher ist oder nicht.

Ragesh D Antony
quelle
0

Möglicherweise sind einige Firewall-Probleme aufgetreten. Einige DSL-Router verfügen möglicherweise über eine Firewall. Trotz Portweiterleitung müssen Sie manchmal eine Regel erstellen oder die interne Firewall vollständig deaktivieren.

Überprüfen Sie auch die Firewall des Servers. Auch die erste Empfehlung von Srin weist darauf hin.

Das Alien
quelle
Siehe meinen Kommentar für Srins erste Antwort.
Ashwin,
Dies hängt dann mit dem Routing zusammen. Sie können das nicht 118.x.x.x trafficüber die LAN-Schnittstelle NAT . http://118.XXX.XXX.XXX:8080/myappDer Datenverkehr muss über die WAN-Schnittstelle des Routers eingehen, um NAT-fähig zu sein und an Ihren Server weitergeleitet zu werden. Haben Sie Ihren Server von außen getestet?
The_aLiEn