Programa de Python para encontrar si dos direcciones IP pertenecen a la misma o diferente red

Requisitos previos: enrutamiento entre dominios sin clases (CIDR)

Dadas dos direcciones IP en notación CIDR , determine si pertenecen a la misma red o a una red diferente. Se dice que dos direcciones IP están en la misma red si la ID de red de ambas direcciones IP es la misma.

Ejemplos:

Entrada: IP1 = 192.168.1.0/8, IP2 = 192.32.45.7/8
Salida: Misma red
Explicación: El número de bits en el ID de red de ambas direcciones IP es de 8 bits y los primeros
8 bits (es decir, el primer octeto) de ambas las direcciones IP son las mismas (es decir, 192). Por lo tanto, ambas direcciones IP
pertenecen a la misma red.

Entrada: IP1 = 17.53.128.0/20, IP2 = 17.53.127.0/20
Salida: Red diferente
Explicación: La cantidad de bits en la ID de red de ambas direcciones IP es de 20 bits, pero los primeros
20 bits de ambas direcciones IP son diferentes . Por lo tanto, ambas direcciones IP pertenecen a una
red diferente.

Para implementarlo, usaremos el método ip_network y network_address del módulo ipaddress de Python 3.3.

# importing ip_network from ipaddress module
from ipaddress import ip_network
    
def sameNetwork(IP1: str, IP2: str) -> str:
    
    a = ip_network(IP1, strict = False).network_address
    b = ip_network(IP2, strict = False).network_address
  
    if(a == b) :
        return "Same Network" 
  
    else :
        return "Different Network"
  
# main function    
if __name__ == '__main__' : 
   
    # Same Network  
    print(sameNetwork('192.168.1.0/8', '192.32.45.7/8'))  
  
    # Different Network  
    print(sameNetwork('17.53.128.0/20', '17.53.127.0/20'))
  

Producción :

Same Network
Different Network

Publicación traducida automáticamente

Artículo escrito por chirags_30 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *