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.
fonte
Respostas:
O RFC 1918 define intervalos de endereços IP privados. Dê uma olhada aqui.
A partir desse documento:
Espaço de Endereço Privado
A Internet Assigned Numbers Authority (IANA) reservou os três blocos a seguir do espaço de endereço IP para internets privados:
10.0.0.0 - 10.255.255.255 (prefixo 10/8)
172.16.0.0 - 172.31.255.255 (prefixo 172.16 / 12)
192.168.0.0 - 192.168.255.255 (prefixo 192.168 / 16)
fonte
127.0.0.0/16
(e talvez mais) não estejam nessa lista.Além do espaço RFC 1918 original (agora atualizado para o RFC6890 ), existem vários outros blocos, como o 192.0.2.0, que não são anunciados publicamente. Além disso, é possível que alguém tenha um espaço IPv4 válido que simplesmente não é anunciado na internet pública.
A coisa mais simples a fazer é fazer
telnet route-views.oregon-ix.net
loginrviews
e procurar por si mesmo ... por exemplo, este é um espaço "192" anunciado pelo AS7018 (AT&T) ...Por outro lado, você verá que 192.0.2.0/24 (ref RFC6890 ) está longe de ser encontrado ...
Nem é 169.254.0.0/16 (ou mais) ...
fonte
A equipe Cymru fornece uma referência falsa para IPv4 e IPv6 que você pode usar para filtrar endereços IP não atribuídos / reservados / privados - é oferecida como uma lista simples de prefixos conhecidos e também em uma lista muito maior que inclui espaço ainda não atribuído pelos RIRs.
Eles também executam um servidor BGP bogon ao qual você pode solicitar um peering gratuito - inestimável se você não conseguir executar uma zona livre de padrão na Internet.
fonte
Há vários intervalos reservados para vários casos de uso. A IANA tem a lista abrangente e autorizada . Inclui RFC1918, RFC6761, bem como reservas mais recentes, como o bloco CGN 100.64 / 10. Se você encontrar algum endereço lá, é provável que ele seja usado de alguma forma em uma rede privada e deve ser descartado em favor dos outros em busca do primeiro endereço público.
fonte