feat!: universal redesign — drop Minecraft stack, single-crate architecture
- remove Java plugins (velocity/paper), dashboard, all MC-specific code
(handshake, death_code, varint, hostname-HMAC); available in history pre-v0.2
- merge crates/* into one package with src/bin/{rampart,rampart-manager,rampart-cli}
- ProtocolHandler trait + registry (no implementations yet), universal PoW kept
- XDP: universal L3/L4 filter (xdp/core/) + pluggable hook API (xdp/hooks/),
fix IPv6 saddr bug; clang build verified
- docs: bilingual knowledge base (docs/kb/: attacks x4, defense-levels,
practice x3), rewrite README/architecture for universal concept
- TODO.md v4.0: <=300-line module limit, competitor benchmark section (ref/)
- deploy/CI/docs cleanup: no MC references, new binary names
cargo build/clippy(-D warnings)/test green (55 tests)
This commit is contained in:
parent
0b53ed720b
commit
15f474486a
179 changed files with 5044 additions and 11519 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# Стресс-тест Rampart на VDS (без Redis/Velocity/Paper)
|
||||
# Стресс-тест Rampart на VDS (без Redis/ClickHouse)
|
||||
|
||||
Проверяет edge ноду (слои 1–3) на реальном VDS. Не требует Redis, Velocity, Paper или ClickHouse — только `rampart-core` и stub-бэкенд (socat echo) в одном контейнере.
|
||||
Проверяет edge-ноду (слои 1–3) на реальном VDS. Не требует Redis, ClickHouse или внешних сервисов — только бинарь `rampart` и stub-бэкенд (socat echo) в одном контейнере.
|
||||
|
||||
## Топология
|
||||
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
│ docker bridge 172.30.0.0/24 │
|
||||
│ │
|
||||
│ rampart-edge (172.30.0.2) │
|
||||
│ ├─ rampart-core :25565 (bind 0.0.0.0)│
|
||||
│ ├─ rampart :25565 (bind 0.0.0.0)│
|
||||
│ ├─ socat echo :25566 (127.0.0.1) │ ← stub бэкенд
|
||||
│ └─ metrics :9090 │
|
||||
│ │
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
```bash
|
||||
# 1. На VDS: клонировать репозиторий, собрать бинарь
|
||||
git clone https://github.com/loki5512344/rampart.git && cd rampart
|
||||
cargo build --release --bin rampart-core
|
||||
cargo build --release --bin rampart
|
||||
|
||||
# 2. Запустить весь цикл (setup + 4 фазы)
|
||||
# run-stress.sh сам найдёт бинарь (target/release), а папку — по себе (переменная DIR опциональна)
|
||||
|
|
@ -40,21 +40,19 @@ bash run-stress.sh
|
|||
|
||||
| Фаза | Конфиг | Что делает | Проверяет |
|
||||
|------|--------|-----------|-----------|
|
||||
| A | `edge-high.toml` (лимиты 100k) | флуд валидными handshake с 100 IP | сырую пропускную способность L7 |
|
||||
| B | `edge-defense.toml` (дефолт 5 pps/IP) | та же атака | rate limit + reputation ban, доступность легитимных клиентов |
|
||||
| A | `edge-high.toml` (лимиты 100k) | TCP connect flood со 100 IP | сырую пропускную способность L4 |
|
||||
| B | `edge-defense.toml` (дефолтные лимиты) | та же атака | rate limit + reputation ban, доступность легитимных клиентов |
|
||||
| C | — | SYN flood hping3 (rand-source) | поведение без XDP (обрабатывает kernel) |
|
||||
| D | `edge-high.toml` | 300 keepalive-коннектов | удержание активных соединений |
|
||||
|
||||
Во время фаз A и B параллельно подключается `legit.py` (легитимные MC клиенты), меряющий RTT — доказывает, что реальные игроки проходят во время атаки.
|
||||
Во время фаз A и B параллельно подключается `legit.py` (generic TCP-клиенты), меряющий RTT — доказывает, что реальные клиенты проходят во время атаки.
|
||||
|
||||
## Атака маскируется под обычный трафик
|
||||
## Атаки
|
||||
|
||||
`flood.py` шлёт **валидные** Minecraft handshake (протокол 767, packet id 0x00) со случайными hostname из пула (`play.example.com`, `mc.example.com`, ...) и ждёт ответ бэкенда — на уровне L7 флуд неотличим от легитимного клиента. Различие даёт только per-IP rate limit и репутация.
|
||||
`flood.py` открывает чистые TCP-соединения (connect / slowloris / keepalive режимы) со случайных source IP. Никакой протокольной маскировки нет: на уровне L3/L4 флуд неотличим от легитимного трафика. Различие даёт только per-IP rate limit и репутация.
|
||||
|
||||
## Метрики для сбора
|
||||
|
||||
```bash
|
||||
curl -s http://127.0.0.1:9090/metrics | grep -E 'rampart_(connections_total|pow_challenges|attack_status)'
|
||||
curl -s http://127.0.0.1:9090/metrics | grep -E 'rampart_(connections_total|rate_limit_hits|attack_status)'
|
||||
```
|
||||
|
||||
См. [load-test-report.md](../../research/load-test-report.md) — результаты прогона на VDS (2026-08-04).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue