Перейти к основному содержимому

Настройка 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-туннеля.

  1. Посмотрите внутренний IP вашего туннеля (обычно он указан в awg.conf в поле Address, например 10.8.0.2).
  2. Откройте конфиг прокси на сервере:
    sudo nano /opt/mtproto-proxy/config.toml
  3. В блоке [server] добавьте параметр middle_proxy_nat_ip:
    /opt/mtproto-proxy/config.toml
    [server]
    port = 443
    middle_proxy_nat_ip = "10.8.0.2" # Замените на ваш внутренний IP
  4. Перезапустите службу:
    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).


Благодарность авторам