Как настроить личный прокси-сервер для WhatsApp на AWS

Сегодня, 5 января 2023 года, WhatsApp объявил о запуске поддержки прокси для пользователей WhatsApp по всему миру (https://blog.whatsapp.com/connecting-to-whatsapp-by-proxy). Эта функция помогает людям подключаться через это приложение, особенно в тех областях, где приложение фильтруется правительствами или другими органами.

Чтобы помочь людям использовать эту функцию, я лично (не связанный с разработчиками Meta или WhatsApp) попытался создать прокси-сервер WhatsApp в облаке AWS.

ПРИМЕЧАНИЕ. Предполагается, что эта статья представляет собой простое руководство, а не комплексное решение. Для обхода системы фильтрации в разных странах может потребоваться некоторая модификация.

Поскольку мы собираемся использовать облачные сервисы AWS для настройки нашего сервера, нам нужна учетная запись AWS. AWS предлагает бесплатные пробные версии/уровни для новых пользователей, и вы можете воспользоваться этой возможностью.

ПРИМЕЧАНИЕ. Если вы не имеете права на услуги уровня бесплатного пользования, вам следует ожидать, что настройка сервера с использованием этого руководства будет стоить вам денег. Вы несете ответственность за понимание затрат, связанных с настройкой прокси-сервера с использованием этого подхода.

На Medium и в Интернете есть много статей о том, как зарегистрировать учетную запись AWS. В этом руководстве предполагается, что у вас уже есть учетная запись AWS и вы понимаете затраты, связанные с услугами, используемыми в этом руководстве.

ПРИМЕЧАНИЕ. Эта инструкция написана для систем на базе Linux и Unix. Если вы работаете в системе Windows, необходимы некоторые изменения. Я попытался кратко упомянуть о них.

Создание VPC

Войдите в свою консоль AWS: https://aws.amazon.com/

Во-первых, нам нужно настроить VPC или виртуальную частную сеть для нашего прокси-сервера. В консоли AWS (https://console.aws.amazon.com/) найдите VPC в строке поиска (вверху страницы) и нажмите VPC.

На панели инструментов VPC нажмите кнопку Создать VPC.

Здесь мы создаем элементарную сеть VPC с 1 зоной доступности и 1 общедоступной подсетью. На следующем снимке экрана показаны настройки VPC для нашего простого VPC.

Нажмите Создать VPC. Через несколько секунд. Ваш VPC готов. Теперь пришло время создать экземпляр вашего сервера EC2.

Запуск экземпляра EC2

Вернитесь в свою консоль AWS (https://console.aws.amazon.com/). Найдите EC2.

Во-первых, вам нужна пара ключей. На панели инструментов EC2 в меню слева в разделе Сеть и безопасность нажмите Пары ключей.

На новой странице дайте имя своей паре ключей и нажмите Создать пару ключей.

ПРИМЕЧАНИЕ. Если вы используете ОС Windows, вам может потребоваться выбрать .ppk в качестве формата ключа. Позже вы можете использовать свой ключ ppk через PuTTY для входа на свой компьютер AWS EC2.

Новый файл .ppk (Proxy-Server-A-Key.pem) должен автоматически загрузиться на ваш компьютер. Храните этот ключ в надежном месте и никому его не сообщайте. На своем компьютере я создал папку с именем «aws_proxy_server» и сохранил в ней файл. Нам понадобится этот ключ для доступа к нашей машине EC2 позже.

ПРИМЕЧАНИЕ. Никогда и никому не сообщайте свою пару ключей. Это ключ к вашему серверу VPC, и важно хранить его в надежном и безопасном месте.

Теперь, когда у вас есть новая пара ключей, давайте запустим новый экземпляр EC2.

В меню слева нажмите Панель управления EC2. Затем нажмите кнопку Запустить экземпляр. Используйте следующие значения для настройки EC2.

Вы можете выбрать более мощный тип инстанса, но помните, что другие типы не подходят для уровня бесплатного пользования (если вы все еще имеете право на использование уровня бесплатного пользования).

В разделе «Пара ключей» не забудьте выбрать только что созданную пару ключей.

Для настроек сети нам нужно отредактировать его. Замените параметр VPC на созданный вами VPC. Не забудьте также выбрать созданную общедоступную подсеть для параметра Subnet. Здесь показаны другие сетевые настройки.

Позже нам нужно отредактировать входящие правила нашей группы безопасности, чтобы принимать больше портов.

Сейчас нажмите Запустить экземпляр и подождите несколько минут, пока ваш новый компьютер EC2 не запустится.

На данный момент единственным открытым портом в нашей системе EC2 является порт SSH (порт 22). Нам нужно открыть несколько других портов, чтобы пользователи могли подключаться к нашему прокси-серверу и использовать его.

В меню слева на странице EC2 в разделе «Сеть и безопасность» нажмите Группы безопасности.

Найдите «Proxy-Server-A-sg» и нажмите на него. На вкладке Правила для входящего трафика нажмите кнопку Изменить правила для входящего трафика. Добавьте следующие правила в правила для входящего трафика группы безопасности.

Сохраняет правила.

Установка прокси-сервера WhatsApp на EC2

На данный момент мы запустили систему EC2, которая выступает в качестве нашего прокси-сервера. Но нам нужно установить необходимое программное обеспечение и пакеты, чтобы полностью развернуть наш прокси-сервис WhatsApp. В основном я следую инструкциям на официальной странице WhatsApp GitHub, https://github.com/WhatsApp/proxy/, с некоторыми особенностями, касающимися системы AWS Linux.

Во-первых, нам нужно подключиться к нашей машине EC2 через ssh. В меню слева на странице панели инструментов EC2 выберите Экземпляры. Установите флажок рядом с вашим экземпляром (я назвал его Proxy-Server-A). В нижней части страницы запишите свой общедоступный IPv4-адрес EC2. Он понадобится вам позже, когда вы попытаетесь войти на свой прокси-сервер с телефона.

Затем в верхней части страницы нажмите кнопку «Подключиться». Выберите вкладку SSH-клиент. Здесь вы видите подробные инструкции о том, как подключиться к вашей новой машине EC2.

ПРИМЕЧАНИЕ. Как уже упоминалось, это руководство написано для систем на базе Unix, таких как Linux. Если вы используете ОС Windows, вам может понадобиться использовать такие приложения, как PuTTY, для подключения к вашему серверу EC2. Было опубликовано множество статей и руководств о том, как подключиться к машине EC2 через PuTTY или подобное программное обеспечение.

Откройте терминал на локальном компьютере и перейдите в папку, в которой вы сохранили свою пару ключей. Во-первых, вам нужно убедиться, что ваш ключ не доступен для публичного просмотра.

chmod 400 Proxy-Server-Key-Pair.pem

Теперь вы сможете подключиться к своей машине EC2 через:

ssh -i "Proxy-Server-A-Key.pem" ec2-user@YOUR-EC2-ADDRESS

Обратите внимание, что в приведенной выше команде вы должны заменить @YOUR-EC2-ADDRESS своим адресом AWS EC2 (опять же, вы можете найти точную команду bash в инструкции по подключению).

На этом этапе вы успешно подключились к своей машине EC2 и можете запускать на ней команды bash.

Во-первых, давайте переключимся в режим суперпользователя.

sudo su

Затем нам нужно установить git.

yum update -y

yum install git -y

Теперь нам нужно клонировать репозиторий WhatsApp Proxy с GitHub.

git clone https://github.com/WhatsApp/proxy.git

Он создает папку с именем «proxy» в вашем текущем каталоге. Например, для меня созданная папка находится в /home/ec2-user/proxy.

Теперь нам нужно установить Docker на нашу машину EC2.

yum install docker

Отвечайте «да» (просто «у») на все вопросы. После завершения установки проверьте правильность установки Docker с помощью:

docker version

Он должен вернуть некоторую информацию об установленной версии Docker. У меня установлена ​​версия 20.10.17.

Нам также нужно установить Docker Compose. Вот командные строки, которые делают это за нас.

# Download the pkg
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/bin/docker-compose
# Enable execution of the script
sudo chmod +x /usr/bin/docker-compose

Давайте также проверим, правильно ли установлен Docker Compose.

docker-compose version

Он должен вернуть некоторую информацию об установленной версии Docker Compose. У меня установлена ​​версия v2.15.0.

Теперь нам нужно запустить демон Docker.

service docker start

Теперь мы почти готовы запустить наш прокси-контейнер WhatsApp. Давайте сначала проверим это.

docker-compose -f /home/ec2-user/proxy/proxy/ops/docker-compose.yml up

Он должен создать образ контейнера и запустить контейнер в Docker. Если все прошло успешно, вы можете остановить его, нажав CTRL+C.

Теперь мы можем запустить контейнер как службу (добавив флаг -d).

docker-compose -f /home/ec2-user/proxy/proxy/ops/docker-compose.yml up -d

Он должен показывать:

[+] Running 1/1
  Container whatsapp_proxy Started

Тестирование прокси-сервера в WhatsApp

Теперь пришло время подключиться к прокси-серверу WhatsApp из приложения WhatsApp.

Откройте WhatsApp на своем телефоне. Перейдите в Настройки ›› Хранилище и данные ›› Прокси

Здесь включите «Использовать прокси» и введите свой общедоступный IPv4-адрес EC2 (вы записали его на одном из предыдущих шагов) и используйте порт 5222. Например, мой выглядит так:

200.21.65.130:5222

Нажмите «Сохранить», и если все сделано правильно, вы должны увидеть зеленую надпись «Подключено» на своей странице.

Если порт 5222 не работает, попробуйте порты 80, 8080, 443, 8222 или 8443.

Закройте и наслаждайтесь своим личным прокси WhatsApp.

Напоминание

Машина EC2 может иметь связанные с этим расходы. Пожалуйста, не забудьте отключить или остановить вашу машину EC2, если вы не собираетесь ее больше использовать.

Опять же, в зависимости от различных систем фильтрации может работать один, несколько или ни один из этих портов.