Considere uma lista de endereços IP, conforme fornecido pelo cabeçalho HTTP X-Forwarded-For :
10.0.0.142, 192.168.0.10, 212.43.234.12, 54.23.66.43
Gostaria de saber qual é o primeiro endereço acessível ao público nessa lista. Posso examiná-los com bastante facilidade, mas como saber quais são acessíveis ao público? Parece-me (meu olho destreinado) que 10.0.0.142
é uma estação de trabalho, 192.168.0.10
é um proxy interno e 212.43.234.12
é um endereço acessível ao público sendo encaminhado pelo proxy em 54.23.66.43
. Existe alguma maneira de calcular isso no código?
Minha primeira intuição é que endereços que começam com 10.
ou 192.
não são acessíveis ao público, mas http://simplesniff.com revela que meu endereço IP residencial é 192.117.111.61
. Existe uma fórmula para determinar quais endereços são públicos e quais são reservados privados? Observe que mesmo tentar executar o ping no servidor em questão pode não ajudar, pois alguns servidores não respondem ao ping e também pode haver um endereço na minha rede local que também corresponda ao endereço interno.