如何使用 Python 在给定网络中生成随机 IPv6 地址

此代码使用 Python 的 ipaddress 模块在给定网络中生成随机 IPv6 地址:

random_ipv6.py
import ipaddress
import random

def random_ipv6_addr(network):
    """
    在给定网络中生成随机 IPv6 地址
    示例:random_ipv6_addr("fd66:6cbb:8c10::/48")
    返回 IPv6Address 对象。
    """
    net = ipaddress.IPv6Network(network)
    # 我们要选择 network.num_addresses 中的哪个?
    addr_no = random.randint(0, net.num_addresses)
    # 通过转换为 128 位整数、添加 addr_no 并转换回来创建随机地址
    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

# 使用示例
print(random_ipv6_addr("fdce:4879:a1e9::/48"))
# 打印例如 fdce:4879:a1e9:e351:1a01:be9:4d9a:157d

它的工作原理是首先将 IPv6 网络地址转换为二进制,然后添加随机主机号。之后,它将被转换回 IPv6Address 对象。


Check out similar posts by category: Networking, Python