Files
wikipedia/2026-10-19-telegram-vpn-tunelnye-marshruty.md
T

84 lines
3.0 KiB
Markdown

---
title: "Точечные маршруты Telegram API через AmneziaWG VPN"
date: 2026-10-19
tags: [telegram, vpn, amneziawg, routing, network, hermes]
---
# Telegram API через AmneziaWG VPN: точечные маршруты
**Проблема:** ISP блокирует Telegram API (ConnectTimeout на `api.telegram.org`). AmneziaWG VPN на `192.168.1.147` обходит DPI, но направлять **весь** трафик Hermes LXC (`192.168.1.44`) через VPN нельзя — провайдер LLM (polza.ai) перестаёт работать при полном туннелировании.
**Решение:** точечные статические маршруты — только подсети Telegram API через VPN-шлюз, остальной трафик напрямую через Keenetic.
## Сеть
| Устройство | IP | Роль |
|---|---|---|
| Keenetic Giga | 192.168.1.1 | Основной шлюз (default gateway) |
| Hermes LXC | 192.168.1.44 | Hermes Agent (TUI, gateway) |
| VPN-шлюз LXC | 192.168.1.147 | Docker + AmneziaWG (awg0) |
## Подсети Telegram API
```
149.154.160.0/20
91.108.56.0/22
91.108.4.0/22
91.108.8.0/22
```
## Команды
```bash
# Добавить маршруты (вручную)
ip route add 149.154.160.0/20 via 192.168.1.147
ip route add 91.108.56.0/22 via 192.168.1.147
ip route add 91.108.4.0/22 via 192.168.1.147
ip route add 91.108.8.0/22 via 192.168.1.147
# Проверить
ip route get 149.154.166.110
# → 149.154.166.110 via 192.168.1.147 dev eth0 src 192.168.1.44
curl -v --connect-timeout 10 https://api.telegram.org
# → TLS handshake (успех)
```
## Автоматическое восстановление после перезагрузки
Файл: `/etc/network/if-up.d/telegram-vpn-routes`
```bash
#!/bin/sh
ip route add 149.154.160.0/20 via 192.168.1.147 2>/dev/null
ip route add 91.108.56.0/22 via 192.168.1.147 2>/dev/null
ip route add 91.108.4.0/22 via 192.168.1.147 2>/dev/null
ip route add 91.108.8.0/22 via 192.168.1.147 2>/dev/null
```
```bash
chmod +x /etc/network/if-up.d/telegram-vpn-routes
```
## Проверка работы Telegram backend в Hermes
```bash
journalctl -u hermes-gateway --no-pager -n 20 | grep telegram
```
Успешное подключение:
```
[Telegram] Connected to Telegram (polling mode)
```
Если контейнер `amneziawg-client` на 1.147 упал:
```bash
ssh 192.168.1.147 "docker start amneziawg-client"
```
## Важно
- **Только Telegram** идёт через VPN. Polza.ai, web_search, и остальной трафик Hermes — напрямую через Keenetic.
- Если контейнер `amneziawg-client` на 1.147 не работает — Telegram backend не сможет подключиться (маршруты есть, но awg0 нет).
- При добавлении новых подсетей Telegram API обновить и скрипт `/etc/network/if-up.d/telegram-vpn-routes`.