Wie bekomme ich die client-ip-Adresse mit TcpClient?
Ich bin mit TcpClient zu lauschen auf einem port auf Anfragen. Wenn die Anfragen vom client, ich möchte wissen, die client-ip-Anfrage.
Ich versucht habe:
Console.WriteLine(tcpClient.Client.RemoteEndPoint.ToString());
Console.WriteLine(tcpClient.Client.LocalEndPoint.ToString());
var networkStream = tcpClient.GetStream();
var pi = networkStream.GetType().GetProperty("Socket", BindingFlags.NonPublic | BindingFlags.Instance);
var socketIp = ((Socket)pi.GetValue(networkStream, null)).RemoteEndPoint.ToString();
Console.WriteLine(socketIp);
Alle diese Adressen Ausgabe-10.x.x.x Adressen sind private Adressen und sind eindeutig nicht die Adresse des die clients aus meinem Netzwerk Anfragen. Was kann ich tun, um die öffentliche ip des clients Anfragen?
Edit:
Wir sind ein Amazon EC2-Load-Balancer mit tcp-Weiterleitung. Gibt es einen Weg, um die echte client-ip-in diesem set up?
wie können Sie sicher sein, dass die Adressen sind "eindeutig" nicht die von den clients aus Ihrem Netzwerk. Tun Sie zumindest wissen, die IP-Bereich Ihrer Kunden wohnen? Sie befinden sich in Ihrem internen Netzwerk, tun Sie sich befinden, die im öffentlichen internet?
Weil Sie alle mit 10. - Dies weist auf einen privaten ip-Bereich eine nicht-öffentliche ip-Adresse. en.wikipedia.org/wiki/Private_network
Bitte ändern Sie die akzeptierte Antwort
Weil Sie alle mit 10. - Dies weist auf einen privaten ip-Bereich eine nicht-öffentliche ip-Adresse. en.wikipedia.org/wiki/Private_network
Bitte ändern Sie die akzeptierte Antwort
InformationsquelleAutor brendan | 2010-04-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es klingt vielleicht dein server hinter einem load balancer oder router mit NAT. In diesem Fall wird das IP-Paket nicht haben, die Ursprungs-client-Adresse, sondern die Adresse des NAT-Routers. Nur der NAT-router kennt die Adresse des Absenders (auf IP Ebene).
Je nachdem, was höher-level-Protokoll, das Sie verwenden könnten, die auf TCP, Sie können in der Lage sein, um das Kunden-Identifizierung von, dass, obwohl es viel leichter zu fälschen solche Informationen auf höheren Ebenen, wenn das vielleicht ein Problem sein.
Wenn Sie benötigen diese Daten nur für Zwecke der Forschung, Ihr NAT-Gerät können Sie ein Protokoll führen.
Wenn es eine Anforderung, dass Sie den wahren Absender-IP-Paket in Echtzeit, müssen Sie den router neu konfigurieren, oder haben Ihre server verschoben, um die DMZ, aber das ist eine ganze nother ball von Wachs. Sprechen Sie mit Ihrem Netzwerk-Jungs, als würden Sie sicherlich mehr wissen als ich (ich bin kein Netzwerk-Experte).
Sie haben, um in Kontakt mit Amazon auf. Es könnte ein add-on-Paket für eine zusätzliche Gebühr.
InformationsquelleAutor P Daddy
Funktioniert das:
Wenn der client die Verbindung, um Sie über ein internes Netzwerk bin ich nicht sicher, können Sie Ihre öffentliche IP, da sich die Verbindung wieder zu bekommen, würde der client nicht die Informationen benötigen.
InformationsquelleAutor Kelsey
vb
?Sollten Sie eine Erklärung auf deine Antwort. Wenn Sie nur code (insbesondere für komplexere Fragen), können die Menschen nicht wissen, wie es zu benutzen.
InformationsquelleAutor Avgardisme