v2.0.0-beta2
Pre-release
Pre-release
В 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.