Безплатна VPN услуга Wireguard на AWS

Защо?

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

Член 19
Всеки човек има право на свобода на убежденията и на свободното им изразяване; това право включва свободата безпрепятствено да се придържа към своите убеждения и свободата да търси, получава и разпространява информация и идеи по всякакви средства и независимо от националните граници.

В това ръководство ще развием собствен безплатен* VPN услуга на базата на технологията Wireguard, в облачната инфраструктура Amazon Web Services (AWS), с помощта на безплатен акаунт (за 12 месеца), на инстанция (виртуална машина) под управление на Ubuntu Server 18.04 LTS.
Опитах се да направя това стъпка по стъпка ръководство колкото се може по-достъпно за хора, далечни от ИТ. Единственото, което се изисква, е търпение при повторението на описаните по-долу стъпки.

Забележка

Стъпки

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

Полезни връзки

1. Регистрация на акаунт в AWS

За регистрация на безплатен акаунт в AWS е необходимо валиден телефонен номер и платежоспособна кредитна карта Visa или Mastercard. Препоръчвам да ползвате виртуални карти, които безплатно предоставя Яндекс.Деньги или Qiwi портфейл. За проверка на валидността на картата, при регистрацията се таксува 1$, който впоследствие се възстановява.

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

Трябва да отворите браузер и да отидете на адрес: https://aws.amazon.com/ru/
Натиснете бутона „Регистрация“

Безплатна VPN услуга Wireguard на AWS

1.2. Попълване на лични данни

Попълнете данните и натиснете бутона „Продължи“

Безплатна VPN услуга Wireguard на AWS

1.3. Попълване на контактни данни

Попълнете контактната информация.

Безплатна VPN услуга Wireguard на AWS

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

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

Безплатна VPN услуга Wireguard на AWS

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

На този етап се потвърджава номерът на телефона и се извършва директно дебитиране на 1$ от платежната карта. На екрана на компютъра се показва 4-цифрен код и на посочения телефон получавате обаждане от Amazon. По време на обаждането е необходимо да въведете кода, посочен на екрана.

Безплатна VPN услуга Wireguard на AWS

1.6. Избор на тарифен план.

Избираме — Основен план (безплатен)

Безплатна VPN услуга Wireguard на AWS

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

Безплатна VPN услуга Wireguard на AWS

1.8. Избор на местоположение на дата центъра

Безплатна VPN услуга Wireguard на AWS

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

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

  • Сингапур
    Безплатна VPN услуга Wireguard на AWS
  • Стокхолм
    Безплатна VPN услуга Wireguard на AWS
  • Франкфурт
    Безплатна VPN услуга Wireguard на AWS
  • Най-добрите резултати за скорост показва дата центърът в Лондон. Затова го избрах за по-нататъшна настройка.
    Безплатна VPN услуга Wireguard на AWS
  • Лондон
    Безплатна VPN услуга Wireguard на AWS

2. Създаване на инстанция на AWS

2.1 Създаване на виртуална машина

2.1.1. Избор на тип инстанция

По подразбиране е избрана инстанцията t2.micro, точно това ни трябва, просто натискаме бутона

Next: Configure Instance Details 2.1.2. Настройка на параметрите на инстанцията

Безплатна VPN услуга Wireguard на AWS

В бъдеще ще свържем постоянен публичен IP адрес към нашата инстанция, затова на този етап спираме автоматичното назначаване на публичен IP адрес и натискаме бутона

Next: Add Storage 2.1.3. Свързване на хранилище

Безплатна VPN услуга Wireguard на AWS

Указваме размера на "твърдия диск". За нашите цели 16 гигабайта са достатъчни и натискаме бутона

Next: Add Tags 2.1.4. Настройка на таговете

Безплатна VPN услуга Wireguard на AWS

Ако създавахме няколко инстанции, можехме да ги групираме по тагове, за да улесним администрирането. В настоящия случай тази функционалност е излишна, веднага натискаме бутона

Next: Configure Security Group 2.1.5. Отваряне на портовете

Безплатна VPN услуга Wireguard на AWS

