Ladon реактивно наблюдает DNS-трафик клиентов шлюза, четырёхстадийной пробой (DNS → TCP:443 → TLS handshake → HTTP read до 32KB) идентифицирует реальные DPI-блокировки и собирает IP в kernel ipset для tunnel-routing. За доли секунды.
curl -fsSL https://github.com/belotserkovtsev/ladon/releases/latest/download/install.sh \
| sudo bashСкрипт ставит бинарь, конфиги, ipset'ы и dnsmasq drop-in — нужен Debian/Ubuntu. Полный runbook + manual install + troubleshooting — в docs/install.md.
Классификация по сигнатуре отказа в живой сети, а не по готовому списку.
- Реактивная подписка — probe только на домены, которые клиенты сами запросили через DNS.
- Четырёхстадийный probe — DNS → TCP:443 → TLS handshake → HTTP read до 32KB.
- 20+ типизированных failure-кодов —
tls_alert,tls_garbage,tls_reset,tls13_block,mtls_required,tcp_refused,http_cutoff,http_451, ... - Server-active vs path-active — TLS alert / RST /
connection refusedотделены от timeout / cutoff / garbage. - 24h temporal accumulation — порог blocked-вердиктов в окне для постоянного списка.
- Семья как единица — при ≥N подтверждённых поддоменов eTLD+1 семья тянется в туннель целиком: её IP разворачиваются скопом, новые поддомены (
covered) больше не пробятся. - Опциональный exit-compare — второй observer из другой геолокации.
Полная методология — в docs/methodology.md.
| docs/install.md | install (auto + manual), troubleshooting |
| docs/configuration.md | YAML, CLI, manual lists, exit-compare, prune |
| docs/methodology.md | как Ladon работает |
| docs/extensions.md | bundled allow/deny-пресеты + формат своих списков |
| docs/probe-api.md | HTTP-контракт probe-сервера для exit-compare |
| probe-server/ladon/ | референсная Go-имплементация probe-сервера |
MIT — см. LICENSE.