234 lines
9.3 KiB
Markdown
234 lines
9.3 KiB
Markdown
# ProxyVM — Документация проекта
|
||
|
||
**Статус:** active
|
||
**Дата запуска:** 04.04.2026
|
||
**Обновлено:** 12.04.2026 (12:04 UTC)
|
||
|
||
---
|
||
|
||
## Цели проекта
|
||
|
||
1. **Задача #1: Homenet-VPN** — Wi-Fi сеть 192.168.4.0/24, TCP трафик через Xray VLESS Reality (прозрачный прокси). UDP/443 (QUIC) — напрямую. Статус: **ГОТОВО** ✅ (12.04.2026)
|
||
2. **Задача #2: HA Telegram** — Home Assistant отправляет Telegram-уведомления через VLESS. Остальной трафик HA — напрямую. Статус: **ГОТОВО** ✅
|
||
|
||
---
|
||
|
||
## Задача #2 — HA Telegram через VLESS (ЗАВЕРШЕНА ✅)
|
||
|
||
**Дата:** 10.04.2026
|
||
|
||
### Схема работы
|
||
|
||
```
|
||
Home Assistant (192.168.2.139, gateway = Keenetic 192.168.2.1)
|
||
│
|
||
│ SOCKS5 proxy (только telegram_bot интеграция)
|
||
▼
|
||
vpn-srv SOCKS5 (192.168.2.200:1080) ← Xray
|
||
│
|
||
│ VLESS Reality (xtls-rprx-vision)
|
||
▼
|
||
VLESS Server (43.245.226.231:53903)
|
||
│
|
||
▼
|
||
api.telegram.org
|
||
```
|
||
|
||
Важно: только `telegram_bot` интеграция ходит через прокси. Остальной трафик HA идёт напрямую через Keenetic.
|
||
|
||
### Конфигурация в HA
|
||
|
||
Интеграция `telegram_bot` настроена через UI (Настройки → Интеграции → Telegram Bot):
|
||
|
||
| Параметр | Значение |
|
||
|----------|----------|
|
||
| Platform | polling |
|
||
| API Key | `8251509944:AAGkRr_5ZIIQNd4XrlI5QI9DYZS8JUPhcxY` |
|
||
| Proxy URL | `socks5://192.168.2.200:1080` |
|
||
| API Endpoint | `https://api.telegram.org` |
|
||
| Allowed Chat ID | 126472752 (Слава) |
|
||
| Config Entry ID | `01KNVZDDM3ZNJS1WX309K7E1EN` |
|
||
|
||
### Бот
|
||
|
||
- **Username:** `@ha542_bot`
|
||
- **Bot ID:** 8251509944
|
||
- **Notify Entity:** `notify.telegram_bot_8251509944_126472752`
|
||
|
||
### Как отправить сообщение из HA
|
||
|
||
```yaml
|
||
service: notify.send_message
|
||
target:
|
||
entity_id: notify.telegram_bot_8251509944_126472752
|
||
data:
|
||
message: "Текст уведомления"
|
||
```
|
||
|
||
Или через Developer Tools → Services.
|
||
|
||
### Доступ к HAOS
|
||
|
||
- **URL:** `https://ha.homenet542.keenetic.pro`
|
||
- **IP в LAN:** 192.168.2.139
|
||
- **HAOS Version:** 17.1 | HA Core: 2026.3.4
|
||
- **HA Token:** `HA_TOKEN` в `~/.openclaw/.env`
|
||
- **SSH через vpn-srv:**
|
||
```bash
|
||
# Шаг 1: Скопировать ключ на vpn-srv
|
||
scp -i /home/node/.openclaw/ha_ssh_key -P 3322 /home/node/.openclaw/ha_ssh_key vpn@185.130.212.192:/tmp/ha_key
|
||
# Шаг 2: SSH к HA
|
||
ssh -i /home/node/.openclaw/ha_ssh_key -p 3322 vpn@185.130.212.192 \
|
||
"ssh -i /tmp/ha_key root@192.168.2.139"
|
||
```
|
||
|
||
---
|
||
|
||
## Задача #1 — Wi-Fi Homenet_vpn transparent proxy (ГОТОВО ✅ 12.04.2026)
|
||
|
||
**Цель:** Устройства в сети 192.168.4.0/24 (телевизор и др.) автоматически используют VLESS прокси без настройки на устройстве.
|
||
|
||
### Архитектура (финальная, рабочая)
|
||
|
||
```
|
||
Телевизор/телефон
|
||
│
|
||
│ Wi-Fi "Homenet_vpn" (SSID)
|
||
▼
|
||
Keenetic (DHCP: gateway=192.168.4.1, DNS=192.168.4.1)
|
||
│
|
||
│ VLAN/bridge → ens19
|
||
▼
|
||
vpn-srv (192.168.4.1 на ens19)
|
||
│
|
||
│ iptables nat REDIRECT → port 12345
|
||
▼
|
||
Xray dokodemo-door:12345 (tproxy=redirect, followRedirect=true)
|
||
│
|
||
│ VLESS Reality (xtls-rprx-vision)
|
||
▼
|
||
VLESS Server (43.245.226.231:53903)
|
||
│
|
||
▼
|
||
🌐 Internet
|
||
```
|
||
|
||
**Что работает:** DNS (UDP/53 → 1.1.1.1 напрямую), TCP → VLESS ✅, Telegram ✅, YouTube ✅
|
||
**UDP/443 (QUIC):** RETURN — не проксируется (браузер откатывается на TCP автоматически)
|
||
**MTU/MSS:** зажат до 1280 (TCPMSS clamp) — без этого Telegram/YouTube не работали
|
||
|
||
### Почему REDIRECT, а не TPROXY
|
||
|
||
Пробовали оба режима 12.04.2026:
|
||
- **TPROXY** (`iptables -t mangle TPROXY + ip rule fwmark`) — пакеты получали mark, но до Xray не доходили (проблема с routing table 100 + ядро переопределяло маршрут как `local`)
|
||
- **REDIRECT** (`iptables -t nat REDIRECT`) — работает сразу, проще, надёжнее
|
||
|
||
Итоговый выбор: **nat REDIRECT**. redsocks не используется (несовместим с xtls-rprx-vision).
|
||
|
||
---
|
||
|
||
## Инфраструктура vpn-srv
|
||
|
||
### Доступ
|
||
|
||
```bash
|
||
ssh -i /home/node/.openclaw/ha_ssh_key -o StrictHostKeyChecking=no -p 3322 vpn@185.130.212.192
|
||
# sudo через пайп:
|
||
echo meNt85doC | sudo -S <команда>
|
||
```
|
||
|
||
| Параметр | Значение |
|
||
|----------|----------|
|
||
| IP (LAN) | 192.168.2.200/24 (ens18) |
|
||
| IP (VPN subnet) | 192.168.4.1/24 (ens19) |
|
||
| OS | Ubuntu 22.04 |
|
||
| Sudo password | meNt85doC |
|
||
|
||
### Сервисы на vpn-srv
|
||
|
||
| Сервис | Порт | Статус |
|
||
|--------|------|--------|
|
||
| frpc | → relay:7000 | ✅ enabled |
|
||
| xray | 12345 (redirect), 1080 (socks5), 8888 (http) | ✅ enabled |
|
||
| redsocks | — | ❌ не используется (удалить) |
|
||
| netfilter-persistent | — | ✅ enabled |
|
||
|
||
### FRP туннель
|
||
|
||
- **relay:** `185.130.212.192:7000`, token: `frp_vpnsrv_2026_secret`
|
||
- **SSH через relay:** порт 3322 → vpn-srv:22
|
||
- **relay root SSH:** `root@185.130.212.192`, пароль `AR5f7_T-bA`
|
||
|
||
### VLESS сервер
|
||
|
||
```
|
||
vless://009625cc-588f-4cba-941f-ab8c960efa04@43.245.226.231:53903
|
||
?type=tcp&encryption=none&security=reality
|
||
&pbk=fgKnOtQWS5FErVT8E-roZgQOG6XQzDxB9-N5pRoAyBI
|
||
&fp=chrome&sni=yahoo.com&sid=d00e60e4&spx=%2F
|
||
&flow=xtls-rprx-vision
|
||
```
|
||
|
||
### Конфигурационные файлы
|
||
|
||
| Файл | Описание |
|
||
|------|----------|
|
||
| `/etc/xray/config.json` | Конфиг Xray — dokodemo redirect + SOCKS5 + HTTP + VLESS out ✅ |
|
||
| `/etc/iptables/rules.v4` | iptables — финальные правила (актуально 12.04.2026) ✅ |
|
||
| `/etc/sysctl.d/99-tproxy.conf` | rp_filter=0, ip_forward=1 ✅ |
|
||
| `/etc/frp/frpc.toml` | FRP клиент ✅ |
|
||
| `/etc/netplan/99-vpn-alias.yaml` | IP 192.168.4.1 на ens19 ✅ |
|
||
| `/etc/network/if-up.d/tproxy-routes` | ip rule для TPROXY (устарел, но безвреден) |
|
||
| `/home/vpn/transparent-proxy.sh` | Скрипт tproxy (устарел, не используется) |
|
||
|
||
### iptables (финальное рабочее состояние, сохранено в rules.v4)
|
||
|
||
```bash
|
||
# mangle: MSS clamp (критично для Telegram/YouTube)
|
||
-A FORWARD -s 192.168.4.0/24 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1280
|
||
-A POSTROUTING -s 192.168.4.0/24 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1280
|
||
|
||
# nat: UDP/443 (QUIC) не проксируем — xtls-rprx-vision не поддерживает UDP
|
||
-A PREROUTING -s 192.168.4.0/24 -p udp --dport 443 -j RETURN
|
||
# DNS напрямую к 1.1.1.1
|
||
-A PREROUTING -s 192.168.4.0/24 -p udp --dport 53 -j DNAT --to-destination 1.1.1.1
|
||
# TCP → Xray
|
||
-A PREROUTING -s 192.168.4.0/24 -p tcp -j REDIRECT --to-ports 12345
|
||
# MASQUERADE
|
||
-A POSTROUTING -s 192.168.4.0/24 -j MASQUERADE
|
||
-A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE
|
||
```
|
||
|
||
✅ **rules.v4 актуален** — сохранён 12.04.2026 12:04 UTC
|
||
|
||
---
|
||
|
||
## TODO
|
||
|
||
- [x] **Задача #1:** Transparent proxy работает ✅ (12.04.2026 — nat REDIRECT + MSS clamp)
|
||
- [x] redsocks не используется (несовместим с xtls-rprx-vision)
|
||
- [x] iptables сохранены в rules.v4, netfilter-persistent enabled ✅
|
||
- [x] sysctl rp_filter=0 + ip_forward=1 персистентны ✅
|
||
- [x] После рестарта всё поднимается автоматически ✅
|
||
- [x] `/homeassistant/custom_components/set_proxy/` — не найдено (already gone) ✅
|
||
- [x] Удалены устаревшие файлы с vpn-srv: transparent-proxy.sh, check.sh, install.sh, config.json, params.env ✅
|
||
|
||
---
|
||
|
||
## Хронология
|
||
|
||
| Дата | Событие |
|
||
|------|---------|
|
||
| 04.04.2026 | Создан сегмент Homenet_vpn в Keenetic, настроен Proxmox VLAN |
|
||
| 05.04.2026 | Установлен Xray, настроен tproxy |
|
||
| 10.04.2026 | Полная отладка: frpc, redsocks, netplan, iptables-persistent |
|
||
| 10.04.2026 | DNS ✅, ping ✅, UDP ✅ — TCP через tproxy ❌ (конфликт flow) |
|
||
| 12.04.2026 | Диагностика: найдена ошибка `"tproxy": "redirect"` в xray config |
|
||
| 12.04.2026 | **Фикс:** исправлено на `"tproxy": "tproxy"`, Xray перезапущен, TCP заработал ✅ |
|
||
| 12.04.2026 | TPROXY через mangle не заработал (routing table 100 / ядро) — переключились на nat REDIRECT |
|
||
| 12.04.2026 | Telegram/YouTube не работали — фикс: MSS clamp 1280 (splice broken pipe) |
|
||
| 12.04.2026 | **ПОЛНОСТЬЮ РАБОТАЕТ:** сайты ✅ Telegram ✅ YouTube ✅ — все конфиги сохранены |
|
||
| 10.04.2026 | **Задача #2 DONE:** HA Telegram через SOCKS5 proxy → VLESS ✅ |
|
||
|
||
_Хронология отсортирована по дате. Последнее обновление: 12.04.2026 12:08 UTC_
|