На този етап настройваме защитната стена, отваряйки необходимите портове. Комплектът от отворени портове се нарича „Група за сигурност“ (Security Group). Трябва да създадем нова група за сигурност, да ѝ дадем име и описание, да добавим UDP порт (Custom UDP Rule), в полето Port Range необходимо е да посочим номер на порта от диапазона

динамични портове 49152—65535. В този случай избрах номер на порта 54321. След попълването на необходимите данни натискаме бутона

Безплатна VPN услуга Wireguard на AWS

Review and Launch 2.1.6. Преглед на всички настройки

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

Launch 2.1.7. Създаване на ключове за достъп

Безплатна VPN услуга Wireguard на AWS

2.1.7. Създаване на ключове за достъп

Следва да се появи диалогов прозорец, предлагащ или създаване, или добавяне на съществуващ SSH ключ, с помощта на който по-късно ще се свързваме дистанционно с нашия инстанс. Избираме опцията „Create a new key pair“, за да създадем нов ключ. Задаваме името му и натискаме бутона Download Key Pair, за да изтеглим създадените ключове. Запазете ги в сигурно място на диска на локалния компютър. След като ги изтеглите – натиснете бутона Launch Instances

Безплатна VPN услуга Wireguard на AWS

2.1.7.1. Запазване на ключовете за достъп

Тук е показан етапът на запазване на създадените ключове от предишната стъпка. След като натиснем бутона Download Key Pair, ключът се запазва като файл с разширение *.pem. В този случай му дадох името wireguard-awskey.pem

Безплатна VPN услуга Wireguard на AWS

2.1.8. Преглед на резултатите от създаването на инстанса

След това виждаме съобщение за успешен старт на току-що създадения инстанс. Можем да преминем към списъка с нашите инстанси, натискайки бутона View instances

Безплатна VPN услуга Wireguard на AWS

2.2. Създаване на външен IP адрес

2.2.1. Започване на създаването на външен IP

Следва да създадем постоянен външен IP адрес, през който ще се свързваме с нашия VPN сървър. За целта в навигационната лента отляво на екрана е необходимо да изберем пункта Elastic IPs от категорията NETWORK & SECTURITY и натискаме бутона Allocate new address

Безплатна VPN услуга Wireguard на AWS

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

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

Безплатна VPN услуга Wireguard на AWS

2.2.3. Преглед на резултатите от създаването на външен IP адрес

На следващия екран ще се покаже полученият от нас външен IP адрес. Препоръчително е да го запомните, а е по-добре дори да го запишете. Той ще ни е нужен в бъдеще в процеса на настройка и използване на VPN сървъра. В това ръководство като пример използвам IP адреса 4.3.2.1. След като запишем адреса, натискаме бутона Close

Безплатна VPN услуга Wireguard на AWS

2.2.4. Списък на външните IP адреси

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

Безплатна VPN услуга Wireguard на AWS

2.2.5. Назначаване на външен IP на инстанса

В този списък избираме получения от нас IP адрес и натискаме десния бутон на мишката, за да извикаме падащото меню. В него избираме пункта Associate address, за да го назначим на току-що създадения инстанс.

Безплатна VPN услуга Wireguard на AWS

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

На следващата стъпка избираме от падащия списък нашия инстанс и натискаме бутона Associate

Безплатна VPN услуга Wireguard на AWS

2.2.7. Преглед на резултатите от назначаването на външен IP

След това можем да видим, че нашият инстанс е свързан с нашия постоянен публичен IP адрес и неговия частен IP адрес.

Безплатна VPN услуга Wireguard на AWS

Сега можем да се свържем с нашия новосъздаден инстанс отвън, от компютъра си по SSH.

3. Свързване с инстанс на AWS

SSH — това е защитен протокол за отдалечено управление на компютърни устройства.

3.1. Свързване по SSH от компютър с Windows

За свързване от компютър с Windows, първо е необходимо да изтеглите и инсталирате програмата Putty.

3.1.1. Импорт на частен ключ за Putty

