Каково общее количество общедоступных адресов IPv4? - PullRequest
42 голосов
/ 13 марта 2010

Да, мне нужно знать, каково общее количество возможных IP-адресов в общедоступном пространстве IPv4.

Я не уверен, где вообще можно получить аккуратный список всех диапазонов IP-адресов, поэтому кто-то может указать мне ресурс, чтобы рассчитать это сам или рассчитать общее количество IP-адресов для меня?

Кроме того, под публичными IP-адресами я подразумеваю не считать зарезервированные или приватные IP-адреса. Только те, которые могут быть доступны через Интернет.

Ответы [ 4 ]

79 голосов
/ 13 марта 2010

Согласно Зарезервированным IP-адресам существует 588 514 304 зарезервированных адреса, и, поскольку в общей сложности имеется 4 294 967 296 (2 ^ 32) адресов IPv4, существует 3 706 452 992 открытых адресов.

И слишком много адресов в этом посте.

22 голосов
/ 14 марта 2015

https://www.ripe.net/internet-coordination/press-centre/understanding-ip-addressing

Для IPv4 этот пул имеет размер 32 бита (232) и содержит 4 294 967 296 адресов IPv4.

В случае IPv6

Адресное пространство IPv6 имеет размер 128 бит (2128) и содержит 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

wiki имеет полную информацию и этот содержит сведения об IPv6.

16 голосов
/ 18 февраля 2013

Просто небольшая поправка к ответу Марко: точное число не может быть получено из некоторых общих расчетов прямо из-за следующего факта: Допустимые IP-адреса также не должны заканчиваться двоичными последовательностями 0 или 1, которые имеют ту же длину, что и нулевая последовательность в маске подсети. Таким образом, окончательный ответ действительно зависит от общего числа подсетей (ответ Марко - 2 * общее количество подсетей).

1 голос
/ 02 марта 2019

Публичные IP-адреса

https://github.com/stephenlb/geo-ip создаст список допустимых публичных IP-адресов, включая населенные пункты.

'1.0.0.0/8' до '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-адресов и связанной гео-информации. Обратите внимание, что действительный публичный диапазон IP-адресов от '1.0.0.0/8' до '191.0.0.0/8' исключая зарезервированные Частные диапазоны IP-адресов показаны ниже в этом файле readme.

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"}

Частный и зарезервированный диапазон IP-адресов

Dockerfile в репозитории выше исключит неиспользуемые IP-адреса следуя руководству из статьи википедии: https://en.wikipedia.org/wiki/Reserved_IP_addresses

MaxMind Geo IP

Dockerfile импортирует бесплатную общедоступную базу данных, предоставленную https://www.maxmind.com/en/home

...