Skip to content

v2.0.0-beta2

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Jun 18:34

В beta2 переработан слой наблюдения за DNS

  • Движок теперь обрабатывает только адреса, которые успешно разрезолвились. Имена, которые не резолвятся (NXDOMAIN, локальные зоны), отбрасываются.
  • Inline-пробы берут адреса прямо из наблюдений, а не из кэша, поэтому конфликта между ними больше нет.
  • Починил баг, из-за которого локальные домены (.lan, .internal) вызывали рекурсивное засорение имён.
  • ladon doctor и ladon status сами находят базу данных, а в тексте ошибки указан путь к файлу.

Ladon x OPNsense

Ладон теперь работает на OPNsense как полноценный плагин с веб-интерфейсом. Устанавливается одной командой - один скрипт и на Linux, и на OPNsense.

curl -fsSL https://github.com/belotserkovtsev/Ladon/releases/download/v2.0.0-beta2/install.sh | sudo sh

Что меняется

  • Плагин ставится на OPNsense, а настройка и диагностика идут через веб-интерфейс.
  • Заблокированные домены попадают в таблицы pf под тремя алиасами фаервола: ladon_engine, ladon_manual, ladon_cidr.
  • Если модуль не собрался, DNS продолжает работать, а Apply показывает ошибку, а не прячет её.
  • Вкладка Diagnostics показывает, что работает сейчас, какие домены недавно туннелировались и общее состояние.
  • install.sh сам определяет платформу: Linux с dnsmasq/ipset/systemd либо OPNsense.

Обновление

  • На OPNsense: запустите install.sh, включите плагин, нажмите Apply, затем добавьте правило маршрутизации для ladon_engine, ladon_manual и ladon_cidr.
  • Модуль собирается прямо на устройстве, чтобы совпадать с установленной версией unbound.
  • Повторный запуск install.sh сохраняет конфиг и базу.
  • На Linux ничего не меняется — всё закрывает единый установщик.

Под капотом (для ревью)

  • Набор вынесен в абстракцию set-backend: ipset на Linux, таблицы pfctl на FreeBSD, выбор по GOOS.
  • Новый internal/dnssrc отвечает за источник DNS: лог dnsmasq на Linux, нативный unbound-dynlib через unix-сокет на FreeBSD. Движок к источнику не привязан.
  • doctor подсказывает фиксы под конкретную ОС, умеет -json для морды и проверяет, что dynlib собран и совпадает с текущим unbound.
  • dynlib (ladon-unbound.c) собирается на боксе под версию unbound (ABI), не поставляется готовым бинарём, поэтому порт переживает апдейты unbound.
  • На Enable + Apply плагин объявляет три pf-таблицы External-алиасами и инжектит dynlib в unbound; при неудачной сборке снимает include до рестарта, чтобы DNS не лёг.
  • release.yml собирает freebsd-amd64 бандл (движок + дерево плагина) и вшивает тег релиза в опубликованный install.sh, так что бета тянется только по явному тегу, а не по latest.