- 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)
58 lines
3.2 KiB
Markdown
58 lines
3.2 KiB
Markdown
# Стресс-тест Rampart на VDS (без Redis/ClickHouse)
|
||
|
||
Проверяет edge-ноду (слои 1–3) на реальном VDS. Не требует Redis, ClickHouse или внешних сервисов — только бинарь `rampart` и stub-бэкенд (socat echo) в одном контейнере.
|
||
|
||
## Топология
|
||
|
||
```
|
||
┌─────────────── host VDS ───────────────┐
|
||
│ docker bridge 172.30.0.0/24 │
|
||
│ │
|
||
│ rampart-edge (172.30.0.2) │
|
||
│ ├─ rampart :25565 (bind 0.0.0.0)│
|
||
│ ├─ socat echo :25566 (127.0.0.1) │ ← stub бэкенд
|
||
│ └─ metrics :9090 │
|
||
│ │
|
||
│ rampart-attacker (172.30.0.3) │
|
||
│ └─ 100 source IP (172.30.0.101-200) │ ← flood.py / hping3
|
||
└────────────────────────────────────────┘
|
||
```
|
||
|
||
- Метрики на хосте: `curl http://127.0.0.1:9090/metrics`
|
||
- Edge слушает на хосте: `127.0.0.1:25565`
|
||
|
||
## Быстрый старт
|
||
|
||
```bash
|
||
# 1. На VDS: клонировать репозиторий, собрать бинарь
|
||
git clone https://github.com/loki5512344/rampart.git && cd rampart
|
||
cargo build --release --bin rampart
|
||
|
||
# 2. Запустить весь цикл (setup + 4 фазы)
|
||
# run-stress.sh сам найдёт бинарь (target/release), а папку — по себе (переменная DIR опциональна)
|
||
cd deploy/test/stress
|
||
bash run-stress.sh
|
||
```
|
||
|
||
> Для запуска из другого места задай `DIR` (по умолчанию — папка скрипта).
|
||
|
||
## Фазы
|
||
|
||
| Фаза | Конфиг | Что делает | Проверяет |
|
||
|------|--------|-----------|-----------|
|
||
| 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` (generic TCP-клиенты), меряющий RTT — доказывает, что реальные клиенты проходят во время атаки.
|
||
|
||
## Атаки
|
||
|
||
`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|rate_limit_hits|attack_status)'
|
||
```
|