Comment puis-je obtenir l'adresse ip du client à l'aide de TcpClient?
Je suis en utilisant TcpClient pour écouter sur un port pour les demandes. Lorsque la demande du client, je veux savoir l'adresse ip du client qui fait la demande.
J'ai essayé:
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);
Toutes ces adresses de sortie 10.x.x.x, les adresses sont des adresses privées et ne sont clairement pas l'adresse de les clients en dehors de mon réseau faire la demande. Que puis-je faire pour obtenir l'adresse ip publique de la les clients faire la demande?
Edit:
Nous sommes à l'aide d'une instance Amazon EC2 Équilibreur de Charge avec tcp forwarding. Est-il un moyen pour obtenir l'ip du client dans cette mise en place?
- comment pouvez-vous être sûr que les adresses sont "clairement" non pas ceux des clients de votre réseau. Faites-vous connaître au moins la plage d'adresses IP à vos clients de séjourner dans? Ils se trouvent dans le réseau interne, ils résident dans le public à l'internet?
- Parce qu'ils commencent tous 10. - Cela indique une adresse ip privée plage qui n'est pas une adresse ip publique. en.wikipedia.org/wiki/Private_network
- S'il vous plaît changer la accepté de répondre à
Vous devez vous connecter pour publier un commentaire.
Cela ressemble peut-être que votre serveur est derrière un équilibreur de charge ou routeur à l'aide d' NAT. Dans ce cas, le paquet IP n'aurez pas à l'origine de l'adresse du client, mais l'adresse du routeur NAT. Seul le routeur NAT connaît l'adresse de l'expéditeur (sur un niveau IP).
Selon quel protocole de niveau supérieur vous utilisez peut-être sur le dessus de TCP, vous pouvez être en mesure d'obtenir l'identité des clients de cela, bien que c'est beaucoup plus facile d'usurper l'identité de telles informations à des niveaux plus élevés, si cela peut être un sujet de préoccupation.
Si vous avez besoin de ces données uniquement à des fins de recherche, votre périphérique NAT peut tenir un journal.
Si c'est une exigence que vous obtenez la vraie originaires de paquets IP en temps réel, vous pourriez avoir à reconfigurer votre routeur ou de votre serveur déplacé à la zone démilitarisée, mais c'est une toute autre boule de cire. Parlez-en à votre réseau gars, comme ils le feraient certainement en savoir plus sur ce que j'ai (je ne suis pas un expert en réseaux).
Fait ce travail:
Si le client se connecte via un réseau interne je ne suis pas sûr que vous pouvez obtenir leur adresse IP publique depuis la connexion internet pour récupérer le client n'aurait pas besoin de cette information.
vb
?