Безкоштовний VPN сервіс Wireguard на AWS

Для чого?

Зі зростанням цензурування інтернету авторитарними режимами, блокується все більша кількість корисних інтернет ресурсів та сайтів. У тому числі з технічною інформацією.
Таким чином, ставати неможливо повноцінно користуватися інтернетом і порушується фундаментальне право на свободу слова, закріплене в Загальна декларація прав людини.

Стаття 19
Кожна людина має право на свободу переконань та на вільне вираження їх; це право включає свободу безперешкодно дотримуватися своїх переконань та свободу шукати, отримувати та поширювати інформацію та ідеї будь-якими засобами та незалежно від державних кордонів

У цьому посібнику ми за 6 етапів розгорнемо свій власний безкоштовний* VPN сервіс на базі технології Дротяник, у хмарній інфраструктурі Amazon Web Services (AWS), за допомогою безкоштовного облікового запису (на 12 місяців), на інстансі (віртуальній машині) під керуванням Сервер Ubuntu 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 Detalis

Безкоштовний VPN сервіс Wireguard на AWS

2.1.2. Налаштування параметрів інстансу

Надалі ми підключимо до нашого інстансу постійний публічний IP, тому на цьому етапі ми відключаємо автопризначення публічного IP, і натискаємо кнопку Next: Add Storage

Безкоштовний VPN сервіс Wireguard на AWS

2.1.3. Підключення сховища

Вказуємо розмір жорсткого диска. Для наших цілей достатньо 16 гігабайт і натискаємо кнопку Далі: Додати теги

Безкоштовний VPN сервіс Wireguard на AWS

2.1.4. Налаштування тегів

Якби ми створювали кілька інстансів, їх можна було б групувати за тегами, для полегшення адміністрування. В даному випадку ця фукційність зайва, відразу натискаємо кнопку Next: Configure Security Gorup

Безкоштовний VPN сервіс Wireguard на AWS

2.1.5. Відкриття портів

На цьому етапі ми налаштовуємо брандмауер, відкриваючи порти. Набір відкритих портів називається "Група безпеки" (Security Group). Ми повинні створити нову групу безпеки, дати їй ім'я, опис, додати порт UDP (Custom UDP Rule), у полі Rort Range необхідно призначити номер порту з діапазону динамічних портів 49152-65535. У цьому випадку я вибрав номер порту 54321.

Безкоштовний VPN сервіс Wireguard на AWS

Після заповнення необхідних даних натискаємо на кнопку Перегляньте та запустіть

2.1.6. Огляд усіх налаштувань

На цій сторінці йде огляд всіх налаштувань нашого інстансу, перевіряємо чи всі налаштування в порядку, і натискаємо кнопку Запуск

Безкоштовний VPN сервіс Wireguard на AWS

2.1.7. Створення ключів доступу

Далі виходить діалогове вікно, що пропонує або створити, або додати існуючий SSH ключ, за допомогою якого ми будемо віддалено підключатися до нашого інстансу. Ми вибираємо опцію «Create a new key pair», щоб створити новий ключ. Задаємо його ім'я і натискаємо кнопку Завантажте пару ключів, щоб завантажити створені ключі. Збережіть їх у надійному місці на диску локального комп'ютера. Після того як скачали – натискаєте кнопку Запустити екземпляри

Безкоштовний VPN сервіс Wireguard на AWS

2.1.7.1. Збереження ключів доступу

Тут показано етап збереження створених ключів з попереднього кроку. Після того, як ми натиснули кнопку Завантажте пару ключів, ключ зберігається як файл сертифіката з розширенням *.pem. У цьому випадку я дав йому ім'я wireguard-awskey.pem

Безкоштовний VPN сервіс Wireguard на AWS

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

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

Безкоштовний VPN сервіс Wireguard на AWS

2.2. Створення зовнішньої IP-адреси

2.2.1. Запуск створення зовнішнього IP

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

Безкоштовний VPN сервіс Wireguard на AWS

2.2.2. Налаштування створення зовнішнього IP

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

Безкоштовний VPN сервіс Wireguard на AWS

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

На наступному екрані відобразиться отримана нами зовнішня IP-адреса. Рекомендується запам'ятати його, а краще навіть записати. він нам ще не раз нагоді в процесі подальшого налаштування та використання VPN сервера. У цьому посібнику як приклад я використовую IP адресу 4.3.2.1. Як записали адресу, натискаємо на кнопку близько

Безкоштовний 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

На наступному кроці вибираємо з списку наш інстанс, і натискаємо кнопку Юрист

