2016-09-23 70 views
-2

我需要能够生成一个唯一的IPv6环回地址,我可以使用它来在主机内的进程之间进行通信,但不在其外部。如何在Python中生成唯一的环回IPv6地址?

对于IPv4我发现:

>>> import random, ipaddress 
>>> ipaddress.IPv4Address('127.0.0.1') + random.randrange(2**24 - 2) 
IPv4Address('127.23.181.175') 

是在IPv6模拟?

+0

IPv6有一个环回地址(':: 1'),而IPv4有一个范围('127.0.0.0/8')的地址超过16000万。 –

+1

这是什么原因?现在这看起来像[XY问题](http://meta.stackexchange.com/q/66377/189912)。 –

回答

1

IPv6只有一个环回地址:::1。这详述于RFC 4291, IP Version 6 Addressing Architecture, Section 2.5.3 The Loopback Address

2.5.3。环回地址

单播地址0:0:0:0:0:0:0:1被称为环回地址。 节点可以使用它来发送IPv6数据包给自己。必须将 不分配给任何物理接口。它被视为具有 链路本地范围,并且可能被视为虚拟接口的链路本地单播地址(通常称为“环回 接口”)到一个无处不在的假想链路。

回送地址不能用作在单个节点外部发送的IPv6 数据包中的源地址。一个包含 的IPv6数据包必须永远不会发送到单个节点的 之外,并且绝不能由IPv6路由器转发。在环回的目的地址的接口上收到的数据包 必须丢弃。