Хабрахабр

Бесплатный VPN сервис Wireguard на AWS

Для чего?

В том числе с технической информацией.
Таким образом, становиться невозможно полноценно пользоваться интернетом и нарушается фундаментальное право на свободу слова, закрепленное во Всеобщей декларации прав человека. С ростом цензурирования интернета авторитарными режимами, блокируются все большее количество полезных интернет ресурсов и сайтов.

Статья 19
Каждый человек имеет право на свободу убеждений и на свободное выражение их; это право включает свободу беспрепятственно придерживаться своих убеждений и свободу искать, получать и распространять информацию и идеи любыми средствами и независимо от государственных границ

04 LTS. В данном руководстве мы за 6 этапов развернем свой собственный бесплатный* VPN сервис на базе технологии Wireguard, в облачной инфраструктуре Amazon Web Services (AWS), с помощью бесплатного аккаунта (на 12 месяцев), на инстансе (виртуальной машине) под управлением Ubuntu Server 18.

Единственное что требуется — это усидчивость в повторении описанных ниже шагов. Я старался сделать это пошаговое руководство как можно более дружественным к людям, далеким от ИТ.

Примечание

Этапы

  1. Регистрация бесплатного аккаунта AWS
  2. Создание инстанса AWS
  3. Подключение к инстансу AWS
  4. Конфигурирование Wireguard
  5. Конфигурирование VPN клиентов
  6. Проверка корректности установки VPN

Полезные ссылки

Рекомендую воспользоваться виртуальными картами которые бесплатно предоставляет Яндекс.Деньги или Qiwi кошелек. Для регистрации бесплатного аккунта AWS требуется реальный номер телефона и платежеспособная кредитная карта Visa или Mastercard. Для проверки валидности карты, при регистрации списывается 1$ который в дальнейшем возвращается.

1.1. Открытие консоли управления AWS

Необходимо открыть браузер и перейти по адресу: https://aws.amazon.com/ru/
Нажать на кнопку "Регистрация"

Стартовая страница AWS Amazon

1.2. Заполнение персональных данных

Заполнить данные и нажать на кнопку "Продолжить"

Регистрации аккаунта AWS Amazon

1.3. Заполнение контактных данных

Заполнить контактные сведения.

Указание контактных данных при регистрации аккаунта AWS Amazon

1.4. Указание платежной информации.

Номер карты, срок окончания и имя держателя карты.

Указание платежных данных при регистрации аккаунта AWS Amazon

1.5. Подтверждение аккаунта

На экране компьютера отображается 4х значный код, и на указанный телефон поступает звонок из Amazon. На этом этапе идет подтверждение номера телефона и непосредственное списание 1$ с платежной карты. Во время звонка необходимо набрать код, указанный на экране.

Подтверждение аккаунта AWS Amazon

1.6. Выбор тарифного плана.

Выбираем — Базовый план (бесплатный)

Выбор тарифного плана AWS Amazon

1.7. Вход в консоль управления

Вход в консоль управления AWS Amazon

1.8. Выбор расположения дата-центра

Консоль управления AWS Amazon

1.8.1. Тестирование скорости

Прежде чем выбирать датацентр, рекомендуется протестировать через https://speedtest.net скорость доступа к ближайшим датацентрам, в моей локации такие результаты:

Поэтому я выбрал его для дальнейшей настройки. Лучшие результаты по скорости показывает датацентр в Лондоне.

2.1 Создание виртуальной машины

2.1.1. Выбор типа инстанса

По умолчанию выбран инстанс t2.micro, он нам и нужен, просто нажимаем кнопку Next: Configure Instance Detalis

1

2.1.2. Настройка параметров инстанса

В дальнейшем мы подключим к нашему инстансу постоянный публичный IP, поэтму на этом этапе мы отключаем автоназначение публичного IP, и нажимаем кнопку Next: Add Storage

2

2.1.3. Подключение хранилища

Для наших целей достаточно 16 гигабайт, и нажимаем кнопку Next: Add Tags Указываем размер "жесткого диска".

3

2.1.4. Настройка тегов

В данном случае эта фукнциональность излишняя, сразу нажимаем кнопку Next: Configure Security Gorup Если бы мы создавали несколько инстансов, то их можно было бы группировать по тегам, для облегчения администрирования.

4

2.1.5. Открытие портов

Набор открытых портов называется "Группа безопасности" (Security Group). На этом этапе мы настраиваем брандмауэр, открывая нужные порты. В данном случае я выбрал номер порта 54321. Мы должны создать новую группу безопасности, дать ей имя, описание, добавить порт UDP (Custom UDP Rule), в поле Rort Range необходимо назначить номер порта, из диапазона динамических портов 49152—65535.

