Сопоставление произвольных адресов IPv6 отдельным RIR (ARIN, RIPE и т. д.)

Легко сопоставить адреса IPv4 с их управляющим RIR (ARIN, RIPE и т. Д.), Поскольку адреса v4 раздаются IANA в блоках /8 . Я могу написать функцию, которая берет произвольный IPv4-адрес и вычисляет правильное значение RIR, просто проверяя первые восемь бит этого адреса.

Согласно http://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.txt, глобальные одноадресные IPv6-адреса раздаются в блоках разных размеров. Я не вижу никакой рифмы или причины, по которой эти блоки были распределены по размерам. Это может затруднить написание версии вышеуказанной функции для IPv6.

Существует ли простой способ определить, какой (глобальный одноадресный) IPv6-адрес принадлежит какому RIR? Или мне придется перебирать все назначенные сетевые блоки и смотреть, покрывается ли мой адрес одним из них?

Спасибо!

1 ответ

Решение

Единственный способ - сопоставить с упомянутым вами списком: проанализировать список и сопоставить ваш адрес с записями. Должна быть точно одна запись, которая соответствует; это твой результат.

Почему блоки имеют разные размеры? Ну, я думаю, у этого есть исторические причины. Во-первых, только 2001: адреса были розданы; назначенные размеры блоков, вероятно, были связаны с различными потребностями клиентов. Вскоре они заметили, что /23 слишком маленький. В конце концов (около 2006 года) они присвоили /12 каждому RIR, который теперь должен посмотреть, как с этим справиться. Это должно длиться некоторое время; если они все используются, новые блоки будут назначены.

Другие вопросы по тегам