3.1.1.1. След инсталирането на Putty, трябва да стартирате утилитата PuTTYgen, която е включена в пакета, за да импортирате сертификатния ключ от PEM формат в формат, подходящ за използване в програмата Putty. За това в горното меню изберете опцията Conversions->Import Key

Безплатна VPN услуга Wireguard на AWS

3.1.1.2. Избор на ключ AWS в PEM формат

След това, избирате ключа, който сме запазили на етап 2.1.7.1, в нашия случай неговото име wireguard-awskey.pem

Безплатна VPN услуга Wireguard на AWS

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

Тук трябва да посочим коментар за този ключ (описание) и да зададем паролата за безопасност и нейното потвърждение. Тя ще бъде искана при всяко свързване. По този начин защитаваме ключа с парола от неправилно използване. Паролата не е задължителна, но е по-малко безопасно, ако ключът попадне в чужди ръце. След това натискаме бутона Save private key

Безплатна VPN услуга Wireguard на AWS

3.1.1.4. Запазване на импортирания ключ

Отваря се диалогов прозорец за запис на файла, и ние запазваме нашия частен ключ като файл с разширение .ppk, подходящ за използване в програмата Putty.
Посочваме името на ключа (в нашия случай wireguard-awskey.ppk) и натискаме бутона Запази.

Безплатна VPN услуга Wireguard на AWS

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

3.1.2.1. Създаване на връзка

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

Безплатна VPN услуга Wireguard на AWS

3.1.2.2. Настройка на автоматичен вход за потребителя

След това в категорията Connection, избираме подкатегорията Данни и в полето Auto-login username въвеждаме името на потребителя ubuntu — това е стандартният потребител на инстанса на AWS с Ubuntu.

Безплатна VPN услуга Wireguard на AWS

3.1.2.3. Избор на частен ключ за свързване по SSH

След това преминаваме в подкатегорията Connection/SSH/Auth и до полето Файл с частен ключ за удостоверяване натискаме бутона Преглед… за избор на файла със сертификата на ключа.

Безплатна VPN услуга Wireguard на AWS

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

Посочваме ключа, който импортирахме по-рано на етап 3.1.1.4, в нашия случай това е файлът wireguard-awskey.ppk, и натискаме бутона Отвори.

Безплатна VPN услуга Wireguard на AWS

3.1.2.5. Запазване на настройките и стартиране на връзката

Върнете се на страницата на категорията Session и отново натискаме бутона Запази, за да запазим направените от нас промени на предишните стъпки (3.1.2.2 — 3.1.2.4). И след това натискаме бутона Open за да отворим създадената и настроена от нас отдалечена SSH връзка.

Безплатна VPN услуга Wireguard на AWS

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

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

Безплатна VPN услуга Wireguard на AWS

3.1.2.8. Въвеждане на парола за достъп до ключа

След това се отваря терминално прозорец, където се иска паролата за ключа, ако сте я задавали по-рано на стъпка 3.1.1.3. При въвеждане на паролата, нищо не се показва на екрана. Ако грешите, можете да използвате клавиша Backspace.

Безплатна VPN услуга Wireguard на AWS

3.1.2.9. Позиционно съобщение за успешно свързване

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

Безплатна VPN услуга Wireguard на AWS

4. Конфигуриране на Wireguard сървър

Най-актуалната инструкция за инсталиране и използване на 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 Стартиране на инициализационен скрипт

Стартираме скрипта за инсталиране на Wireguard с администраторски права (потребител root)

sudo ./initial.sh

По време на инсталацията ще бъдат поискани определени данни, необходими за конфигуриране на Wireguard

4.1.3.1. Въвеждане на точка на свързване

Въведете външния IP адрес и отворения порт на Wireguard сървъра. Външният IP адрес на сървъра получихме на стъпка 2.2.3, а портът отворихме на стъпка 2.1.5. Указваме ги слитно, разделяйки с двоеточие, например 4.3.2.1:54321, и след това натиснете бутона Enter
Пример за изход:

Въведете крайна точка (външен IP и порт) във формат [ipv4:port] (напр. 4.3.2.1:54321): 4.3.2.1:54321

