ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
IP и ASN

Что такое ROA и RPKI: как создать ROA для IP-блока (RIPE/APNIC/ARIN/AFRINIC) и проверить его

5 шагов 11 мин чтения 2 просмотров 0
Содержание

RPKI (Resource Public Key Infrastructure) с помощью сертификатов подтверждает, какая ASN вправе анонсировать какой IP-префикс, а ROA (Route Origin Authorization) — это подписанный объект с таким разрешением. Всё больше операторов отбрасывают RPKI-невалидные маршруты, поэтому префикс без корректного ROA может быть недоступен из части интернета. В статье объясняется, что такое ROA и RPKI, как создать ROA для IP-блока в порталах RIPE, APNIC, ARIN и AFRINIC, как выбрать максимальную длину префикса и как проверить результат через rpki.cloudflare.com и Routinator на Debian/Ubuntu и CentOS/Rocky/AlmaLinux.

Шаг 1: Состояния RPKI-валидации и проверка текущего ROA

Маршрутизатор сравнивает полученные маршруты с ROA и получает один из трёх результатов: Valid (ASN-источник и длина совпадают), Invalid (не та ASN или префикс специфичнее max length; многие сети такие маршруты отбрасывают) или NotFound (ROA для префикса нет). Проверьте текущее состояние через API RIPEstat:

curl -s "https://stat.ripe.net/data/rpki-validation/data.json?resource=AS64500&prefix=198.51.100.0/24" | grep -o '"status":"[^"]*"'

Шаг 2: Соберите префиксы, ASN-источник и максимальную длину для ROA

Составьте список всех реально анонсируемых префиксов и их ASN-источников. Max length определяет, какие более специфичные подпрефиксы ещё разрешает ROA. Задавайте его равным длине анонса и создавайте отдельные ROA только для тех подпрефиксов, которые действительно анонсируете. Слишком широкий max length позволяет злоумышленнику подделать вашу ASN и перехватить подпрефиксы.

curl -s "https://stat.ripe.net/data/announced-prefixes/data.json?resource=AS64500" | grep -o '"prefix":"[^"]*"'
birdc show route export upstream1          # BIRD 2
vtysh -c "show bgp ipv4 unicast neighbors 203.0.113.1 advertised-routes"   # FRR
Prefix              Origin ASN   Max Length
198.51.100.0/24     AS64500      24
198.51.100.0/23     AS64500      23     # only if you also announce the /23
2001:db8:100::/48   AS64500      48

Шаг 3: Создайте ROA в портале RIR

Создавать ROA может только держатель ресурса (или уполномоченная им учётная запись). Точки входа примерно такие; ориентируйтесь на актуальный интерфейс каждого RIR:

  • RIPE NCC: LIR Portal → RPKI Dashboard, включите hosted RPKI и создайте ROA.
  • APNIC: MyAPNIC → управление ресурсами и маршрутами, создайте ROA (route-объект можно создать одновременно).
  • ARIN: ARIN Online → включите Hosted RPKI для ресурса и отправьте запрос ROA.
  • AFRINIC: MyAFRINIC → меню RPKI → создание ROA.

Укажите префикс, ASN-источник и max length и сохраните; публикация обычно занимает от нескольких минут до часа. Если IP арендованы у IMIDC, держателем ресурса является IMIDC: создайте тикет с префиксом, вашей ASN и max length — мы создадим ROA и при необходимости route-объект в IRR.

Prefix:      198.51.100.0/24
Origin ASN:  AS64500
Max Length:  24
IRR route object: yes
Если префикс ещё анонсируется старой ASN или другим провайдером, сначала спланируйте миграцию, иначе старый маршрут может сразу стать Invalid и привести к простою. Для неиспользуемых блоков создайте ROA с AS0 — это защитит от перехвата.

Шаг 4: Онлайн-проверка ROA на rpki.cloudflare.com

Откройте валидатор на rpki.cloudflare.com, введите ASN и префикс — вы увидите Valid или Invalid и все ROA, покрывающие префикс. RIPEstat и bgp.tools тоже показывают статус RPKI. Можно также повторить команду из шага 1 и убедиться, что статус стал valid.

curl -s "https://stat.ripe.net/data/rpki-validation/data.json?resource=AS64500&prefix=198.51.100.0/24" | grep -o '"status":"[^"]*"'

Шаг 5: Локальная проверка RPKI с помощью Routinator

Routinator — открытый RPKI-валидатор от NLnet Labs. Он проверяет данные на вашем сервере и может отдавать их маршрутизаторам по RTR. Ниже установка через инструментарий Rust (у NLnet Labs также есть репозитории пакетов для Debian/Ubuntu и систем на базе RHEL). Первый запуск синхронизирует весь репозиторий RPKI и может занять несколько минут.

# Debian / Ubuntu
apt install -y curl build-essential
# CentOS / Rocky / AlmaLinux
dnf install -y curl gcc
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
cargo install --locked routinator
routinator validate --asn AS64500 --prefix 198.51.100.0/24
routinator vrps --select-asn AS64500

Частые вопросы

Нужен ли route-объект в IRR, если есть ROA?

Да. Многие апстримы по-прежнему строят фильтры префиксов по данным IRR, поэтому держите ROA и объекты route/route6 согласованными.

Через сколько ROA начнёт действовать?

RIR обычно публикуют в течение часа, а валидаторы обновляются по своему расписанию — в среднем от десятков минут до нескольких часов.

Можно ли разрешить один префикс нескольким ASN?

Да, создайте по ROA на каждую ASN. Это удобно при мультиоригинных схемах или на время миграции.

Если проблема не решена, создайте тикет в поддержку IMIDC, работающую 24/7.

Помог ли вам данный ответ?

Похожие руководства