Безкоштовний VPN сервіс Wireguard на AWS

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

Після цього, ми можемо побачити, до нашої постійної публічної IP-адреси прив'язаний наш інстанс і його приватна IP-адреса.

Безкоштовний VPN сервіс Wireguard на AWS

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

3. Підключення до інстансу AWS

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

3.1. Підключення по SSH з комп'ютера на Windows

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

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

3.1.1.1. Після встановлення Putty, необхідно запустити утиліту PuTTYgen, яка йде з нею в комплекті, для імпорту ключа сертифіката у форматі PEM, у формат, придатний для використання у програмі Putty. Для цього у верхньому меню вибираємо пункт Конверсії->Ключ імпорту

Безкоштовний 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, придатного для використання у програмі шпаклівка.
Вказуємо ім'я ключа (у нашому випадку wireguard-awskey.ppk) і натискаємо кнопку Зберегти.

Безкоштовний VPN сервіс Wireguard на AWS

3.1.2. Створення та налаштування з'єднання в Putty

3.1.2.1. Створення з'єднання

Відкриваємо програму Putty, вибираємо категорію Session (вона відкрита за замовчуванням) та у полі Host Name вводимо публічну IP-адресу нашого сервера, який ми отримали на кроці 2.2.3. В полі Збережена сесія вводимо довільну назву нашої сполуки (у моєму випадку 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 і поруч із полем Private key file for authentication натискаємо на кнопку Переглянути ... для вибору файлу із сертифікатом ключа.

Безкоштовний 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). І потім натискаємо кнопку відкритий щоб відкрити створене і налаштоване віддалене підключення по SSH.

Безкоштовний VPN сервіс Wireguard на AWS

3.1.2.7. Налаштування довіри між хостами

На наступному кроці, при першій спробі підключиться, нам видається попередження, у нас не налаштована довіра між двома комп'ютерами, і запитує, чи довіряти віддаленому комп'ютеру. Ми натиснемо кнопку Тактим самим додаючи його до списку довірених хостів.

Безкоштовний VPN сервіс Wireguard на AWS

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

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

Безкоштовний 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 Запуск скрипту ініціалізації

Запускаємо від імені адміністратора (root користувача) скрипт установки Wireguard

sudo ./initial.sh

У процесі встановлення будуть запитані певні дані, необхідні для налаштування Wireguard

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

Введіть зовнішню IP-адресу та відкритий порт Wireguard сервера. Зовнішню IP-адресу сервера ми отримали на кроці 2.2.3, а порт відкрили на кроці 2.1.5. Вказуємо їх разом, розділяючи двокрапкою, наприклад 4.3.2.1:54321, і після цього натискає клавішу Що натомість? Створіть віртуальну версію себе у
Приклад висновку:

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 адреси

Введіть IP адресу сервера Wireguard у захищеній VPN підмережі, якщо не знаєте що це таке, просто натисніть клавішу Enter для встановлення значення за замовчуванням (10.50.0.1)
Приклад висновку:

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

4.1.3.3. Вказівка ​​сервера DNS

Введіть IP-адресу DNS сервера, або просто натисніть клавішу Enter для встановлення значення за замовчуванням 1.1.1.1 (Cloudflare public DNS)
Приклад висновку:

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

4.1.3.4. Вказівка ​​WAN інтерфейсу

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

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

4.1.3.5. Вказівка ​​імені клієнта

Введіть ім'я користувача VPN. Справа в тому, що VPN сервер Wireguard не зможе запуститися, поки не доданий хоча б один клієнт. У цьому випадку я ввів ім'я Alex@mobile
Приклад висновку:

Enter VPN user name: Alex@mobile

Після цього на екрані повинен відобразитися QR код із конфігурацією щойно доданого клієнта, який треба вважати за допомогою мобільного клієнта Wireguard на Android або iOS для його налаштування. А також нижче QR коду з'явиться текст конфігураційного файлу у разі ручної конфігурації клієнтів. Як це зробити буде сказано нижче.

Безкоштовний VPN сервіс Wireguard на AWS

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/[email protected]

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

[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/[email protected] | qrencode -t ansiutf8

5. Конфігурування VPN клієнтів

5.1. Налаштування мобільного клієнта Андроїд

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

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

Безкоштовний VPN сервіс Wireguard на AWS

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

Безкоштовний VPN сервіс Wireguard на AWS

5.2. Налаштування клієнта Windows

Спочатку необхідно завантажити та встановити програму TunSafe for 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

Додати коментар або відгук