MCPcopy Index your code
hub / github.com/belotserkovtsev/Ladon

github.com/belotserkovtsev/Ladon @v1.4.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.4.1 ↗ · + Follow
415 symbols 1,803 edges 54 files 253 documented · 61% updated 22d agov2.0.0-beta2 · 2026-06-16★ 2342 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Ladon

🩸 Ladon

Реактивный Anti-DPI движок

CI Release Go License: MIT

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.

Extension points exported contracts — how you extend this code

Prober (Interface)
Prober is the interface the engine uses to decide whether a domain is reachable. Implementations can probe locally (TCP/ [2 …
internal/prober/local.go

Core symbols most depended-on inside this repo

Close
called by 89
internal/storage/storage.go
Add
called by 47
internal/ipset/ipset.go
Info
called by 41
internal/ui/ui.go
UpsertDomain
called by 38
internal/storage/storage.go
fatal
called by 31
cmd/ladon/main.go
formatTime
called by 28
internal/storage/storage.go
Dim
called by 26
internal/ui/ui.go
Init
called by 25
internal/storage/storage.go

Shape

Function 263
Method 107
Struct 38
TypeAlias 6
Interface 1

Languages

Go100%

Modules by API surface

internal/storage/storage.go82 symbols
internal/ui/ui.go32 symbols
internal/doctor/doctor.go26 symbols
cmd/ladon/main.go22 symbols
internal/engine/engine.go20 symbols
internal/prober/prober.go14 symbols
internal/obs/obs.go12 symbols
internal/config/config.go10 symbols
internal/storage/storage_ext_test.go9 symbols
internal/prober/failures_test.go9 symbols
internal/prober/http_cutoff_test.go8 symbols
internal/ipset/ipset.go8 symbols

For agents

$ claude mcp add Ladon \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page