Sto usando TcpClient per ascoltare su una porta per richieste. Quando le richieste arrivano dal cliente, voglio sapere che il client ip sta facendo la richiesta.Come posso ottenere l'indirizzo IP del client usando TcpClient?
ho provato:
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);
Tutti questi indirizzi 10.x.x.x uscita indirizzi che sono indirizzi privati e non sono chiaramente l'indirizzo del i clienti dalla mia rete fare le richieste. Cosa posso fare per ottenere l'IP pubblico dei client che effettuano le richieste?
Modifica: Stiamo utilizzando un bilanciamento del carico Amazon EC2 con l'inoltro TCP. C'è un modo per ottenere il vero client IP in questa configurazione?
come si può essere sicuri che gli indirizzi siano "chiaramente" non quelli dei client fuori dalla rete. Conosci almeno la gamma IP in cui risiedono i tuoi clienti? Risiedono nella rete interna, risiedono nella rete pubblica? –
Perché iniziano tutti 10. - Ciò indica che un intervallo IP privato non è un indirizzo IP pubblico. http://en.wikipedia.org/wiki/Private_network – brendan