是的,我需要知道公共 IPv4 空间中可能的 IP 总数。
我不确定在哪里可以获得所有 IP 地址范围的简洁列表,所以有人可以指点我自己计算这个资源或为我计算 IP 总数吗?
此外,我所说的公共 IP 是指不计算保留或私有范围的 IP 地址。只有可以通过互联网访问的 IP 地址。
是的,我需要知道公共 IPv4 空间中可能的 IP 总数。
我不确定在哪里可以获得所有 IP 地址范围的简洁列表,所以有人可以指点我自己计算这个资源或为我计算 IP 总数吗?
此外,我所说的公共 IP 是指不计算保留或私有范围的 IP 地址。只有可以通过互联网访问的 IP 地址。
根据保留 IP 地址,有 588,514,304 个保留地址,由于总共有 4,294,967,296 (2^32) 个 IPv4 地址,因此有3,706,452,992 个公共地址。
而且这个帖子里的地址太多了。
https://www.ripe.net/internet-coordination/press-centre/understanding-ip-addressing
对于 IPv4,此池大小为 32 位 (2³²),包含 4,294,967,296 个 IPv4 地址。
在 IPv6 的情况下
IPv6 地址空间大小为 128 位 (2¹²⁸),包含 340,282,366,920,938,463,463,374,607,431,768,211,456 个 IPv6 地址。
包括保留 IP
Reserved address blocks
Range Description Reference
0.0.0.0/8 Current network (only valid as source address) RFC 6890
10.0.0.0/8 Private network RFC 1918
100.64.0.0/10 Shared Address Space RFC 6598
127.0.0.0/8 Loopback RFC 6890
169.254.0.0/16 Link-local RFC 3927
172.16.0.0/12 Private network RFC 1918
192.0.0.0/24 IETF Protocol Assignments RFC 6890
192.0.2.0/24 TEST-NET-1, documentation and examples RFC 5737
192.88.99.0/24 IPv6 to IPv4 relay (includes 2002::/16) RFC 3068
192.168.0.0/16 Private network RFC 1918
198.18.0.0/15 Network benchmark tests RFC 2544
198.51.100.0/24 TEST-NET-2, documentation and examples RFC 5737
203.0.113.0/24 TEST-NET-3, documentation and examples RFC 5737
224.0.0.0/4 IP multicast (former Class D network) RFC 5771
240.0.0.0/4 Reserved (former Class E network) RFC 1700
255.255.255.255 Broadcast RFC 919
只是对 Marko 答案的一个小修正:由于下一个事实,无法直接从一些一般计算中得出确切的数字:有效 IP 地址也不应以与子网中的零序列具有相同长度的二进制 0 或 1 序列结尾面具。所以最终的答案实际上取决于子网的总数(Marko 的答案 - 2 * 子网总数)。
https://github.com/stephenlb/geo-ip将生成一个有效 IP 公共地址列表,包括地区。
'1.0.0.0/8'
to'191.0.0.0/8'
是不包括保留的私有 IP 地址的有效公共 IP 地址范围,如下所示:
import iptools
## Private IP Addresses
private_ips = iptools.IpRangeList(
'0.0.0.0/8', '10.0.0.0/8', '100.64.0.0/10', '127.0.0.0/8',
'169.254.0.0/16', '172.16.0.0/12', '192.0.0.0/24', '192.0.2.0/24',
'192.88.99.0/24', '192.168.0.0/16', '198.18.0.0/15', '198.51.100.0/24',
'203.0.113.0/24', '224.0.0.0/4', '240.0.0.0/4', '255.255.255.255/32'
)
生成 IP 地址和相关地理信息的 JSON 转储。请注意,有效的公共 IP 地址范围是从'1.0.0.0/8'
到'191.0.0.0/8'
不包括在本自述文件下方显示的保留的私有 IP 地址范围。
docker build -t geo-ip .
docker run -e IPRANGE='54.0.0.0/30' geo-ip ## a few IPs
docker run -e IPRANGE='54.0.0.0/26' geo-ip ## a few more IPs
docker run -e IPRANGE='54.0.0.0/16' geo-ip ## a lot more IPs
docker run -e IPRANGE='0.0.0.0/0' geo-ip ## ALL IPs ( slooooowwwwww )
docker run -e IPRANGE='0.0.0.0/0' geo-ip > geo-ip.json ## ALL IPs saved to JSON File
docker run geo-ip
扫描所有有效公共地址的更快选项:
for i in $(seq 1 191); do \
docker run -e IPRANGE="$i.0.0.0/8" geo-ip; \
sleep 1; \
done
这会将少于4,228,250,625行的 JSON 行打印到 STDOUT。以下是其中一行的示例:
{"city": "Palo Alto", "ip": "0.0.0.0", "longitude": -122.1274,
"continent": "North America", "continent_code": "NA",
"state": "California", "country": "United States", "latitude": 37.418,
"iso_code": "US", "state_code": "CA", "aso": "PubNub",
"asn": "11404", "zip_code": "94107"}
上面 repo 中的 dockerfile 将按照维基百科文章中的指南排除不可用的 IP 地址: https ://en.wikipedia.org/wiki/Reserved_IP_addresses
dockerfile 导入https://www.maxmind.com/en/home提供的免费公共数据库
36.81亿是目前2020年的总数。