Schnelle Methode zur Berechnung der Subnetz-IP und der Broadcast-IP

Schnelle Methode zur Berechnung der Subnetz-IP und der Broadcast-IP

Ich habe Probleme, eine schnelle/effektive Methode zu finden, um den gültigen IP-Bereich basierend auf der angegebenen Router-IP und Netzmaske zu bestimmen

Ich weiß, wie man die Subnetz-IP und die Broadcast-IP berechnet, indem man die gesamte IP und die Netzmaske in Binärzahlen umwandelt und ein bitweises UND/ODER ausführt, aber dieser Ansatz ist sehr zeitaufwändig und führt leicht zu Fehlern ...

Antwort1

Es gibt verschiedene Websites und Anwendungen, die die Berechnung für Sie durchführen, wie zum Beispielhttp://www.subnet-calculator.com/cidr.php.

Andernfalls berechnen Sie die Größe des Subnetzes mithilfe der Netzmaske (2 hoch der Anzahl der Nullbits in der Netzmaske). Suchen Sie die höchste IP-Adresse, die ein genaues Vielfaches der Subnetzgröße ist, aber niedriger als die IP-Adresse des Routers. Diese IP-Adresse ist die Netzwerkadresse, und die IP-Adresse plus die Subnetzgröße minus 1 ist die Broadcast-Adresse.

Antwort2

Wenn etwas Zeit braucht, schreiben Sie ein Skript dafür.

Python hat das ipaddressModul:

$ python
Python 3.4.2 (default, Oct  8 2014, 13:44:52) 
>>> import ipaddress
>>> x = ipaddress.IPv6Interface("2001:470:709a:107::1a2b:3c/64")
>>> x.network
IPv6Network('2001:470:709a:107::/64')
>>> y = ipaddress.IPv4Interface("194.219.181.195/26")
>>> y.network
IPv4Network('194.219.181.192/26')
>>> y.network.network_address
IPv4Address('194.219.181.192')
>>> y.network.broadcast_address
IPv4Address('194.219.181.255')

Das würde zur Folge haben:

#!/usr/bin/env python
import ipaddress
import sys

for arg in sys.argv[1:]:
    addr = ipaddress.ip_interface(arg)
    print("address =", addr)
    print("network =", addr.network)
    if addr.version == 4:
        print("netmask =", addr.netmask)
        print("broadcast =", addr.network.broadcast_address)
    print()

verwandte Informationen