5

После заполнения необходимых данных, нажимаем на кнопку Review and Launch

2.1.6. Обзор всех настроек

На данной странице идет обзор всех настроек нашего инстанса, проверяем все ли настройки в порядке, и нажимаем кнопку Launch

6

2.1.7. Создание ключей доступа

Мы выбираем опцию "Create a new key pair" чтобы создать новый ключ. Дальше выходит диалоговое окно, предлагающее либо создать, либо добавить существующий SSH ключ, с помощью которого мы в дальнейшем будет удаленно подключатся к нашему инстансу. Сохраните их в надежное место на диске локального компьютера. Задаем его имя, и нажимаем кнопку Download Key Pair, чтобы скачать созданные ключи. После того как скачали — нажимаете кнопку Launch Instances

7

2.1.7.1. Сохранение ключей доступа

После того, как мы нажали кнопку Download Key Pair, ключ сохраняется в виде файла сертификата с расширением *.pem. Здесь показан, этап сохранения созданных ключей из предыдущего шага. В данном случае я дал ему имя wireguard-awskey.pem

8

2.1.8. Обзор результатов создания инстанса

Мы можем перейти к списку наших инстансов нажав на кнопку View instances Далее мы видим сообщение об успешном запуске только что созданного нами инстанса.

9

2.2. Создание внешнего IP адреса

2.2.1. Запуск создания внешнего IP

Для этого в навигационной панели в левой части экрана необходимо выбрать пункт Elastic IPs из категории NETWORK & SECTURITY и нажать кнопку Allocate new address Дальше нам необходимо создать постоянный внешний IP адрес, через который мы и будем подключатся к нашему VPN серверу.

1

2.2.2. Настройка создания внешнего IP

На следующем шаге нам необходима чтобы была включена опция Amazon pool (включена по умолчанию), и нажимаем на кнопку Allocate

2

2.2.3. Обзор результатов создания внешнего IP адреса

Рекомендуется его запомнить, а лучше даже записать. На следующем экране отобразится полученный нами внешний IP адрес. В данном руководстве в качестве примера я использую IP адрес 4. он нам еще не раз пригодиться в процессе дальнейшей настройки и использования VPN сервера. 2. 3. Как записали адрес, нажимаем на кнопку Close 1.

3

2.2.4. Список внешних IP адресов

Далее нам открывается список наших постоянных публичных IP адресов (elastics IP).

4

2.2.5. Назначение внешнего IP инстансу

В нем выбираем пункт Associate address, чтобы назначить его ранее созданному нами инстансу. В этом списке мы выбираем полученный нами IP адрес, и нажимаем правую кнопку мыши, чтобы вызвать выпадающее меню.

5

2.2.6. Настройка назначения внешнего IP

На следующем шаге выбираем из выпадающего списка наш инстанс, и нажимаем кнопку Associate

6

2.2.7. Обзор результатов назначения внешнего IP

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

7

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

SSH — это безопасный протокол удаленного управления компьютерными устройствами.

3.1. Подключение по SSH c компьютера на Windows

Для подключения к компьютера с Windows, прежде необходимо скачать и установить программу Putty.

3.1.1. Импорт приватного ключа для Putty

1. 3. 1. 1. Для этого в верхнем меню выбираем пункт Conversions->Import Key После установки Putty, необходимо запустить утилиту PuTTYgen идущую с ней в комплекте, для импорта ключа сертификата в формате PEM, в формат, пригодный для использования в программе Putty.

1

3.1.1.2. Выбор ключа AWS в формате PEM

1. Далее, выбираем ключ, который мы ранее сохранили на этапе 2. 1, в нашем случае его имя wireguard-awskey.pem 7.

2

3.1.1.3. Задание параметров импорта ключа

Он будет запрашиваться при каждом подключении. На этом шаге нам необходимо указать комментарий для этого ключа (описание) и задать для безопасности пароль и его подтверждение. Пароль можно не задавать, но это менее безопасно, в случае, если ключ попадет в чужие руки. Таким образом мы защищаем ключ паролем от не целевого использования. После нажимаем кнопку Save private key

3

3.1.1.4. Сохранение импортированного ключа

Открывается диалоговое окно сохранения файла, и мы сохраняем наш приватный ключ в виде файла с расширением .ppk, пригодного для использования в программе Putty.
Указываем имя ключа (в нашем случае wireguard-awskey.ppk) и нажимаем кнопку Сохранить.

4

3.1.2. Создание и настройка соединения в Putty

3.1.2.1. Создание соединения