4.1.3.2. Въведете вътрешния IP адрес

Въведете IP адреса на Wireguard сървъра в защитената VPN подсетка. Ако не знаете какво е, просто натиснете бутона Enter, за да зададете стойността по подразбиране (10.50.0.1)
Пример за изход:

Въведете адреса на сървъра в VPN подсетката (формат CIDR) ([ENTER] задава по подразбиране: 10.50.0.1):

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

Въведете IP адреса на DNS сървъра или просто натиснете бутона Enter, за да зададете стойността по подразбиране 1.1.1.1 (Cloudflare публичен DNS)
Пример за изход:

Въведете IP адреса на DNS сървъра (формат CIDR) ([ENTER] задава по подразбиране: 1.1.1.1):

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

Следва да въведете името на външния мрежов интерфейс, който ще слуша вътрешния мрежов интерфейс на VPN. Просто натиснете Enter, за да зададете стойността по подразбиране за AWS (eth0)
Пример за изход:

Въведете името на WAN мрежовия интерфейс ([ENTER] задава по подразбиране: eth0):

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

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

Въведете името на VPN потребителя: Alex@mobile

След това на екрана трябва да се появи QR код с конфигурацията на току-що добавения клиент, който трябва да бъде сканиран с мобилния клиент Wireguard на Android или iOS, за настройка. Също така по-долу на QR кода ще се появи текстът на конфигурационния файл за ръчна конфигурация на клиентите. Как да го направите ще бъде казано по-долу.

Безплатна VPN услуга Wireguard на AWS

4.2. Добавяне на нов VPN потребител

За да добавите нов потребител, е необходимо в терминала да изпълните скрипта add-client.sh

sudo ./add-client.sh

Скриптът пита за името на потребителя:
Пример за изход:

Въведете името на VPN потребителя: 

Също така името на потребителя може да бъде предадено като параметър на скрипта (в този случай 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. Конфигуриране на VPN клиенти

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

Официалният клиент Wireguard за Андроид може да бъде инсталиран от официалния магазин Google Play

След това трябва да импортирате конфигурацията, като сканирате QR кода на конфигурацията на клиента (вижте точка 4.2.2) и да му дадете име:

Безплатна VPN услуга Wireguard на AWS

След успешен импорт на конфигурацията можете да включите VPN тунела. Успешното свързване ще бъде показано от иконката на ключа в системната лента на Андроид

Безплатна VPN услуга Wireguard на AWS

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

Първо, необходимо е да изтеглите и инсталирате програмата TunSafe за Windows — това е клиент Wireguard за Windows.

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

С десен бутон създайте текстов файл на работния плот.

Безплатна VPN услуга Wireguard на AWS

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

След това се връщаме на терминала Putty и показваме съдържанието на конфигурационния файл на нужния потребител, както е описано в стъпка 4.2.1.
След това с десен бутон маркираме текста на конфигурацията в терминала Putty; след края на маркирането, той автоматично ще бъде копиран в клипборда.

Безплатна VPN услуга Wireguard на AWS

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

След това се връщаме към създадения по-рано текстов файл на работния плот и поставяме текста на конфигурацията от клипборда.

Безплатна VPN услуга Wireguard на AWS

5.2.4. Запазване на локалния конфигурационен файл

Запазете файла с разширение .conf (в този случай с име london.conf)

Безплатна VPN услуга Wireguard на AWS

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

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

Безплатна VPN услуга Wireguard на AWS

5.2.6. Установяване на VPN връзка

Изберете този конфигурационен файл и се свържете, като натиснете бутона Свържете се.
Безплатна VPN услуга Wireguard на AWS

6. Проверка на успешността на връзката

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

Безплатна VPN услуга Wireguard на AWS

Показаният IP адрес трябва да съвпада с този, който получихме на етап 2.2.3.
Ако е така, значи VPN тунелът работи успешно.

От терминала в Linux можете да проверите IP адреса си, като въведете командата:

curl http://zx2c4.com/ip

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

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster