Как-то, очередной раз настраивая роутер с LTE модемом, обратил внимание, что IP адрес оператором мне был выдан из сети 11.0.0.0/8. Уже не помню точно, что за оператор это был, да и не имеет это значения, но задумался: а как так-то? Ведь вряд ли сотовый оператор будет бесплатно раздавать динамические публичные IP адреса, а локальными с детства привычно использование адресов 10.0.0.0/8, 192.168.0.0/16 и 172.16.0.0/12. Так же есть сеть 100.64.0.0/10, но с ней тоже всё не просто. Полный список не маршрутизируемых адресов можно посмотреть, например, тут.
Проверил WHOIS - сеть публичная, и значится за некоей "DoD Network Information Center" с датой регистрации 1984-01-19.
Так зародилась данная статья. Не претендую на 100% точность и достоверность информации и не рекомендую использовать информацию из этой статьи. В чём‑то данная статья имеет схожесть с «Ищем свободные IPv4 в BGP full‑view», но она немного о другом.
Сразу хочу сказать, поскольку это может быть не очевидно - в этой статье я говорю только о локальном использовании адресов внутри инфраструктуры.
Каковы достоверные причины использования данной сети 11.0.0.0/8 у сотового оператора мне не известно, но предполагаю, что причина простая - в минимизации пересечения адресного пространства с абонентскими устройствам. Но как же так, наверняка многие спросят, - сеть то публичная и есть не нулевая вероятность, что в этой сети будет какой-нибудь полезный или не очень ресурс.
Анализ
На этот счёт есть то, что может вероятно однозначно ответить, есть ли там что-то полезное или нет - это full-view BGP. К сожалению доступа к роутеру с BGP у меня на текущий момент нет, поэтому можно воспользоваться имеющимися данными с официального ресурса RIPE.
Можно брать информацию с http://rrc00.ripe.net, но там много лишней маршрутной информации, которая мне не нужна. Поэтому я решил использовать данные https://data.ris.ripe.net/rrc13/latest-bview.gz с сервера "rrc13.ripe.net at Moscow, Russia. Collects route updates announced by the MSK-IX members from Apr 2005."
Это файл, который в распакованном виде умеет читать утилита bgpdump.
Но что же я хочу получить? Анализировать пол миллиона маршрутов не хочется, да и зачем? Вспомним немного историю интернета, а точней её часть, где выдавали IP адреса компаниям в США. На заре интернета, несколько крупных американских компаний получило сети с маской /8, потому что тогда еще никто не понимал, к чему придёт современный интернет. Значит и анализировать BGP full-view будем по данной маске, да и это самое простое и не требующее никаких усилий.
Штош, приступим:
sudo apt install bgpdump
wget https://data.ris.ripe.net/rrc13/latest-bview.gz
gzip -d latest-bview.gz
#следующая команда займёт несколько минут
bgpdump latest-bview |grep PREFIX|awk '{print $2}'|grep -E "^[0-9]{1,3}\."|sort -u > latest-bview-prefix-ipv4.txt
#анализируем
for x in `seq 1 255`; do echo -n "$x.0.0.0/8,"; cat latest-bview-prefix-ipv4.txt|grep -E "^$x\." -c ; done > routes.csv
Полный готовый результат можно посмотреть тут.
Оставлю тут самую интересную часть:
Подсеть | Число маршрутов | Организация из whois |
4.0.0.0/8 | 20 | Level 3 Parent, LLC |
7.0.0.0/8 | 12 | DoD Network Information Center |
9.0.0.0/8 | 1 | IBM |
19.0.0.0/8 | 9 | Ford Motor Company |
21.0.0.0/8 | 5 | DoD Network Information Center |
25.0.0.0/8 | 4 | UK Ministry of Defence |
26.0.0.0/8 | 1 | DoD Network Information Center |
28.0.0.0/8 | 1 | DoD Network Information Center |
29.0.0.0/8 | 25 | DoD Network Information Center |
30.0.0.0/8 | 1 | DoD Network Information Center |
33.0.0.0/8 | 1 | DoD Network Information Center |
48.0.0.0/8 | 0 | The Prudential Insurance Company of America |
53.0.0.0/8 | 2 | Mercedes-Benz Group AG |
56.0.0.0/8 | 24 | United States Postal Service. (USPS-3) |
73.0.0.0/8 | 1 | Comcast IP Services, L.L.C. |
Это список /8 сетей, в которых имеется меньше 100 маршрутов в таблице BGP.
Сети 11.0.0.0/8, о которой я говорил в самом начале, нет в списке - поскольку в ней 285 маршрутов, что тоже не так много. Вообще интересных сетей больше 36 штук /8 с числом маршрутов в BGP меньше 1000 - но с ними сложней. Вы можете самостоятельно их изучить по ссылке выше или получить данные самостоятельно.
И что с этим делать?
Зачем же это всё надо и в чём отличие от статьи «Ищем свободные IPv4 в BGP full‑view»? В том, что я предлагаю немного использовать эти адреса для внутренних нужд локальной сетевой инфраструктуры. Хотя в той статье как раз было предположение, что эти сети сейчас вероятно уже используются этими организациями для внутренних нужд и так. Так же оставили комментарий, что на рабочем компьютере уже используются такие адреса.
Я по своей сфере деятельности довольно часто сталкиваюсь с пересечением маршрутов в локальной сети. Казалось бы, есть 3 сети (10.x, 192.168.x, 172.16.x), которые можно и нужно использовать для локальной сети и вроде там полно адресов, но по каким-то причинам всё же могут встречаться пересечения. Причина в основном банальная - отсутствие какой-то базы подсетей, выделение чрезмерных блоков для простых задач (например /24 для p2p стыка), чрезмерное планирование масштабов (например для VPN /16 сеть).
Так же очень во многих крупных организациях в принципе используются все 3 локальных сети для различных целей и требуется время для выделения какой-то новой сети для, например стыка или взаимодействия site-to-site. Иногда если одна организация меньше другой, приходится использовать сеть, выделенной более крупной у себя. Ну или когда крупных организаций много, то приходится становиться еще более гибкими.
Некоторые для стыка используют 169.254.0.0/16, например, но для полноценного site-to-site это не подходит.
Еще есть сеть 100.64.0.0/10, цели которой по RFC я до конца не понял. Вроде как её цель - использоваться на абонентских устройствах на WAN интерфейсе, вместо динамического или статического публичного адреса или вместо адреса из стандартных локальных адресов. В целом некоторые российские ШПД операторы так эту сеть и используют. Но почему тогда сотовые операторы решили 11.x сеть использовать?
Я лично активно использую сеть 100.64.0.0/10 для внутренней адресации серверов в своей компании и пока проблем не было.
Итого
Подводя итоги, что касается вот этих вот сетей, я лично решил для себя потихоньку их использовать для своих внутренних нужд. Например, мне надо было временно сделать NAT сети 192.168.88.0/24 (что бы получать доступ к этой сети, но не добавлять маршрут конкретно на эту сеть, т.к. она слишком стандартная). Я взял сеть 48.99.88.0/24 и настроил 1в1 NAT этой сети в 192.168.88.0/24. Это лишь один из примеров использования. Можно использовать эти адреса в своём собственном VPN для своих личных доступов. Можно использовать эти адреса для стыков. Где-то по согласованию можно использовать для site2site.
Когда-то давно, я использовал сеть 172.32.x для локальной домашней сети - по WHOIS это "T-Mobile USA, Inc.". А для своих VPN до сих пор использую 172.12.x - это "AT&T Corp. (AC-3280)"
Минусы
Однако есть и минусы всего этого, про которые нельзя забывать:
Это совсем не по RFC.
По причине пункта 1, некоторые устройства не смогут нормально работать, используя эти сети. Их скорее всего немного, но они есть. Особенно совсем простые устройства с защитой от "дурака".
Кроме того, что, выбирая сеть, нужно проверить по таблице BGP, не занята ли она, а если занята, то кем. В случае 172.32.x и 172.12.x мне было не важно, что они заняты операторами связи из США. Даже имея небольшой проект в РУ сегменте, меня не сильно беспокоило, что пользователи из этих сетей вероятно не смогут зайти на мой сайт.
По причине пункта 1 и 3 и каким-то своим убеждениям, некоторые коллеги или партнёры могут не согласиться использовать эти сети, но для стыков, как мне кажется, можно использовать смело.
Нужно в теории мониторить эти сети, не начнут ли из них раздавать адреса всем подряд.
Если у вас крупный проект, а особенно международный, риск использования этих сетей для внутренних коммуникаций может многократно увеличиться, поскольку в случае внезапной раздачи адресов, например из блока 19.0.0.0/8, какие-то коммуникации могут сломаться. Вряд ли эти адреса будут раздавать под внешние адреса каких-то пользователей, скорее они будут использоваться для серверов, но всё же.
Заключение
На этом кажется всё. Я ни к чему не призываю, но считаю, что нужно иметь это ввиду. Если в чём-то сильно не прав - пишите. За нарушение RFC пока не штрафуют, однако в случае проекта с внешними пользователями, нужно использовать это с осторожностью, хоть и риск минимален. А в случае с 100.64.0.0/10 вообще рисков никаких нет, кроме того, что в теории могут быть проблемы с VPN у некоторых сотрудников, но они могут быть и в случае если провайдер сотрудника использует любую из локальных сетей.
Хотел еще добавить ссылки на историю выделения самых первых IPv4 адресов, но что-то пока не нашёл этой информации.
Наглядный инструмент для проверки: https://radar.qrator.dev/search?query=9.0.0.0%2F8
Случай, когда использование "пустых" сетей, привёл к проблемам: https://habr.com/ru/articles/146382/