Настройка mtproto.zig через туннель AmneziaWG
Если ваш сервер находится в регионе с жесткой интернет-цензурой, провайдеры могут блокировать сам протокол MTProto с помощью ТСПУ (технических средств противодействия угрозам). В таком случае обычный прокси перестанет работать, даже если IP-адрес сервера не заблокирован.
Завернуть исходящий трафик прокси в зашифрованный VPN-туннель AmneziaWG (форк WireGuard с защитой от обнаружения DPI).
🧠 Как это работает (Безопасная архитектура)
Главный страх при установке VPN на сервер — потерять доступ по SSH. Автор mtproto.zig решил эту проблему: туннель создается внутри изолированного сетевого пространства имен (network namespace).
Клиент ──→ VPS:443 ──→ [iptables DNAT] ──→ Изолированная зона (tg_proxy_ns)
(Ваш ПК) (Основной сервер) │
├── mtproto-proxy
└── awg0 (Туннель Amnezia) ──→ Telegram DC
Основной сервер продолжает работать как обычно (ваш SSH в безопасности), а прокси "живет" в виртуальной комнате, из которой трафик выходит только через VPN-туннель.
🛠 Шаг 1: Подготовка конфигурации AmneziaWG
Вам понадобится готовый клиентский файл конфигурации AmneziaWG (обычно awg.conf).
Его можно сгенерировать в приложении AmneziaVPN или запросить у вашего VPN-провайдера.
Убедитесь, что внутри файла есть блоки [Interface] (с вашим PrivateKey и параметрами обфускации Jc, Jmin, Jmax) и [Peer] (с IP-адресом Endpoint).
🚀 Шаг 2: Автоматическое развертывание
Скрипты автора делают всю настройку автоматически. Все команды ниже выполняются с вашего домашнего компьютера (не с сервера!).
Вариант А: Развертывание с нуля
Если вы только купили сервер и хотите сразу поставить прокси в туннеле:
git clone https://github.com/sleep3r/mtproto.zig.git
cd mtproto.zig
make deploy-tunnel SERVER=<IP_ВАШЕГО_СЕРВЕРА> AWG_CONF=<ПУТЬ_К_awg.conf> PASSWORD=<ПАРОЛЬ_ОТ_ROOT>
Скрипт сам зайдет на сервер, установит драйверы AmneziaWG, создаст сетевое пространство tg_proxy_ns, настроит маршрутизацию и запустит прокси.
Вариант Б: Добавление туннеля к рабочему прокси
Если сервер уже настроен, и вы просто хотите "надеть" на него VPN:
make deploy-tunnel-only SERVER=<IP_ВАШЕГО_СЕРВЕРА> AWG_CONF=<ПУТЬ_К_awg.conf>
⚙️ Шаг 3: Настройка конфига (Для версии 0.10.0+)
С версии 0.10.0 появилась умная логика работы с NAT. Чтобы рукопожатия с серверами Telegram проходили без ошибок, необходимо явно указать внутренний IP-адрес VPN-туннеля.
- Посмотрите внутренний IP вашего туннеля (обычно он указан в
awg.confв полеAddress, например10.8.0.2). - Откройте конфиг прокси на сервере:
sudo nano /opt/mtproto-proxy/config.toml - В блоке
[server]добавьте параметрmiddle_proxy_nat_ip:/opt/mtproto-proxy/config.toml[server]
port = 443
middle_proxy_nat_ip = "10.8.0.2" # Замените на ваш внутренний IP - Перезапустите службу:
sudo systemctl restart mtproto-proxy
🔍 Шаг 4: Проверка работоспособности
Чтобы убедиться, что трафик реально идет через туннель, отправьте тестовый запрос от имени изолированной зоны:
sudo ip netns exec tg_proxy_ns curl -s ifconfig.me
В ответ вы должны увидеть IP-адрес вашего VPN-сервера (AmneziaWG), а не родной IP вашего VPS.
Установка amneziawg-tools требует компиляции модуля ядра (DKMS). Убедитесь, что на вашем сервере не менее 1 ГБ оперативной памяти, иначе процесс установки может зависнуть из-за нехватки ОЗУ (OOM Killer).
- Автор репозитория mtproto.zig - sleep3r