O módulo ipaddress interpreta IPv4, IPv6 e redes CIDR sem dependências externas. Objetos normalizados permitem testar pertencimento, versão e propriedades como endereço privado, global ou de loopback.
from ipaddress import ip_address, ip_network
client = ip_address("192.0.2.25")
allowed = ip_network("192.0.2.0/24")
if client in allowed:
print("allowed")
print(client.version, client.is_private)
Como usar com segurança
Trate ValueError ao receber entrada externa e decida se uma rede com bits de host deve ser rejeitada ou normalizada com strict=False. Propriedades de classificação ajudam na análise, mas não substituem regras de firewall nem confiança em proxies.
Para aprofundar a base, consulte guia de collections em Python e guia de type hints.
A documentação oficial do Python, consultada em 22 de julho de 2026, descreve a API, os casos-limite e a compatibilidade entre versões.