TcpClientを使用して、ポートでリクエストをリッスンしています。リクエストがクライアントから届いたとき、リクエストを行っているクライアントのIPを知りたいです。
私はもう試した:
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);
これらのアドレスはすべて、プライベートアドレスであり、明らかに要求を行っているネットワーク外のクライアントのアドレスではない10.xxxアドレスを出力します。リクエストを行うクライアントのパブリックIPを取得するにはどうすればよいですか?
編集: tcp転送でAmazonEC2ロードバランサーを使用しています。この設定で真のクライアントIPを取得する方法はありますか?