# 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 ```bash scp -r tasks/ha/proxy-vm/ user@192.168.2.200:~/proxy-vm/ ssh user@192.168.2.200 cd ~/proxy-vm ``` ### 3. Заполнить параметры ```bash cp params.env.example params.env nano params.env # заполни все значения ``` Обязательные параметры: ```env VLESS_SERVER_IP= VLESS_UUID= VLESS_PUBLIC_KEY=<публичный ключ Reality> VLESS_SHORT_ID= VLESS_SNI=www.microsoft.com TV_SUBNET=192.168.3.0/24 ``` ### 4. Установить Xray ```bash sudo bash install.sh ``` Скрипт: - Установит Xray (последняя версия с GitHub) - Сгенерирует `/etc/xray/config.json` с твоими параметрами - Включит IP forwarding - Создаст и запустит systemd сервис `xray` ### 5. Настроить прозрачный прокси для TV ```bash sudo bash transparent-proxy.sh ``` Скрипт: - Настроит iptables tproxy для TV подсети - Сохранит правила через iptables-persistent - Создаст systemd сервис для восстановления маршрутов при ребуте ### 6. Настроить Keenetic Читай [`KEENETIC.md`](KEENETIC.md) — создать отдельный SSID `TV_VPN` с шлюзом `192.168.2.200`. ### 7. Настроить Home Assistant Добавь в `configuration.yaml` содержимое [`ha-telegram-config.yaml`](ha-telegram-config.yaml): ```yaml telegram_bot: - platform: polling api_key: "ВАШ_ТОКЕН" proxy_url: http://192.168.2.200:8888 allowed_chat_ids: - 126472752 ``` Перезапусти HA. ### 8. Проверить ```bash 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 не запускается:** ```bash journalctl -u xray -n 50 --no-pager ``` **Прокси не работает:** ```bash curl -x http://127.0.0.1:8888 https://api.telegram.org ``` **Tproxy не перехватывает трафик:** ```bash iptables -t mangle -L TV_TPROXY -nv # счётчики пакетов ip rule show # правило для fwmark 1 ip route show table 100 # маршрут local default ``` **Обновить Xray:** ```bash 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.