2. Открываем программу Putty, выбираем категорию Session (она открыта по умолчанию) и в поле Host Name вводим публичный IP адрес нашего сервера, который мы получили на шаге 2. В поле Saved Session вводим произвольное название нашего соединения (в моем случае wireguard-aws-london), и далее нажимаем кнопку Save чтобы сохранить сделанные нами изменения. 3.

5

3.1.2.2. Настройка автологина пользователя

Дальше в категории Connection, выбираем подкатегорию Data и в поле Auto-login username водим имя пользователя ubuntu — это стандартный пользователь инстанса на AWS с Ubuntu.

6

3.1.2.3. Выбор приватного ключа для соединения по SSH

Затем переходим в подкатегорию Connection/SSH/Auth и рядом с полем Private key file for authentication нажимаем на кнопку Browse... для выбора файла с сертификатом ключа.

7

3.1.2.4. Открытие импортированного ключа

1. Указываем ключ, импортированный нами ранее на этапе 3. 4, в нашем случае это файл wireguard-awskey.ppk, и нажимаем кнопку Открыть. 1.

8

3.1.2.5. Сохранение настроек и запуск подключения

1. Вернувшись на страницу категории Session нажимаем еще раз кнопку Save, для сохранения сделанных ранее нами изменений на предыдущих шагах (3. 2 — 3. 2. 2. 1. И затем нажимаем кнопку Open чтобы открыть созданное и настроенное нами удаленное подключение по SSH. 4).

10

3.1.2.7. Настройка доверия между хостами

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

11

3.1.2.8. Ввод пароля для доступа к ключу

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

12

3.1.2.9. Приветственное сообщение об успешном подключении

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

13

Наиболее актуальную инструкцию по установке и использованию Wireguard с помощью описанных ниже скриптов можно посмотреть в репозитории: https://github.com/isystem-io/wireguard-aws

4.1. Установка Wireguard

В терминале вводим следующие команды (можно копировать в буфер обмена, и вставлять в терминале нажатием правой клавиши мыши):

4.1.1. Клонирование репозитория

Клонируем репозиторий со скриптами установки Wireguard

git clone https://github.com/pprometey/wireguard_aws.git wireguard_aws

4.1.2. Переход в каталог со скриптами

Переходим в каталог с клонированным репозиторем

cd wireguard_aws

4.1.3 Запуск скрипта инициализации

Запускаем от имени администратора (root пользователя) скрипт установки Wireguard

sudo ./initial.sh

В процессе установки будут запрошены определенные данные, необходимые для настройки Wireguard

4.1.3.1. Ввод точки подключения

Внешний IP адрес сервера мы получили на шаге 2. Введите внешний IP адрес и открытый порт Wireguard сервера. 3, а порт открыли на шаге 2. 2. 5. 1. 3. Указываем их слитно, разделяя двоеточием, например 4. 1:54321, и после этого нажимает клавишу Enter
Пример вывода: 2.

Enter the endpoint (external ip and port) in format [ipv4:port] (e.g. 4.3.2.1:54321): 4.3.2.1:54321

4.1.3.2. Ввод внутреннего IP адреса

50. Введите IP адрес сервера Wireguard в защищенной VPN подсети, если не знаете что это такое, просто нажмите клавишу Enter для установки значения по умолчанию (10. 1)
Пример вывода: 0.

Enter the server address in the VPN subnet (CIDR format) ([ENTER] set to default: 10.50.0.1):

4.1.3.3. Указание сервера DNS

1. Введите IP адрес DNS сервера, или просто нажмите клавишу Enter для установки значения по умолчанию 1. 1 (Cloudflare public DNS)
Пример вывода: 1.

Enter the ip address of the server DNS (CIDR format) ([ENTER] set to default: 1.1.1.1):

4.1.3.4. Указание WAN интерфейса

Просто нажмите Enter, чтобы установить значение по умолчанию для AWS (eth0)
Пример вывода: Дальше требуется ввести имя внешнего сетевого интерфейса, который будет прослушивать внутренний сетевой интерфейс VPN.

Enter the name of the WAN network interface ([ENTER] set to default: eth0):

4.1.3.5. Указание имени клиента

Дело в том, что VPN сервер Wireguard не сможет запуститься, пока не добавлен хотя бы один клиент. Введите имя VPN пользователя. В данном случае я ввел имя Alex@mobile
Пример вывода:

Enter VPN user name: Alex@mobile

А также ниже QR кода отобразится текст конфигурационного файла в случае ручной конфигурации клиентов. После этого на экране должен отобразится QR код с конфигурацией только что добавленного клиента, который надо считать с помощью мобильного клиента Wireguard на Android либо iOS, для его настройки. Как это сделать будет сказано ниже.

