Laden...

[SOLVED]Server - Client Connection über das Internet

Erstellt von Kronos_m vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.018 Views
Kronos_m Themenstarter:in
10 Beiträge seit 2009
vor 13 Jahren
[SOLVED]Server - Client Connection über das Internet

Hallo,

ich versuche mich kurz zu halten. Bin kurz vor'm Verzweifeln 😮
Problem: Ich starte einen Server...


[...]
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 8000);
TcpListener listener = new TcpListener(endPoint);
listener.Start(1);
TcpClient client = listener.AcceptTcpClient();
[...]

... als nächstes starte ich (auf dem selben PC) den Client...


TcpClient client = new TcpClient("XXX.XXX.XXX.XXX", 8000);

... dabei gebe ich die externe IP-Adresse des Routers an, über dem ich mit dem Internet verbunden bin.
Jetzt zum Fehler:

{"Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte XXX.XXX.XXX.XXX:8000"}

Ist es möglich mit dem TcpClient eine Verbindung mit meinem Server über das Internet aufzubauen? Gleich schon mal vorab: Port-Forwarding ist aktiviert und funktioniert auch, laut der Internetseite: open-ports
Es funktioniert sogar so gut, dass mein Server, der auf eine Verbindung wartet, auf den Test der Internetseite reagiert und mir einen TcpClient zurück gibt. Die Frage die ich mir jetzt stelle ist, was muss ich machen, damit auch mein Client zum Server durchdringt.

Danke schon mal für die Hilfe!

Die Summe meiner Erfahrungen bestimmt wer ich bin! 😉 Und ein paar Gene...

643 Beiträge seit 2006
vor 13 Jahren

Mit der IP Adresse des Router wirst du nicht zurück zu deinen PC geroutet...
Nur von außerhalb... Du kanst deine Lokale IP Adresse verwenden oder 127.0.0.1

1.373 Beiträge seit 2004
vor 13 Jahren

Es sollte schon gehen, wenn er seine externe IP verwendet, also die, die z.B. bei http://www.wieistmeineip.de/ angezeigt wird.

Ich würde zunächst einmal das gute alte telnet bemühen, um zu schauen, ob die Verbindung von deinem Client aus funktioniert:

> telnet die-externe-ip-des-routers 8000

(ggf. musst du den telnet client erst installieren unter "Windows-Funktionen aktivieren oder deaktivieren).

Kronos_m Themenstarter:in
10 Beiträge seit 2009
vor 13 Jahren

Ja, du hast recht, es muss wohl am Client liegen. Habe Telnet gestartet:

C:\Users\Benutzer>telnet XXX.XXX.XXX.XXX 8000
Verbindungsaufbau zu XXX.XXX.XXX.XXX...Es konnte keine Verbindung mit dem Host hergestellt werden, auf Port 8000: Verbindungsfehler

Ach und btw, ich benutze natürlich die externe IP des Routers (www.wieistmeineip.de).

So, jetzt weiß ich leider nur nicht was ich damit anfangen kann, jetzt wo ich weiß, das Telnet nicht funzt. Was ist die Schlussfolgerung aus dem Ganzen?

Die Summe meiner Erfahrungen bestimmt wer ich bin! 😉 Und ein paar Gene...

1.373 Beiträge seit 2004
vor 13 Jahren

Und telnet localhost 8000 funktioniert?

Kronos_m Themenstarter:in
10 Beiträge seit 2009
vor 13 Jahren

Ja in der Tat, mein Sever antwortet sofort und gibt eine TcpClient Instanz zurück, wenn ich das ganze mit 127.0.0.1 teste.

Ich bin verwirrt... Wenn ich mit http://www.yougetsignal.com/tools/open-ports/ auf besagten port 8000 prüfe und die externe IP des Routers angebe, antwortet mein Server auch sofort. Was übersehe ich?

Die Summe meiner Erfahrungen bestimmt wer ich bin! 😉 Und ein paar Gene...

1.373 Beiträge seit 2004
vor 13 Jahren

Ich kann es mir zwar hier nicht vorstellen, aber vielleicht so eine IPv4 vs IPv6 Geschichte? Schau mal mit netstat nach, mit welchen IPs sich die verschiedenen Clients genau Verbinden.

Und natürlich checke bitte noch mal genau die Firewall Einstellungen am Router und in Windows.

61 Beiträge seit 2009
vor 13 Jahren

Hallo Kronos_m,

da der Fehler nur Auftritt, wenn du vom selben PC aus auf dich selbst versuchst zu connecten (über die externe Router-IP) werde ich nur mal vermuten, dass aus irgendeinem Grund solche reflexiven Verbindungen nicht geroutet werden.

Leider weiß ich nicht genau warum, aber wenn du es von einem anderen Computer von außen probieren könntest, der über eine andere Leitung läuft (also nicht denselben Router), dann denke ich mal, dass es funktioniert. Lokal müsstest du dann immer über die Loopback-Adresse (localhost oder 127.0.0.1) testen.

Und von dem was VizOne sagt:
auch möglich, dass es ein IPv4/IPv6-Problem ist

In der Zeit vor fünf Minuten ist Jetzt die Zukunft. Jetzt ist die Gegenwart. Die Zeit, in der ich zu erzählen begonnen habe, ist die Vergangenheit von Jetzt und die Zukunft von der Gegenwart der Zeit, fünf Minuten bevor ich zu erzählen begann.

Kronos_m Themenstarter:in
10 Beiträge seit 2009
vor 13 Jahren

Ok 😭 Also, erstmal Danke!

[...]checke bitte noch mal genau die Firewall Einstellungen am Router und in Windows.

Habe ich beides komplett ausgestellt, ohne Erfolg.

[...]von einem anderen Computer von außen probieren könntest, der über eine andere Leitung läuft [...]

Gut, dann werde ich das mal Versuchen, ist nur gerade etwas schwierig...
Wie das ganze mit IPv4 / IPv6 zusammenhängen soll, kann ich mir gerade noch nicht so richtig vorstellen. Ich habe außerdem mal

 Netstat -an 

bemüht. Dabei ist mir etwas merkwürdiges aufgefallen:
`
Proto|Lokale Adresse||||Remoteadresse||||||||Status
TCP|||0.0.0.0:8000||||||0.0.0.0:0||||||||||||ABHÖREN

TCP|||192.168.1.2:61423|XXX.XXX.XXX.XXX:8000|SYN_GESENDET`

Wenn ich das richtig lese, dann steht die erste Zeile für den Server und die Zweite für Telnet, welches versucht eine Verbindung aufzubauen?!?! Aber warum hat er dann bei der lokalen Adresse auf einmal einen anderen Port? Könnte das das Problem sein?

Danke %)

