Я использую 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.x.x.x, которые являются частными адресами и явно не являются адресами клиентов вне моей сети, отправляющих запросы. Что я могу сделать, чтобы получить общедоступный IP-адрес клиентов, делающих запросы?
Изменить. Мы используем балансировщик нагрузки Amazon EC2 с переадресацией TCP. Есть ли способ получить истинный IP-адрес клиента в этой настройке?