GSoC 2026: студент привёл в порядок IKE-демон racoon2 в NetBSD
Демон racoon2 — это набор служб для обмена и установки параметров безопасности IPsec: демон согласования ключей IKEv1/IKEv2, демон управления политиками безопасности и демон обмена ключами на основе Kerberos. Проект модернизируют, чтобы он мог служить надёжным сервером L2TP/IPsec или IKEv2 VPN на NetBSD и Linux для встроенных клиентов Windows, iOS и Android. В рамках Google Summer of Code 2026 Артём Белан под руководством Кристоса Зуласа прошёлся по списку TODO и закрыл почти все его пункты. Все изменения влиты в ветку gsoc2026 через пулл-реквесты #13–#39 с июня по сентябрь 2026 года.
Прохождение NAT по букве RFC
Главной частью работы стала правильная обработка NAT. Демон научился фрагментировать и собирать крупные IKE-сообщения по RFC 7383 для обеих версий протокола: раньше пересобранные пакеты могли распознаваться неверно, а слишком большие — ронять демон; теперь негабаритные пакеты отклоняются с внятной записью в журнале. Появилась корректная работа с полезной нагрузкой NAT-OA в Quick Mode IKEv1 (RFC 3947): исходные адреса клиента передаются ядру, что позволяет пересчитывать контрольные суммы инкрементально, а не по всему пакету.
Сердцем проекта стала подстановка адресов в транспортном режиме NAT-T (RFC 7296, §2.23.1). Прежде, когда на пути стоял NAT, предложенные пиром адреса не совпадали с настроенными селекторами, и администраторам приходилось прописывать лишние "костыльные" селекторы. Теперь наблюдаемые на проводе адреса подставляются в согласуемые селекторы автоматически — обходные настройки больше не нужны.
IPv6, макросы и согласование
Поддержка IPv6 существовала годами, но работала криво: даже при настройке "все адреса" демон вёл себя так, будто существует только IPv4. Ошибки сопоставления адресов и обработки длины префикса исправлены, и IPv6 теперь включён по умолчанию — без переключателей в конфигурации. Путаницу адресных макросов-шаблонов свели к единому понятию подстановочного знака, работающему одинаково везде и выдающему понятные диагностические сообщения. Политики транспортного и туннельного режимов теперь строятся из настроенных адресов SA, а согласуемое предложение — из того, что реально прислал пир, что улучшает совместимость со штатными клиентами Windows, iOS и Android.
Тесты для старого кода
У проекта вообще не было автоматических тестов — каждое изменение проверялось чтением кода и запуском демона вручную. Теперь в сборку встроен небольшой самодостаточный тестовый фреймворк без внешних зависимостей, тесты прогоняются под санитайзерами. Четыре новые программы покрывают именно ту логику, что ввёл проект; весь набор из пяти тестов проходит чисто, без сбоев.
Из исходного списка TODO нерешённым остался лишь один пункт — утилита racoon2ctl для аккуратного подключения и отключения с отправкой delete-уведомлений пиру. Также требуется сквозное тестирование IPv6 в реальных сценариях и расширение тестов на остальные части демона.
Источник: Lobsters
Комментарии
Войдите, чтобы комментировать.