- PVSM.RU - https://www.pvsm.ru -
С ростом цензурирования интернета авторитарными режимами, блокируются все большее количество полезных интернет ресурсов и сайтов. В том числе с технической информацией.
Таким образом, становиться невозможно полноценно пользоваться интернетом и нарушается фундаментальное право на свободу слова, закрепленное во Всеобщей декларации прав человека [1].
Статья 19
Каждый человек имеет право на свободу убеждений и на свободное выражение их; это право включает свободу беспрепятственно придерживаться своих убеждений и свободу искать, получать и распространять информацию и идеи любыми средствами и независимо от государственных границ
В данном руководстве мы за 6 этапов развернем свой собственный бесплатный* VPN сервис [2] на базе технологии Wireguard [3], в облачной инфраструктуре Amazon Web Services [4] (AWS), с помощью бесплатного аккаунта (на 12 месяцев), на инстансе (виртуальной машине) под управлением Ubuntu Server 18.04 LTS [5].
Я старался сделать это пошаговое руководство как можно более дружественным к людям, далеким от ИТ. Единственное что требуется — это усидчивость в повторении описанных ниже шагов.
Примечание
- AWS предоставляет бесплатный уровень использования [6] сроком на 12 месяцев, с ограничением на 15 гигабайт трафика в месяц.
- Наиболее актуальная версия данного руководства находится по адресу https://wireguard.isystem.io [7]
Для регистрации бесплатного аккунта AWS требуется реальный номер телефона и платежеспособная кредитная карта Visa или Mastercard. Рекомендую воспользоваться виртуальными картами которые бесплатно предоставляет Яндекс.Деньги [9] или Qiwi кошелек [10]. Для проверки валидности карты, при регистрации списывается 1$ который в дальнейшем возвращается.
Необходимо открыть браузер и перейти по адресу: https://aws.amazon.com/ru/ [4]
Нажать на кнопку "Регистрация"
Заполнить данные и нажать на кнопку "Продолжить"
Заполнить контактные сведения.
Номер карты, срок окончания и имя держателя карты.
На этом этапе идет подтверждение номера телефона и непосредственное списание 1$ с платежной карты. На экране компьютера отображается 4х значный код, и на указанный телефон поступает звонок из Amazon. Во время звонка необходимо набрать код, указанный на экране.
Выбираем — Базовый план (бесплатный)
Прежде чем выбирать датацентр, рекомендуется протестировать через https://speedtest.net [11] скорость доступа к ближайшим датацентрам, в моей локации такие результаты:
Лучшие результаты по скорости показывает датацентр в Лондоне. Поэтому я выбрал его для дальнейшей настройки.
По умолчанию выбран инстанс t2.micro, он нам и нужен, просто нажимаем кнопку Next: Configure Instance Detalis
В дальнейшем мы подключим к нашему инстансу постоянный публичный IP, поэтму на этом этапе мы отключаем автоназначение публичного IP, и нажимаем кнопку Next: Add Storage
Указываем размер "жесткого диска". Для наших целей достаточно 16 гигабайт, и нажимаем кнопку Next: Add Tags
Если бы мы создавали несколько инстансов, то их можно было бы группировать по тегам, для облегчения администрирования. В данном случае эта фукнциональность излишняя, сразу нажимаем кнопку Next: Configure Security Gorup
На этом этапе мы настраиваем брандмауэр, открывая нужные порты. Набор открытых портов называется "Группа безопасности" (Security Group). Мы должны создать новую группу безопасности, дать ей имя, описание, добавить порт UDP (Custom UDP Rule), в поле Rort Range необходимо назначить номер порта, из диапазона динамических портов [12] 49152—65535. В данном случае я выбрал номер порта 54321.
После заполнения необходимых данных, нажимаем на кнопку Review and Launch
На данной странице идет обзор всех настроек нашего инстанса, проверяем все ли настройки в порядке, и нажимаем кнопку Launch
Дальше выходит диалоговое окно, предлагающее либо создать, либо добавить существующий SSH ключ, с помощью которого мы в дальнейшем будет удаленно подключатся к нашему инстансу. Мы выбираем опцию "Create a new key pair" чтобы создать новый ключ. Задаем его имя, и нажимаем кнопку Download Key Pair, чтобы скачать созданные ключи. Сохраните их в надежное место на диске локального компьютера. После того как скачали — нажимаете кнопку Launch Instances
Здесь показан, этап сохранения созданных ключей из предыдущего шага. После того, как мы нажали кнопку Download Key Pair, ключ сохраняется в виде файла сертификата с расширением *.pem. В данном случае я дал ему имя wireguard-awskey.pem
Далее мы видим сообщение об успешном запуске только что созданного нами инстанса. Мы можем перейти к списку наших инстансов нажав на кнопку View instances
Дальше нам необходимо создать постоянный внешний IP адрес, через который мы и будем подключатся к нашему VPN серверу. Для этого в навигационной панели в левой части экрана необходимо выбрать пункт Elastic IPs из категории NETWORK & SECTURITY и нажать кнопку Allocate new address
На следующем шаге нам необходима чтобы была включена опция Amazon pool (включена по умолчанию), и нажимаем на кнопку Allocate
На следующем экране отобразится полученный нами внешний IP адрес. Рекомендуется его запомнить, а лучше даже записать. он нам еще не раз пригодиться в процессе дальнейшей настройки и использования VPN сервера. В данном руководстве в качестве примера я использую IP адрес 4.3.2.1. Как записали адрес, нажимаем на кнопку Close
Далее нам открывается список наших постоянных публичных IP адресов (elastics IP).
В этом списке мы выбираем полученный нами IP адрес, и нажимаем правую кнопку мыши, чтобы вызвать выпадающее меню. В нем выбираем пункт Associate address, чтобы назначить его ранее созданному нами инстансу.
На следующем шаге выбираем из выпадающего списка наш инстанс, и нажимаем кнопку Associate
После этого, мы можем увидеть, к нашему постоянному публичному IP адресу привязан наш инстанс и его приватный IP адрес.
Теперь мы можем подключится к нашему вновь созданному инстансу из вне, со своего компьютера по SSH.
SSH [13] — это безопасный протокол удаленного управления компьютерными устройствами.
Для подключения к компьютера с Windows, прежде необходимо скачать и установить программу Putty [14].
3.1.1.1. После установки Putty, необходимо запустить утилиту PuTTYgen идущую с ней в комплекте, для импорта ключа сертификата в формате PEM, в формат, пригодный для использования в программе Putty. Для этого в верхнем меню выбираем пункт Conversions->Import Key
Далее, выбираем ключ, который мы ранее сохранили на этапе 2.1.7.1, в нашем случае его имя wireguard-awskey.pem
На этом шаге нам необходимо указать комментарий для этого ключа (описание) и задать для безопасности пароль и его подтверждение. Он будет запрашиваться при каждом подключении. Таким образом мы защищаем ключ паролем от не целевого использования. Пароль можно не задавать, но это менее безопасно, в случае, если ключ попадет в чужие руки. После нажимаем кнопку Save private key
Открывается диалоговое окно сохранения файла, и мы сохраняем наш приватный ключ в виде файла с расширением .ppk
, пригодного для использования в программе Putty.
Указываем имя ключа (в нашем случае wireguard-awskey.ppk
) и нажимаем кнопку Сохранить.
Открываем программу Putty, выбираем категорию Session (она открыта по умолчанию) и в поле Host Name вводим публичный IP адрес нашего сервера, который мы получили на шаге 2.2.3. В поле Saved Session вводим произвольное название нашего соединения (в моем случае wireguard-aws-london), и далее нажимаем кнопку Save чтобы сохранить сделанные нами изменения.
Дальше в категории Connection, выбираем подкатегорию Data и в поле Auto-login username водим имя пользователя ubuntu — это стандартный пользователь инстанса на AWS с Ubuntu.
Затем переходим в подкатегорию Connection/SSH/Auth и рядом с полем Private key file for authentication нажимаем на кнопку Browse... для выбора файла с сертификатом ключа.
Указываем ключ, импортированный нами ранее на этапе 3.1.1.4, в нашем случае это файл wireguard-awskey.ppk, и нажимаем кнопку Открыть.
Вернувшись на страницу категории Session нажимаем еще раз кнопку Save, для сохранения сделанных ранее нами изменений на предыдущих шагах (3.1.2.2 — 3.1.2.4). И затем нажимаем кнопку Open чтобы открыть созданное и настроенное нами удаленное подключение по SSH.
На следующем шаге, при первой попытке подключится, нам выдается предупреждение, у нас не настроено доверие между двумя компьютерами, и спрашивает, доверять ли удаленному компьютеру. Мы нажимем кнопку Да, тем самым добавляя его в список доверенных хостов.
После этого открывается окно терминала, где запрашивается пароль к ключу, если вы его устанавливали ранее на шаге 3.1.1.3. При вводе пароля никаких действий на экране не происходит. Если ошиблись, можете использовать клавишу Backspace.
После успешного ввода пароля, нам отображается в терминале текст приветствия, который сообщает что удаленная система готова к выполнению наших команд.
Наиболее актуальную инструкцию по установке и использованию Wireguard с помощью описанных ниже скриптов можно посмотреть в репозитории: https://github.com/isystem-io/wireguard-aws [8]
В терминале вводим следующие команды (можно копировать в буфер обмена, и вставлять в терминале нажатием правой клавиши мыши):
Клонируем репозиторий со скриптами установки Wireguard
git clone https://github.com/pprometey/wireguard_aws.git wireguard_aws
Переходим в каталог с клонированным репозиторем
cd wireguard_aws
Запускаем от имени администратора (root пользователя) скрипт установки Wireguard
sudo ./initial.sh
В процессе установки будут запрошены определенные данные, необходимые для настройки Wireguard
Введите внешний IP адрес и открытый порт Wireguard сервера. Внешний IP адрес сервера мы получили на шаге 2.2.3, а порт открыли на шаге 2.1.5. Указываем их слитно, разделяя двоеточием, например 4.3.2.1:54321
, и после этого нажимает клавишу Enter
Пример вывода:
Enter the endpoint (external ip and port) in format [ipv4:port] (e.g. 4.3.2.1:54321): 4.3.2.1:54321
Введите 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):
Введите 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):
Дальше требуется ввести имя внешнего сетевого интерфейса, который будет прослушивать внутренний сетевой интерфейс VPN. Просто нажмите Enter, чтобы установить значение по умолчанию для AWS (eth0
)
Пример вывода:
Enter the name of the WAN network interface ([ENTER] set to default: eth0):
Введите имя VPN пользователя. Дело в том, что VPN сервер Wireguard не сможет запуститься, пока не добавлен хотя бы один клиент. В данном случае я ввел имя Alex@mobile
Пример вывода:
Enter VPN user name: Alex@mobile
После этого на экране должен отобразится QR код с конфигурацией только что добавленного клиента, который надо считать с помощью мобильного клиента Wireguard на Android либо iOS, для его настройки. А также ниже QR кода отобразится текст конфигурационного файла в случае ручной конфигурации клиентов. Как это сделать будет сказано ниже.
Чтобы добавить нового пользователя, необходимо в терминале выполнить скрипт 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 код для настройки мобильных клиентов и содержимое файла конфигурации.
Показать на экране содержимое файла .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 адрес и порт для подключения
Показать на экране терминала QR код конфигурации для ранее созданного клиента можно с помощью команды qrencode -t ansiutf8
(в данном примере используется клиент с именем Alex@mobile):
sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf | qrencode -t ansiutf8
Официальный клиент Wireguard для Андроид можно установить из официального магазина GooglePlay [15]
После чего, необходимо импортировать конфигурацию, считав QR код с конфигурацией клиента (см. пункт 4.2.2) и дать ему имя:
После успешного импорта конфигурации, можно включить VPN тоннель. Об успешном подключении скажет заначек ключика в системной панели Андроид
Первоначально необходимо скачать и установить программу TunSafe for Windows [16] — это клиент Wireguard для Windows.
Правой кнопкой мышки создаем текстовый файл на рабочем столе.
Дальше возвращаемся к терминалу Putty и отображаем содержимое конфигурационного файла нужного пользователя, как это описано на шаге 4.2.1.
Далее выделяем правой кнопкой мыши текст конфигурации в терминале Putty, по окончании выделения он автоматически скопируется в буфер обмена.
Поле этого возвращаемся к созданному нами ранее на рабочем столе текстовому файлу, и вставляем в него из буфера обмена текст конфигурации.
Сохраняем файл, с расширением .conf (в данном случае с именем london.conf
)
Далее необходимо импортировать файл конфигурации в программу TunSafe.
Выбрать этот файл конфигурации и подключится, нажав кнопку Connect.
Чтобы проверить успешность подключения через VPN тоннель, необходимо открыть браузер и перейти на сайт https://2ip.ua/ru/ [17]
Отображаемый IP адрес должен совпадать с тем, который мы получили на этапе 2.2.3.
Если это так, значит VPN тоннель работает успешно.
Из терминала в Linux можно проверить свой IP адрес, введя команду:
curl http://zx2c4.com/ip
Или можно просто зайти на порнохаб, если вы находитесь в Казахстане.
Автор: Alexey Chernyavskiy
Источник [18]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/314973
Ссылки в тексте:
[1] Всеобщей декларации прав человека: https://www.un.org/ru/documents/decl_conv/declarations/declhr.shtml
[2] VPN сервис: https://ru.bmstu.wiki/VPN_(Virtual_Private_Network)
[3] Wireguard: https://www.wireguard.com/
[4] Amazon Web Services: https://aws.amazon.com/ru/
[5] Ubuntu Server 18.04 LTS: https://www.ubuntu.com/server
[6] бесплатный уровень использования: https://aws.amazon.com/ru/free/faqs/
[7] https://wireguard.isystem.io: https://wireguard.isystem.io
[8] Скрипты автоматической установки Wireguard на AWS: https://github.com/isystem-io/wireguard-aws
[9] Яндекс.Деньги: https://money.yandex.ru/cards/virtual
[10] Qiwi кошелек: https://qiwi.com/cards/qvc
[11] https://speedtest.net: https://speedtest.net
[12] динамических портов: https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BF%D0%BE%D1%80%D1%82%D0%BE%D0%B2_TCP_%D0%B8_UDP
[13] SSH: https://ru.wikipedia.org/wiki/SSH
[14] Putty: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
[15] установить из официального магазина GooglePlay: https://play.google.com/store/apps/details?id=com.wireguard.android
[16] TunSafe for Windows: https://tunsafe.com/download
[17] https://2ip.ua/ru/: https://2ip.ua/ru/
[18] Источник: https://habr.com/ru/post/448528/?utm_source=habrahabr&utm_medium=rss&utm_campaign=448528
Нажмите здесь для печати.