main
vds haproxy + wireguard + ipvs
L4 балансировщик и шлюз для распределения tcp/udp сервисов во внутреннюю сеть через wireguard с использованием haproxy, ipvs и nftables.
Архитектура
- Вход: публичные порты vds
- tcp → haproxy
- udp / спец. tcp → nftables (
fwmark) →ipvs - Транспорт → wireguard (
wg0) - NAT → netmap (1:1 подсети)
Компоненты
haproxy (tcp)
Работает в mode tcp, проксирует с поддержкой proxy-protocol:
| Порт | Сервис | Backend |
|---|---|---|
| 80 | HTTP | 10.x.102.3:81 |
| 443 | HTTPS | 10.x.102.3:444 |
| 22 | Gitea SSH | 10.x.103.3:22 |
| 24444 | MCSManager | 10.x.103.3:24445 |
xmpp (prosody)
Прямой tcp проброс:
| Порт | Сервис |
|---|---|
| 5222, 5223 | client |
| 5269 | server |
| 5000 | proxy65 |
| 5270 | components |
| 5280 | BOSH |
wireguard
- Интерфейс:
wg0 - Подсеть:
10.x.200.0/24
Функции:
- транспорт между узлами
- запуск
nftablesиipvs - включение
ip_forwardиconntrack
ipvs (fwmark)
Балансировка по меткам:
| Марка | Сервис | Backend |
|---|---|---|
| 10 | coturn | 10.x.103.10 |
| 20 | minecraft | 10.x.104.3 |
| 30 | steam/valheim | 10.x.104.4 |
| 40 | rustdesk | 10.x.200.1 |
Алгоритм: rr
nftables
prerouting
Классификация трафика:
- wireguard (51820) → accept
- coturn → mark 10
- minecraft → mark 20
- steam / valheim → mark 30
- rustdesk → mark 40
- nat (postrouting)
1:1 netmap через wg0:
10.x.0.0/24 → 10.x.100.0/24
10.x.1.0/24 → 10.x.101.0/24
10.x.2.0/24 → 10.x.102.0/24
10.x.3.0/24 → 10.x.103.0/24
10.x.4.0/24 → 10.x.104.0/24
10.x.5.0/24 → 10.x.105.0/24
192.x.x.0/24 → 10.x.200.0/24
Поток трафика
- Клиент → vds
- haproxy (tcp) или nftables (udp/marked tcp)
- Проставление
fwmark - ipvs → выбор backend
- SNAT (netmap) → wireguard
- Доставка в целевую подсеть
Цикл жизни
PostUp
- загрузка модулей:
ip_vs,nf_conntrack - включение
ip_forward - применение
nftables - настройка
ipvs(fwmark rules)
PostDown
- очистка
ipvs - удаление таблицы
nftables
Особенности
- Используется
proxy-protocolдля реального ip - udp балансируется через
ipvs - Сегментация через netmap (жёсткое соответствие подсетей)
- Все сервисы заходят через одну точку (vds)
Зависимости
apt update
apt install ipvsadm ufw haproxy wireguard-tools