Nem todo endereço IP é alcançável a partir da internet pública, e uma verificação de existe para distinguir os dois. Estas são as faixas que importam.

Espaço de endereços privados (RFC 1918)

Três blocos são reservados para redes privadas e nunca são roteados na internet pública: 10.0.0.0/8, 172.16.0.0/12 e 192.168.0.0/16. Dentro de uma rede corporativa ou de uma (nuvem privada virtual, do inglês virtual private cloud) de nuvem, é onde vivem os serviços internos, então um SSRF que os alcança pode falar com bancos de dados, caches e painéis administrativos.

Loopback e link-local

127.0.0.0/8 é loopback: sempre significa "esta máquina", então http://127.0.0.1/ ou http://localhost/ mira serviços vinculados ao próprio servidor. 169.254.0.0/16 é link-local (RFC 3927), atribuído automaticamente em um segmento. O único endereço 169.254.169.254 dentro desse bloco é o endpoint de metadados de nuvem, e por isso o link-local recebe atenção especial.

NAT de operadora e faixas de documentação

100.64.0.0/10 (RFC 6598) é espaço de endereços compartilhado usado por provedores para de operadora (-grade NAT); não é público, mas também não é o espaço privado clássico, então merece uma classificação intermediária e cautelosa. Os blocos TEST-NET 192.0.2.0/24, 198.51.100.0/24 e 203.0.113.0/24 (RFC 5737) existem apenas para documentação e nunca deveriam aparecer como destino real.

Todo o resto é público

Um endereço que não cai em nenhum bloco reservado é público e roteável. Destinos públicos ainda carregam algum risco de SSRF, pois um atacante pode apontar o servidor para um host que ele controla, mas não alcançam sua rede interna. É por isso que um classificador reporta um nível de risco em vez de um simples sim ou não: a categoria do destino decide o quanto se preocupar.

As faixas que são esquecidas

A RFC 1918 é a parte que todo mundo lembra, e uma checagem que para aí tem buracos em lugares específicos e previsíveis.

Loopback (127.0.0.0/8 — o /8 inteiro, não um endereço) e link-local (169.254.0.0/16, onde vivem os metadados de nuvem). (100.64.0.0/10), que não é privado nem seguramente público. 0.0.0.0/8, que várias pilhas tratam como "este host". E os equivalentes IPv6: ::1, unique-local fc00::/7, link-local fe80::/10, além dos endereços IPv4 mapeados como ::ffff:127.0.0.1, que carregam um endereço IPv4 proibido dentro de um IPv6 de aparência permitida.

É esse o argumento para usar a classificação da própria plataformais_private, is_loopback, is_link_local — em vez de uma lista de blocos escrita à mão. Quem mantém a biblioteca já encontrou os casos que você não encontrou, e a lista deles é atualizada por gente cuja função é essa.