Files
wiki/tasks/ha/proxy-vm
2026-04-12 21:55:33 +03:00
..
2026-04-12 21:55:33 +03:00
2026-04-12 21:55:33 +03:00
2026-04-12 21:55:33 +03:00
2026-04-12 21:55:33 +03:00
2026-04-12 21:55:33 +03:00
2026-04-12 21:55:33 +03:00

Proxy VM — VLESS Reality шлюз

Ubuntu VM в Proxmox для обхода РКН:

  • HTTP прокси на порту 8888 — для Telegram бота в Home Assistant
  • SOCKS5 на порту 1080 — универсальный прокси
  • Прозрачный прокси (tproxy) — для телевизора без каких-либо настроек на нём

Протокол: VLESS + Reality (практически не определяется DPI).


Быстрый старт

1. Подготовить VM

Минимальные требования:

  • Ubuntu 22.04 LTS (или 24.04)
  • 1 vCPU, 512 MB RAM, 4 GB диск
  • Статический IP 192.168.2.200 (или настроить через DHCP-резервирование)

2. Скопировать файлы на VM

scp -r tasks/ha/proxy-vm/ user@192.168.2.200:~/proxy-vm/
ssh user@192.168.2.200
cd ~/proxy-vm

3. Заполнить параметры

cp params.env.example params.env
nano params.env   # заполни все значения

Обязательные параметры:

VLESS_SERVER_IP=<IP сервера>
VLESS_UUID=<UUID>
VLESS_PUBLIC_KEY=<публичный ключ Reality>
VLESS_SHORT_ID=<short ID>
VLESS_SNI=www.microsoft.com
TV_SUBNET=192.168.3.0/24

4. Установить Xray

sudo bash install.sh

Скрипт:

  • Установит Xray (последняя версия с GitHub)
  • Сгенерирует /etc/xray/config.json с твоими параметрами
  • Включит IP forwarding
  • Создаст и запустит systemd сервис xray

5. Настроить прозрачный прокси для TV

sudo bash transparent-proxy.sh

Скрипт:

  • Настроит iptables tproxy для TV подсети
  • Сохранит правила через iptables-persistent
  • Создаст systemd сервис для восстановления маршрутов при ребуте

6. Настроить Keenetic

Читай KEENETIC.md — создать отдельный SSID TV_VPN с шлюзом 192.168.2.200.

7. Настроить Home Assistant

Добавь в configuration.yaml содержимое ha-telegram-config.yaml:

telegram_bot:
  - platform: polling
    api_key: "ВАШ_ТОКЕН"
    proxy_url: http://192.168.2.200:8888
    allowed_chat_ids:
      - 126472752

Перезапусти HA.

8. Проверить

sudo bash check.sh

Структура файлов

proxy-vm/
├── TZ.md                    # Техническое задание
├── README.md                # Эта инструкция
├── params.env.example       # Шаблон параметров
├── install.sh               # Установка Xray + systemd
├── transparent-proxy.sh     # Настройка tproxy для TV
├── config.json              # Шаблон Xray конфига (справочник)
├── ha-telegram-config.yaml  # Фрагмент конфига для Home Assistant
├── check.sh                 # Проверка работоспособности
└── KEENETIC.md              # Инструкция для роутера Keenetic

Troubleshooting

Xray не запускается:

journalctl -u xray -n 50 --no-pager

Прокси не работает:

curl -x http://127.0.0.1:8888 https://api.telegram.org

Tproxy не перехватывает трафик:

iptables -t mangle -L TV_TPROXY -nv   # счётчики пакетов
ip rule show                            # правило для fwmark 1
ip route show table 100                 # маршрут local default

Обновить Xray:

sudo bash install.sh   # скрипт идемпотентен, установит новую версию

Как работает tproxy

Телевизор отправляет пакет (например, к youtube.com:443)
    │
    ▼ iptables mangle PREROUTING → TV_TPROXY
Пакет помечается fwmark=1 + tproxy redirect на порт 12345
    │
    ▼ ip rule: fwmark=1 → table 100 → local default via lo
Xray (dokodemo-door tproxy) получает пакет как будто он локальный
    │
    ▼ Xray routing: outbound vless-out
VLESS Reality тоннель → сервер → youtube.com

DNS трафик (UDP 53) из TV подсети перенаправляется на 1.1.1.1 через DNAT, но поскольку 1.1.1.1 не является private IP, он тоже пойдёт через VLESS.