Сети и протоколы
Безопасность IP и операции
Сайт недоступен для одного ISP. С вашей машины вы его достигаете. Клиент сообщает что браузер полностью таймаутится. Запрос в BGP looking-glass показывает что кто-то другой анонсирует ваш префикс. У вас 15 минут чтобы понять что произошло и исправить это. Это IP-безопасность — не TLS-уровень выше, а маршрутизационный субстрат под ним.
IP spoofing и почему это важно
В IP ничто не мешает отправителю написать произвольный source-адрес. Хост может притвориться что он 1.2.3.4 и сеть форвардит пакет. Это обеспечивает:
- Reflection/amplification DDoS: атакующий шлёт маленькие UDP-пакеты на открытый DNS или NTP-сервер с подделанным source IP (IP жертвы). Сервер шлёт большой ответ жертве. DNS amplification factor: ~60×. NTP monlist: до ~5000×. Memcached: до 51 000×. Атакующий тратит 1 Гбит/с, жертва поглощает 51 Тбит/с.
- Обход IP-based rate limiting: флуд со случайных source IP.
- Обход правил firewall которые доверяют определённым source IP.
- Принятие BCP 38 (egress filtering)
- ~60% AS
- Принятие RPKI ROV (Tier-1 ISP)
- ~85%+ в 2026
- DNS amplification factor
- до 60×
- NTP monlist amplification
- до 4 670×
- Рекорд DDoS Cloudflare (2024)
- ~5,6 Тбит/с
- BGP-хайджек инциденты (2024)
- несколько резонансных случаев
BCP 38 и uRPF: победа над spoofing у источника
BCP 38 (RFC 2827) рекомендует ISP применять egress filtering: проверять что пакеты покидающие их сеть имеют source IP из адресного пространства которое они авторизованы анонсировать. Пакет из 192.0.2.1 не должен покидать сеть которая владеет только 203.0.113.0/24.
Глобальное принятие BCP 38 — ~60%. Оставшиеся 40% AS пропускают spoofed-трафик, обеспечивая amplification-атаки в масштабе.
uRPF (Unicast Reverse Path Forwarding) — data-plane механизм. Когда пакет приходит на интерфейс, роутер проверяет: «маршрутизировал бы я пакет обратно к source IP через этот же интерфейс?» Если нет — source подделан, дропнуть. uRPF в strict mode требует чтобы обратный путь использовал тот же интерфейс; loose mode просто требует чтобы source был маршрутизируем. Развёртывается на клиентских портах роутера, не в core.
BGP-хайджеки и RPKI
BGP-хайджек: мошенническая AS анонсирует префикс которым не владеет. Пример: AS12345 анонсирует 203.0.113.0/24 хотя он принадлежит AS64512. Соседние AS могут принять анонс (в BGP нет встроенной аутентификации). Трафик к этому префиксу перенаправляется в AS12345. Сервисы легитимного владельца становятся недоступны или трафик перехватывается.
RPKI (Resource Public Key Infrastructure): криптографическая система связывающая IP-префиксы с номерами AS.
- Владелец префикса создаёт Route Origin Authorisation (ROA): «Только AS64512 может анонсировать 203.0.113.0/24.» ROA подписывается и публикуется у RIR владельца (RIPE, ARIN и т.д.).
- Роутеры настроенные для Route Origin Validation (ROV) получают подписанные ROA-данные из доверенных репозиториев и помечают BGP-маршруты как
valid,invalidилиnot-found. - ROV-enabled роутеры отбрасывают анонсы origin-AS которые не совпадают с ROA —
invalidмаршруты фильтруются.
Развёртывание: Tier-1 ISP в основном развернули ROV к 2026; мелкие ISP отстают. Трекер Cloudflare «Is BGP safe yet?» измеряет охват. Пока нет почти универсального развёртывания — хайджеки случаются ежемесячно.
Подводный камень RPKI: у ROA есть сроки действия, как у TLS-сертификатов. Если допустить истечение ROA, ваш префикс становится not-found, и консервативные ROV-enabled ISP могут дропать ваши маршруты. Мониторьте истечение ROA как любой сертификат.
Старшего NetOps-инженера вызывают: клиент сообщает что его сайт example.com недоступен у одного ISP. Проследите диагностику.
DDoS на IP-уровне
Volumetric-атаки флудят цель пакетами превышая пропускную способность линка или лимиты kernel-state. Защита:
- Tier-1 скрубберы (Cloudflare Magic Transit, Akamai Prolexic, AWS Shield Advanced): стоят выше по потоку, анонсируют BGP-маршруты притягивая трафик через скрубберы, дропают атакующий трафик, реинжектируют легитимный.
- Anycast-поглощение: распределение префикса по сотням POP’ов означает что каждый поглощает часть объёма атаки.
- Валидация источника (BCP 38) у source ISP устраняет spoofed amplification-пакеты у источника — единственное крупнейшее одностороннее исправление, но принятие неравномерно.
IP-фрагментация как риск безопасности. Некоторые firewall’ы инспектируют только первый фрагмент, позволяя атакующим прятать вредоносный payload в последующих фрагментах. Современные firewall’ы переcобирают перед инспекцией, но это потребляет память (поверхность атаки). Запрет IPv6 на фрагментацию роутерами устраняет эту поверхность атаки.
Инструменты операционной наблюдаемости
| Инструмент | Что показывает |
|---|---|
traceroute / mtr | Путь + потери/задержка per-hop |
tcpdump | Захват сырых пакетов |
ip route show | Таблица маршрутизации Linux |
ip -s link | Статистика интерфейса: дропы, ошибки |
| BGP looking-glass | Таблица маршрутов изнутри ISP |
| RIPE Atlas | Краудсорсные глобальные измерения (13k+ зондов) |
| sFlow/NetFlow/IPFIX | Аналитика трафика с сэмплированием |
Looking-glass серверы (например lg.he.net для Hurricane Electric) открывают BGP и traceroute изнутри ISP-сетей — необходимо для диагностики того правильно ли ваш префикс анонсируется с точки зрения удалённой AS.
Революция data plane
Современные роутеры не используют kernel IP forwarding для line-rate работы. Программируемые ASIC (Tofino, Broadcom Trident) реализуют форвардинг в hardware на терабитах в секунду. Software data planes (DPDK, eBPF/XDP в Linux) переносят обработку пакетов в userspace или just-above-kernel для гибкости при высокой пропускной способности.
Nitro-карты AWS полностью разгружают сетевую виртуализацию с VM-хостов. Когда вы управляете load balancer’ом или firewall’ом в значимом масштабе, производительность зависит от архитектуры data plane не меньше чем от протокола маршрутизации — и баги в data plane проявляются как тихая потеря пакетов, а не очевидные крэши.
Вывод mtr с потерями пакетов — диагностируйте
$ mtr -rwc 50 dest.example.com
HOST: my-host Loss% Snt Last Avg Best Wrst StDev
1.|-- 192.168.1.1 0.0% 50 1.2 1.3 1.0 2.5 0.3
2.|-- isp-edge.example.net 0.0% 50 8.1 8.5 7.9 9.8 0.4
3.|-- core-rtr-1.tier1.net 0.0% 50 12.4 12.7 12.1 13.5 0.3
4.|-- core-rtr-2.tier1.net 0.0% 50 25.8 26.2 25.5 27.0 0.3
5.|-- peering.transit.net 14.0% 50 55.2 56.8 54.0 92.5 10.2
6.|-- ??? 100.0% 50 0.0 0.0 0.0 0.0 0.0
7.|-- dest.example.com 0.0% 50 71.3 72.0 70.5 75.1 0.8 Хоп 5 показывает 14% потерь + высокое jitter, хоп 6 показывает 100% потерь, но хоп 7 показывает 0%. Что происходит?
Что рекомендует BCP 38 (RFC 2827)?
Какой RFC определяет базовый формат IPv6-пакета включая фиксированный 40-байтный заголовок?
Почему это работает
Почему развёртывание RPKI медленное несмотря на хайджеки. RPKI требует: (1) чтобы каждый владелец префикса зарегистрировал ROA у своего RIR; (2) чтобы каждый оператор роутеров получал RPKI-данные, валидировал и дропал invalid — операционные накладные расходы + риск ложных срабатываний; (3) чтобы сама RPKI-инфраструктура была доступна (сбой Cloudflare RPKI в 2022 вызвал флапинг маршрутов). Проблема курицы и яйца: частичное развёртывание помогает, но полная выгода требует почти универсального принятия. Tier-1 ISP в основном развертывают ROV; мелкие ISP отстают. Траектория ясна — RPKI в конечном счёте будет дефолтом — но «в конечном счёте» продолжается уже пять лет.
- 01Объясните почему существует RPKI и почему развёртывание было медленным.
- 02Как работает DNS amplification и почему BCP 38 предотвращает его?
- 03MTR-трасса показывает 0% потерь на хопе 7 (назначение) но 100% потерь на хопе 6. Что почти наверняка верно о хопе 6?
IP не имеет встроенной аутентификации source — любой хост может подделать любой source IP — и нет аутентификации маршрутов — любая AS может анонсировать любой префикс. Egress filtering BCP 38 блокирует spoofed пакеты у ~60% ISP, предотвращая amplification-атаки где поддельные UDP-пакеты атакующего отражают большие ответы на жертв. RPKI связывает префиксы с номерами AS через подписанные ROA; ROV-enabled роутеры дропают BGP-анонсы из неавторизованных AS. Развёртывание неполное, поэтому BGP-хайджеки случаются регулярно. DDoS-митигация объединяет anycast (распределяет атаку по POP’ам), upstream скрубберы (Cloudflare Magic Transit, AWS Shield) и BCP 38. Современные data plane роутеров используют ASIC или eBPF/XDP для line-rate форвардинга; баги проявляются как тихая потеря пакетов. Операционные инструменты: mtr для пути + потерь, tcpdump для захвата сырого трафика, BGP looking-glass для удалённых просмотров маршрутов, RIPE Atlas для глобальных измерений.