Защо?
С нарастваща цензура на интернет, авторитарни режими блокират все повече полезни интернет ресурси и сайтове. Включително и такива с техническа информация.
Така става невъзможно пълноценното ползване на интернет и се нарушава фундаменталното право на свобода на словото, закрпетено в .
Член 19
Всеки човек има право на свобода на убежденията и на свободното им изразяване; това право включва свободата безпрепятствено да се придържа към своите убеждения и свободата да търси, получава и разпространява информация и идеи по всякакви средства и независимо от националните граници.
В това ръководство ще развием собствен безплатен* на базата на технологията , в облачната инфраструктура (AWS), с помощта на безплатен акаунт (за 12 месеца), на инстанция (виртуална машина) под управление на .
Опитах се да направя това стъпка по стъпка ръководство колкото се може по-достъпно за хора, далечни от ИТ. Единственото, което се изисква, е търпение при повторението на описаните по-долу стъпки.
Забележка
- AWS предоставя с продължителност от 12 месеца с ограничение от 15 гигабайта трафик на месец.
- Най-актуалната версия на това ръководство е налична на адрес
Стъпки
- Регистриране на безплатен акаунт в AWS
- Създаване на инстанция в AWS
- Свързване с инстанция в AWS
- Конфигуриране на Wireguard
- Конфигуриране на VPN клиенти
- Проверка на коректността на инсталацията на VPN
Полезни връзки
1. Регистрация на акаунт в AWS
За регистрация на безплатен акаунт в AWS е необходимо валиден телефонен номер и платежоспособна кредитна карта Visa или Mastercard. Препоръчвам да ползвате виртуални карти, които безплатно предоставя или . За проверка на валидността на картата, при регистрацията се таксува 1$, който впоследствие се възстановява.
1.1. Отваряне на конзолата за управление на AWS
Трябва да отворите браузер и да отидете на адрес:
Натиснете бутона „Регистрация“

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

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

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

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

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

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

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

1.8.1. Тестване на скоростта
Преди да изберете дата център, се препоръчва да тествате скоростта на достъп до най-близките дата центрове, в моята локация резултатите са: Париж
- Сингапур

- Стокхолм

- Франкфурт

- Най-добрите резултати за скорост показва дата центърът в Лондон. Затова го избрах за по-нататъшна настройка.

- Лондон

2. Създаване на инстанция на AWS
2.1 Създаване на виртуална машина
2.1.1. Избор на тип инстанция
По подразбиране е избрана инстанцията t2.micro, точно това ни трябва, просто натискаме бутона
Next: Configure Instance Details 2.1.2. Настройка на параметрите на инстанцията

В бъдеще ще свържем постоянен публичен IP адрес към нашата инстанция, затова на този етап спираме автоматичното назначаване на публичен IP адрес и натискаме бутона
Next: Add Storage 2.1.3. Свързване на хранилище

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

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

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

Review and Launch 2.1.6. Преглед на всички настройки
На тази страница се прави преглед на всички настройки на нашата инстанция, проверяваме дали всичко е наред и натискаме бутона
Launch 2.1.7. Създаване на ключове за достъп

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

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

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

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

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

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

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

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

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

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

Сега можем да се свържем с нашия новосъздаден инстанс отвън, от компютъра си по SSH.
3. Свързване с инстанс на AWS
— това е защитен протокол за отдалечено управление на компютърни устройства.
3.1. Свързване по SSH от компютър с Windows
За свързване от компютър с Windows, първо е необходимо да изтеглите и инсталирате програмата .
3.1.1. Импорт на частен ключ за Putty
3.1.1.1. След инсталирането на Putty, трябва да стартирате утилитата PuTTYgen, която е включена в пакета, за да импортирате сертификатния ключ от PEM формат в формат, подходящ за използване в програмата Putty. За това в горното меню изберете опцията Conversions->Import Key

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

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

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

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

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

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

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

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

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

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

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

4. Конфигуриране на Wireguard сървър
Най-актуалната инструкция за инсталиране и използване на Wireguard с описаните по-долу скриптове можете да видите в репозитория:
4.1. Инсталиране на Wireguard
В терминала въвеждаме следните команди (можете да копирате в буферче и да поставите в терминала с десен бутон на мишката):
4.1.1. Клониране на репозитория
Клонираме репозитория със скриптовете за инсталиране на Wireguard
git clone https://github.com/pprometey/wireguard_aws.git wireguard_aws4.1.2. Преход в каталога със скриптовете
Преминаваме в каталога с клонирания репозиторий
cd wireguard_aws4.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:543214.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 кода ще се появи текстът на конфигурационния файл за ръчна конфигурация на клиентите. Как да го направите ще бъде казано по-долу.

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 ansiutf85. Конфигуриране на VPN клиенти
5.1. Настройка на мобилен клиент Андроид
Официалният клиент Wireguard за Андроид може да
След това трябва да импортирате конфигурацията, като сканирате QR кода на конфигурацията на клиента (вижте точка 4.2.2) и да му дадете име:

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

5.2. Настройка на клиента Windows
Първо, необходимо е да изтеглите и инсталирате програмата — това е клиент Wireguard за Windows.
5.2.1. Създаване на конфигурационен файл за импорт
С десен бутон създайте текстов файл на работния плот.

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

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

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

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

5.2.6. Установяване на VPN връзка
Изберете този конфигурационен файл и се свържете, като натиснете бутона Свържете се.

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

Показаният IP адрес трябва да съвпада с този, който получихме на етап 2.2.3.
Ако е така, значи VPN тунелът работи успешно.
От терминала в Linux можете да проверите IP адреса си, като въведете командата:
curl http://zx2c4.com/ipИли просто можете да отидете на порнохаб, ако се намирате в Казахстан.
Източник: habr.com





