Files
networking-proxy/references/ssh-tunnel-telegram-gateway.md
2026-09-06 13:51:04 +00:00

3.6 KiB
Raw Permalink Blame History

SSH Tunnel: Telegram API via WireGuard + SOCKS5

Контекст

Telegram Bot API заблокирован на сервере (Россия, DPI). Решение: SSH SOCKS5 туннель через VPS01 по WireGuard.

Схема подключения

bigbox (este сервер)
  ├── wg0 — 10.8.0.2/24
  ├── VPS01 — 10.8.0.1 (WireGuard IP),  5.129.217.146 (внешний)
  ├── Остальные: VPS02 (87.242.100.206), VPS03 (80.209.240.167)
  └── SSH SOCKS5: 127.0.0.1:1080
        через root@10.8.0.1 (WireGuard адрес VPS01)

Текущая конфигурация (2026-07-15)

Режим: SOCKS5 (-D). Ранее был TCP forward (-L 127.0.0.1:8444:api.telegram.org:443), переключено на SOCKS5 для поддержки TELEGRAM_PROXY и удалённого DNS.

WireGuard

  • Интерфейс: wg0
  • Адрес bigbox: 10.8.0.2/24
  • Маска: /24
  • Сервис: wg-quick@wg0.service — автостарт после загрузки
  • Jump host: VPS01 (5.129.217.146, root, key timewebVPS)

SSH SOCKS5 туннель

ExecStart=/usr/bin/ssh \
    -i /mnt/yandex-disk/.ssh_box/timewebVPS \
    -D 127.0.0.1:1080 \
    -N \
    -o ServerAliveInterval=30 \
    -o ServerAliveCountMax=3 \
    -o ExitOnForwardFailure=yes \
    root@10.8.0.1
  • Сервис: telegram-tunnel.service
  • Файл: /etc/systemd/system/telegram-tunnel.service
  • Ключ: /mnt/yandex-disk/.ssh_box/timewebVPS (совпадает с ~/.ssh/timewebVPS, хранится на Yandex.Disk davfs)
  • Автостарт: включён (systemctl enable telegram-tunnel.service)

Hermes Gateway

  • Сервис: hermes-gateway.service
  • В .env (~/.hermes/.env):
    • TELEGRAM_BOT_TOKEN=8620910071:...
    • TELEGRAM_PROXY=socks5://127.0.0.1:1080
  • Gateway читает TELEGRAM_PROXY через resolve_proxy_url() и использует socks5
  • В venv должен быть aiohttp-socks (установлен)
  • DNS резолвится на VPS01 (обход блокировки DNS)

SSH конфиг (~/.ssh/config)

Host vps01
    Hostname 5.129.217.146
    User root
    IdentityFile ~/.ssh/timewebVPS
    IdentitiesOnly yes
    ForwardAgent yes

Проверка после перезагрузки

# 1. WireGuard
ip addr show wg0

# 2. SOCKS5 туннель
systemctl status telegram-tunnel
ss -tlnp | grep 1080

# 3. Gateway
systemctl status hermes-gateway

# 4. Telegram API доступен через SOCKS5
TOKEN=$(grep -a TELEGRAM_BOT_TOKEN ~/.hermes/.env | grep -v "^#" | cut -d= -f2-)
curl -s --socks5 127.0.0.1:1080 "https://api.telegram.org/bot${TOKEN}/getMe"

# 5. IP выходит через VPS01
curl -s --socks5 127.0.0.1:1080 https://httpbin.org/ip

# 6. Логи туннеля
journalctl -u telegram-tunnel --since "1 hour ago"

Порядок старта после перезагрузки

  1. Сеть → network-online.target
  2. Yandex.Disk davfs → /etc/fstab (ключи на FUSE)
  3. WireGuard → wg-quick@wg0.service
  4. SSH SOCKS5 туннель → telegram-tunnel.service
  5. Hermes Gateway → hermes-gateway.service

Заметка в Obsidian

Создана: mozg → homelab/hermes/Gateway Telegram tunnel.md

История изменений

  • 2026-07-15: Переход с TCP forward (-L 8444) на SOCKS5 (-D 1080)
    • Причина: поддержка TELEGRAM_PROXY, удалённый DNS, единый порт для нескольких сервисов
    • Добавлено: TELEGRAM_PROXY=socks5://127.0.0.1:1080 в .env