awesome-everything EN
↑ Обратно к восхождению

Сети и протоколы

IP-пакеты: трассируй, декодируй и почини path-MTU black hole

Суть Практический проект — захвати и декодируй реальные IP-packet, построй путь через traceroute, затем воспроизведи и почини PMTUD black hole, доказывая каждый шаг.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 240 min

Читать про TTL, longest-prefix match и PMTUD black hole — не то же, что видеть их в живом захвате. Собери небольшой лаб, декодируй байты, которые IP реально кладёт на провод, построй реальный путь, затем намеренно создай самый частый тихий сбой на уровне IP — path-MTU black hole — и почини его так, как сделал бы on-call инженер, с доказательством на каждом шаге.

Цель

Преврати ментальную модель юнита в воспроизводимую петлю диагностики: захвати и руками декодируй IP header, трассируй путь и прочитай его поведение TTL, воспроизведи PMTUD black hole в контролируемом туннеле и докажи фикс MSS-clamp до/после захватами.

Проект
0 из 7
Цель

Подними небольшой сетевой лаб (два host плюс туннель с низким MTU — WireGuard, network namespace или два контейнера), затем используй его, чтобы декодировать IP header из живого захвата, построить путь через traceroute, воспроизвести PMTUD black hole и починить его без опоры на ICMP — доказывая каждую находку из packet-захватов и вывода команд, а не по памяти.

Требования
Критерии приёмки
  • Побайтно размеченный декод реального IPv4 и реального IPv6 header, каждое поле привязано к захваченным байтам.
  • Вывод traceroute/mtr с письменным объяснением механики TTL и верным вердиктом минимум по одному hop со звёздочками/loss (скрытие ICMP против реальной потери на data plane).
  • Вывод `ip route get` для нескольких destination, показывающий, что longest-prefix match выбирает самый специфичный prefix, а default route — последний резерв.
  • Доказательство до/после PMTUD black hole: падающий захват большой передачи с повторными retransmit, затем проходящий захват после MSS clamping — с всё ещё заблокированным ICMP, доказывая независимость фикса от ICMP.
Senior-стретч
  • Добавь одностраничный on-call runbook: шаги триажа для 'мелкие запросы работают, большие зависают', диагностические команды и выбор MSS-clamp против PLPMTUD против разблокировки ICMP.
  • Изучи BGP и RPKI для prefix, который контролируешь, или публичного: через looking-glass посмотри его объявление с удалённой AS и проверь валидность RPKI (например через публичный валидатор), затем объясни, что состояние 'invalid' сделало бы с достижимостью.
  • Продемонстрируй ограничение NAT-traversal: помести один host за двойной NAT, покажи, что неинициированное входящее соединение падает, и что relay (стиль TURN) или IPv6 заставляет его работать.
  • Захвати и объясни сценарий spoofing/amplification в лабе (мелкий запрос, дающий крупный ответ) и опиши, как BCP 38 egress filtering в сети источника остановил бы его.
Итог

Это петля, которую ты будешь запускать в каждом реальном инциденте на уровне IP: сначала захвати и декодируй настоящие байты, построй путь через traceroute на основе TTL и прочитай его особенности верно, разреши forwarding через longest-prefix match, а когда появится ‘мелкое работает, большое зависает’ — распознай PMTUD black hole и почини его MSS clamping, а не ставкой на выживание ICMP. Сделав это раз в контролируемом лабе, ты превращаешь production-версию в мышечную память.

Продолжить восхождение ↑Трёхстороннее рукопожатие TCP
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.