如何从IPV6中的CIDR计算最后一个IP地址

问题描述 投票:-1回答:2

我正在尝试使用用于IPV4的Apache commons-net从CIDR计算最后一个IP地址

SubnetUtils su = new SubnetUtils(cidr);
SubnetInfo si = su.getInfo();
si.getHighAddress();

不适用于IPV6,有人可以建议一些库来解决此问题吗?

java ipv6 apache-commons subnet apache-commons-net
2个回答
1
投票

通常,IPv6子网将是一个/64(对此有很少的例外,其他子网大小可能会破坏某些内容)。由于IPv6甚至没有广播概念,因此子网中的最后一个地址将以ffff:ffff:ffff:ffff作为最后64位。 IPv6也可以使用子网中的第一个(0000:0000:0000:0000)地址。由于子网中的每个地址都是有效地址,因此它比IPv4容易得多。


1
投票

[The IPAddress Java library可以完成您在此描述的事情。

对于任何给定的CIDR字符串,无论是IPv4,例如1.2.3.4/16,还是IPv6,例如1:2:3:4 :: // 64,您都可以执行以下操作:

IPAddressString string = new IPAddressString("1:2:3:4::/64");
IPAddress subnet = string.getAddress();
IPAddress highest = subnet.getHighest();
String highestString = highest.toCanonicalString();
System.out.println(highestString);

对于1:2:3:4 :: / 64,以上代码的输出为1:2:3:4:ffff:ffff:ffff:ffff

© www.soinside.com 2019 - 2024. All rights reserved.