Hace poco un estudiante me preguntó cómo verificar si una IP pertenecía a una subred específica sin usar herramientas externas en Python. La respuesta que le di es la que te daré ahora: el import ipaddress es un módulo de Python que hace que la manipulación de direcciones IPv4 e IPv6 sea mucho más fácil, algo que es esencial para desarrolladores y administradores de redes.
En el día de hoy quiero contarte por qué te conviene usar esta herramienta que te permite validar, convertir y manipular direcciones sin mayores complejidades, y cuáles son sus funcionalidades.
¿Qué es import ipaddress?
El de import ipaddress es un módulo que forma parte de la biblioteca estándar de Python y nos brinda un modo bastante eficiente para manejar direcciones IP y redes. Por medio de este método puedes:
El módulo import ipaddress es parte de la biblioteca estándar de Python y proporciona una manera eficiente de manejar direcciones IP y redes. Con este módulo, puedes:
- Crear y manipular direcciones IPv4 e IPv6.
- Determinar si una IP pertenece a una subred específica.
- Convertir direcciones entre formatos numéricos y de cadena.
- Realizar operaciones lógicas y comparaciones entre IPs.
Desde Python 3.3, import ipaddress está incluido de forma nativa, por lo que no necesitas instalar nada adicional.
¿Cómo funciona import ipaddress en Python?: sus usos
El módulo de import ipaddress tiene muchas funcionalidades y usos. Veamos algunos de ellos y cómo podemos implementarlos por medio de ejemplos:
- Crear y validar direcciones IP: Para empezar, puedes crear objetos de direcciones IP de forma sencilla:
import ipaddress
ip1 = ipaddress.ip_address('192.168.1.1')
ip2 = ipaddress.ip_address('2001:db8::1')
print(ip1.is_private) # True (IP privada)
print(ip2.is_global) # True (IP pública)
El método is_private nos indica si una IP pertenece a una red privada, mientras que is_global verifica si es una IP pública.
- Convertir direcciones IP a enteros: Si necesitas comparar direcciones de forma numérica, import ipaddress permite convertirlas en valores enteros:
ip = ipaddress.ip_address('192.168.1.1')
print(int(ip)) # 3232235777
🔴 ¿Quieres Aprender a Programar con Python? 🔴
Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semanaEsto es de gran utilidad para ordenar IPs o almacenarlas en bases de datos de forma eficiente.
- Trabajar con subredes y redes: Puedes crear redes y verificar si una IP pertenece a una subred específica:
red = ipaddress.ip_network('192.168.1.0/24')
print('192.168.1.100' in red) # True
print('192.168.2.1' in red) # False
También puedes recorrer todas las direcciones disponibles en una red:
for ip in red.hosts():
print(ip)
Esto te puede servir cuando necesitas asignar direcciones IP dentro de una subred.
- Manipular interfaces de red: El módulo también permite manejar interfaces de red, combinando direcciones con máscaras:
interface = ipaddress.ip_interface('192.168.1.1/24')
print(interface.network) # 192.168.1.0/24
print(interface.ip) # 192.168.1.1
Esto es útil cuando necesitas trabajar con configuraciones de red y asignaciones IP.
Diferencias entre IPv4 e IPv6 en import ipaddress
El módulo soporta tanto IPv4 como IPv6 con una API unificada. Veamos cómo se usa con IPv6:
ipv6 = ipaddress.ip_address('2001:db8::1')
print(ipv6.compressed) # 2001:db8::1 (notación compacta)
print(ipv6.exploded) # 2001:0db8:0000:0000:0000:0000:0000:0001 (notación expandida)
Con estas herramientas puedes trabajar con cualquier versión de IP sin preocuparte por la compatibilidad.
Import ipaddress y otros módulos: algunas diferencias
Existen otros métodos similares al módulo import ipaddress para trabajar con direcciones IP, por eso hemos hecho un análisis comparativo entre todos ellos:
Característica | ipaddress | socket | netaddr | pyroute2 |
---|---|---|---|---|
Funcionalidad principal | Manejo y validación de direcciones IP y redes | Conversión y manipulación básica de direcciones IP | Manejo avanzado de redes y subredes | Interacción con la configuración de red del sistema |
Soporte para IPv4/IPv6 | Sí | Sí | Sí | Sí |
Validación de direcciones IP | Sí | No | Sí | No |
Conversión entre formatos (str/int) | Sí | Sí | Sí | No |
Manipulación de subredes | Sí | No | Sí | Sí |
Interacción con interfaces de red | No | No | No | Sí |
Facilidad de uso | Alta | Media | Media | Baja |
Parte de la biblioteca estándar | Sí | Sí | No | No |
Casos de uso | Validación de IPs, manejo de subredes | Conversión y verificación de direcciones IP | Administración de redes y direcciones IP | Gestión avanzada de redes en sistemas Linux |
Si quieres especializarte en redes, automatización y desarrollo backend, KeepCoding tiene el Bootcamp de programación desde cero para ti. Con nuestro programa adquirirás habilidades clave en programación y redes, abriéndote paso en un sector con gran demanda, excelentes salarios y estabilidad laboral. Es el momento de impulsar tu carrera.