Zufällige IPv6-Adressen in einem gegebenen Netzwerk mit Python generieren

English Deutsch

Dieser Code generiert zufällige IPv6-Adressen in einem gegebenen Netzwerk mit dem ipaddress-Modul von Python:

random_ipv6.py
import ipaddress
import random

def random_ipv6_addr(network):
    """
    Eine zufällige IPv6-Adresse im gegebenen Netzwerk generieren
    Beispiel: random_ipv6_addr("fd66:6cbb:8c10::/48")
    Gibt ein IPv6Address-Objekt zurück.
    """
    net = ipaddress.IPv6Network(network)
    # Welche der network.num_addresses wollen wir auswählen?
    addr_no = random.randint(0, net.num_addresses)
    # Zufällige Adresse erstellen durch Konvertierung in eine 128-Bit-Ganzzahl, Addieren von addr_no und Zurückkonvertieren
    network_int = int.from_bytes(net.network_address.packed, byteorder="big")
    addr_int = network_int + addr_no
    addr = ipaddress.IPv6Address(addr_int.to_bytes(16, byteorder="big"))
    return addr

# Verwendungsbeispiel
print(random_ipv6_addr("fdce:4879:a1e9::/48"))
# Gibt z.B. fdce:4879:a1e9:e351:1a01:be9:4d9a:157d aus

Es funktioniert, indem zuerst die IPv6-Netzwerkadresse in Binärform konvertiert und dann eine zufällige Host-Nummer addiert wird. Danach wird sie zurück in ein IPv6Address-Objekt konvertiert.


Check out similar posts by category: Networking, Python