Die Summe meiner Erfahrungen bestimmt wer ich bin! 😉 Und ein paar Gene...

2.298 Beiträge seit 2010
vor 13 Jahren

Dann schau doch mal ob der Port im Router nicht dummerweise lokal auf einen ganz anderen (Beispielsweise den von dir geposteten) zeigt.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

1.373 Beiträge seit 2004
vor 13 Jahren

Das mit dem lokalen Port ist ganz normal, der wird i.d.R. zufällig ausgewählt. Lokaler Port und Remoteport müssen nicht identisch sein. Wenn das anders wäre, wären Browser beispielsweise ziemlich langsam, weil immer nur eine Verbindung mit einem Webserver (Port 80) möglich wäre.

Lediglich der lokale Port des Listeners und der Remoteport des Clients müssen übereinstimmen (außer, der Router biegt die Ports um, natürlich)

Kronos_m Themenstarter:in
10 Beiträge seit 2009
vor 13 Jahren

?( Also jetzt bin ich entgültig verzweifelt ?(
Habe den Client jetzt (sicherheitshalber) auf IPv4 festgelegt.

TcpClient client = new TcpClient(AddressFamily.InterNetwork);
client.Connect(IPAddress.Parse(strIP), 65000);

Habe das ganze noch mal mit localhost getestet + meiner lokalen IP-Adresse. Zusätzlich das ganze über

netstat -an

gemonitored. Beide (Server / Client) benutzen IPv4 und stellen eine super Verbindung her.
Über die externe Adresse des Router geht es immer noch nicht!
@VizOne: du hattest natürlich Recht mit den Ports, war ein bisschen dumm von mir...
@Ruben: habe es nun auch mit einem anderen PC getestet, über einen anderen Router. Ohne Erfolg, die Fehlermeldung bleibt die Gleiche.

Hat irgendwer noch irgendeine Idee oder eine Vermutung, was hier nicht richtig läuft oder wo das Problem liegt?

Verzweifelte Grüße ?(

Die Summe meiner Erfahrungen bestimmt wer ich bin! 😉 Und ein paar Gene...

61 Beiträge seit 2009
vor 13 Jahren

Leider weiß ich auf noch immer nicht, warum es zu diesem Fehler kommt.
Aber die Meldung bekomme ich immer, wenn der Server nicht läuft oder der Port falsch ist:


SocketException: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.

Wie man dieses Problem jedoch lösen kann, weiß ich leider nicht genau.
Theoretisch müsste ich dazu sowohl die Firewall-Einstellungen in Windows und die Router-Konfiguration einsehen. Aber das verlange ich nicht 😉

Merkwürdig ist allerdings, dass es über diese Internetseite Open-Ports funktionierte, aber nicht über einen außenstehenden PC.

@Ruben: habe es nun auch mit einem anderen PC getestet, über einen anderen Router. Ohne Erfolg, die Fehlermeldung bleibt die Gleiche.

Hast du dazu TelNet benutzt? (obwohl das wahrscheinlich keinen so großen Unterschied macht, vermute ich)

In der Zeit vor fünf Minuten ist Jetzt die Zukunft. Jetzt ist die Gegenwart. Die Zeit, in der ich zu erzählen begonnen habe, ist die Vergangenheit von Jetzt und die Zukunft von der Gegenwart der Zeit, fünf Minuten bevor ich zu erzählen begann.

Kronos_m Themenstarter:in
10 Beiträge seit 2009
vor 13 Jahren

Mehr als die Firewall austellen, Portforwarding aktivieren (getestet), IN- & OUT-Bound traffic für jede IP und jedes Protokoll zulassen und somit alle Filter auszustellen, kann ich auch nicht machten 😉
Ziemlich gefährlich 😉 aber jetzt weiß ich, dass es wohl nicht an Win 7 oder dem Router liegt, so denke ich zumdinest ?(

Ich weiß auch nicht mehr weiter. Die anderen PCs haben versucht mit der Client-Anwendug eine Verbindung aufzubauen.

Komisch ist auch, das netstat mir anzeigt, wenn telnet eine Anfrage über den Port stellt, aber der Server reagiert darauf einfach nicht...

For what it's worth, netstat:
Proto Lokale Adresse Remoteadresse Status

TCP 192.168.1.2:60165 203.94.XX.XXX:65000 SYN_GESENDET
TCP 192.185.1.2:65000 0.0.0.0:0 ABH™REN
Das sieht doch super aus, warum funktioniert das nicht?

Die Summe meiner Erfahrungen bestimmt wer ich bin! 😉 Und ein paar Gene...

61 Beiträge seit 2009
vor 13 Jahren

Ziemlich gefährlich 😉 aber jetzt weiß ich, dass es wohl nicht an Win 7 oder dem Router liegt, so denke ich zumdinest ?

Ah, okay, das wäre das Stichwort.
Ich habe bislang noch kein Win7 - jetzt würde ich natürlich vorschlagen, dass du den Server auf einen PC mit WinXP laufen lässt (Client ist ja egal) und das testest.
das ist mein einziger Einfall im Moment.

Win7 soll ja den Benutzer (so habe ich mal gehört) vor sich selbst schützen 😉

In der Zeit vor fünf Minuten ist Jetzt die Zukunft. Jetzt ist die Gegenwart. Die Zeit, in der ich zu erzählen begonnen habe, ist die Vergangenheit von Jetzt und die Zukunft von der Gegenwart der Zeit, fünf Minuten bevor ich zu erzählen begann.

Z
403 Beiträge seit 2007
vor 13 Jahren

Wenn es wirklich an der UAC liegen sollte, kannst du versuchen deine Anwendung (Visual Studio) als Administrator zu starten...

Aber ich denke nicht, das das die Ursache für das Problem ist.
Ich benutze für meinen Server auch Windows7 und das läuft problemlos selbst mit UAC.

Die Fehlermeldung deutet eindeutig auf Forwarding fehler hin. Entweder Firewall oder port ist bereits blockiert oder oder oder... versuch mal einen anderen Port.

[Edit] Ich sehe du benutzt bereits einen anderen Port.. Entschuldige 😉

Kronos_m Themenstarter:in
10 Beiträge seit 2009
vor 13 Jahren

Danke für die vielen Hilfestellungen =)

Sollte ich noch rausfinden können, woran es liegt, werde ich auf jeden Fall bescheid sagen.

@TheGear: Ja benutze mittlerweile 65000, hilft aber auch nicht 😉

Bin über den DSL-G604T Router mit dem I-Net verbunden. Für meine Port-Regel und Filtereinstellung habe ich mal ein Bilder hochgeladen. Vielleicht fällt ja jemanden etwas auf 😉

Danke Leute 👍

Die Summe meiner Erfahrungen bestimmt wer ich bin! 😉 Und ein paar Gene...

C
401 Beiträge seit 2007
vor 13 Jahren

Leite den Port doch mal strikt auf die IP deines Rechners im Netzwerk weiter. Hast du dir das ganze schonmal mit Wireshark angeschaut?

Kronos_m Themenstarter:in
10 Beiträge seit 2009
vor 13 Jahren

DANKE an alle, besonderer Dank gilt VizOne der mir persönlich beim Testen geholfen hat.
Also, ich habe zu drastischen Methoden gegriffen und meinen Rechner (per Router Option) der DMZ hinzugefügt und ihn somit direkt dem Internet ausgesetzt. Und siehe da, es funktioniert perfekt 😃 Die Verbindung wird einwandrei hergestellt! Ist ein bisschen drastisch, also sollte jeder, der das gleich Problem hat und diese Lösung wählt, sicher gehen, dass die Firewall auf seinem Rechner ordentlich arbeitet 8)

[...]aus irgendeinem Grund [...] [werden] reflexive Verbindungen nicht geroutet[...].

Du hast Recht, mein Router macht es wirklich nicht. VizOne hat erwähnt, dass es seiner jedoch macht, scheint wohl ein Routerding zu sein.

Ich bin einfach nur froh, dass es jetzt geht 😄

Die Summe meiner Erfahrungen bestimmt wer ich bin! 😉 Und ein paar Gene...