Завершение установки Wireguard

4.2. Добавление нового VPN пользователя

Чтобы добавить нового пользователя, необходимо в терминале выполнить скрипт add-client.sh

sudo ./add-client.sh

Скрипт запрашивает имя пользователя:
Пример вывода:

Enter VPN user name:

Также, имя пользователям можно передать в качестве параметра скрипта (в данном случае Alex@mobile):

sudo ./add-client.sh Alex@mobile

В результате выполнения скрипта, в каталоге с именем клиента по пути /etc/wireguard/clients/ будет создан файл с конфигурацией клиента /etc/wireguard/clients/{ИмяКлиента}/{ИмяКлиента}.conf, а на экране терминала отобразится QR код для настройки мобильных клиентов и содержимое файла конфигурации.

4.2.1. Файл пользовательской конфигурации

Показать на экране содержимое файла .conf, для ручной настройки клиента, можно с помощью команды cat

sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf

результат выполнения:

[Interface]
PrivateKey = oDMWr0toPVCvgKt5oncLLRfHRit+jbzT5cshNUi8zlM=
Address = 10.50.0.2/32
DNS = 1.1.1.1 [Peer]
PublicKey = mLnd+mul15U0EP6jCH5MRhIAjsfKYuIU/j5ml8Z2SEk=
PresharedKey = wjXdcf8CG29Scmnl5D97N46PhVn1jecioaXjdvrEkAc=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 4.3.2.1:54321

Описание файла конфигурации клиента:

[Interface]
PrivateKey = Приватный ключ клиента
Address = IP адрес клиента
DNS = ДНС используемый клиентом [Peer]
PublicKey = Публичный ключ сервера
PresharedKey = Общи ключ сервера и клиента
AllowedIPs = Разрешенные адреса для подключения (все - 0.0.0.0/0, ::/0)
Endpoint = IP адрес и порт для подключения

4.2.2. QR код конфигурации клиента

Показать на экране терминала QR код конфигурации для ранее созданного клиента можно с помощью команды qrencode -t ansiutf8 (в данном примере используется клиент с именем Alex@mobile):

sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf | qrencode -t ansiutf8

5.1. Настройка мобильного клиента Андроид

Официальный клиент Wireguard для Андроид можно установить из официального магазина GooglePlay

пункт 4. После чего, необходимо импортировать конфигурацию, считав QR код с конфигурацией клиента (см. 2) и дать ему имя: 2.

Настройка Андроид клиента Wireguard

Об успешном подключении скажет заначок ключика в системной панели Андроид После успешного импорта конфигурации, можно включить VPN тоннель.

Работающий Андроид клиент Wireguard

5.2. Настройка клиента Windows

Первоначально необходимо скачать и установить программу TunSafe for Windows — это клиент Wireguard для Windows.

5.2.1. Создание файла конфигурации для импорта

Правой кнопкой мышки создаем текстовый файл на рабочем столе.

Создание текстового файла

5.2.2. Копирование содержимого файла конфигурации с сервера

2. Дальше возвращаемся к терминалу Putty и отображаем содержимое конфигурационного файла нужного пользователя, как это описано на шаге 4. 1.
Далее выделяем правой кнопкой мыши текст конфигурации в терминале Putty, по окончании выделения он автоматически скопируется в буфер обмена.

Копирование текста с конфигурацией

5.2.3. Копирование конфигурации в локальный файл конфигурации

Поле этого возвращаемся к созданному нами ранее на рабочем столе текстовому файлу, и вставляем в него из буфера обмена текст конфигурации.

Копирование текста с конфигурацией

5.2.4. Сохранение локального файла конфигурации

Сохраняем файл, с расширением .conf (в данном случае с именем london.conf)

Сохранения файла с конфигурацией

5.2.5. Импорт локального файла конфигурации

Далее необходимо импортировать файл конфигурации в программу TunSafe.

Импорт файла конфигурации в TunSafe

5.2.6. Установка VPN соединения

Выбрать этот файл конфигурации и подключиться, нажав кнопку Connect.
Подключение к серверу VPN через TunSafe

Чтобы проверить успешность подключения через VPN тоннель, необходимо открыть браузер и перейти на сайт https://2ip.ua/ru/

Подключение к серверу VPN через TunSafe

2. Отображаемый IP адрес должен совпадать с тем, который мы получили на этапе 2. 3.
Если это так, значит VPN тоннель работает успешно.

Из терминала в Linux можно проверить свой IP адрес, введя команду:

curl http://zx2c4.com/ip

Или можно просто зайти на порнохаб, если вы находитесь в Казахстане.

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»