Создание WireGuard VPN собственными руками, которым можно делиться с друзьями
О протоколе WireGuard
WireGuard — это довольно свежий протокол VPN, который был разработан в 2016 году. Он использует протокол шифрования Curve25519 и был разработан для быстрой и безопасной передачи данных между узлами.
Вся настройка не должна занять более 10 минут, в результате вы получите собственный сервис, который не имеет ограничений на количество активных подключений, можнопорадовать себя использованием ChatGPT (проверено, с такой настройкой работает!) или девушку легким доступом в инсту, далее как фантазия позволяет!
Вся работа производится через SSH-подключение в macOS/Linux-системах. Для пользователей Windows можно использовать PuTTY (Загрузить: сайт загрузки клиента) по аналогии с приведенными здесь примерами.
1) Аренда сервера
Для начала нам потребуется сервер в аренду, именно на нем мы и будем «творить» наш собственный VPN-сервис.
У меня много различных серверов для собственных задач у разных поставщиков хостинг-услуг, но хочется иметь большой выбор стран для создания такого сервиса, именно поэтому я использую PQ. (ссылка на хостера)
У них более 30 различных дата-центров по низкой стоимости, есть из чего выбрать. Кстати, не торопитесь сразу переносить на него все свои сайты, я могу рекомендовать данного хостера именно как поставщика услуг серверов для VPN, как своего основного хостера я его использовать не планирую.
Процесс регистрации максимально простой и похож на аналогичные сервисы. Регистрируемся, заказываем нужную конфигурацию в разделе виртуальных серверов и оплачиваем. Для оплаты доступно множество способов!
В параметрах ОС сервера выбираем Ubuntu 20... — 22.04, если выбрать другой тип ОС, команды настройки будут отличаться от описанных ниже.
Для наших нужд выбираем самый дешевый тариф!
Далее на почту придет письмо с параметрами подключения к серверу, нам потребуются IP-адрес и пароль суперпользователя (который мы сразу после подключения поменяем на свой более удобный и лучше запоминающийся).
2) Первое подключение и изменение пароля
Сервер мы получили, давайте приступим к настройке.
Нам нужно открыть Терминал и ввести следующее (если вы на Windows, ссылку на клиент для Windows и подробное руководство я указал выше):
Перед вводом пароля у вас может возникнуть запрос на установку соединения при первом подключении к новому адресу. Соглашаемся вводом «yes» и переходим к вводу пароля. Можно просто скопировать и вставить пароль из письма с параметрами подключения к серверу, при вводе или вставке, пароль никак не отображается на экране, даже маской введенных символов.
Вы увидите информационные сообщения сервера после успешной авторизации.
Для того, чтобы сразу изменить пароль администратора, нужно ввести в терминале команду (здесь и далее после ввода команды потребуется нажимать клавишу Enter):
Два раза ввести новый пароль, после этого вы увидите сообщение, что пароль успешно изменен.
Все, теперь можно подключаться с новым паролем к нашему серверу. Сейчас нам это не нужно, так как мы остались авторизованы текущей сессией, но на будущее вы можете легко подключиться к серверу с собственным паролем.
3) Проверка принадлежности IP-адреса сервера (не обязательно, можно пропустить)
Давайте убедимся, что купленный сервер находится в нужной нам локации. Сделать это можно командой в терминале:
После небольшого ожидания, вы увидите примерно следующий вывод, как на скриншоте:
4) Установка и настройка UFW
В принципе, данный шаг также не обязателен, но у меня привычка на каждом новом сервере устанавливать и настраивать файрвол. Вы можете смело пропустить этот шаг и перейти в шагу № 5.
После ввода и подтверждения последней команды нас предупредят, что текущее соединие может быть разорвано. Так как мы разрешили подключение через ssh, смело соглашаемся путем ввода ’y’ и переходим к следующему шагу.
Как мы видим на скриншоте, файрвол был успешно настроен, а мы остались подключены к текущей сессии.
5) Установка docker и docker compose
Переходим к основной части настройки, тут по прежнему нет ничего сложного и все максимально автоматизировано без дополнительных «плясок с бубном».
Устанавливаем docker:
После выполнения последней команды, мы должны увидеть следующую информацию, что docker-демон запущен и активен.
Устанавливаем docker compose:
6) Проверить скорость канала / optional
Этот шаг опциональный, его можно было сделать до основных настроек. На самом деле я про него не забыл, а перенес практически в конец, чтобы лишний раз не дергать обновление пакетов перед установкой докера.
Итак, если мы хотим проверить скорость интернет на полученном канале, то достаточно выполнить следующую последовательность команд в терминале:
Полученной информации должно быть достаточно, чтобы понять с какой скоростью наш сервер держит соединение к ближайшему серверу.
У приложения для измерения скорости сети куда больше возможностей и настроек, но в данном контексте они нам не важны.
7) docker-compose.yml
Теперь перейдем к созданию файла конфигурации для нашего VPN. Делать мы это будем с помощью специального файла для docker compose.
Нам потребуется установить редактор nano и внести в него некую информацию.
Выполните следующую команду:
Вы должны увидеть открытый файл конфигурации для записи. Внесите в него следующее содержимое:
Выглядит это примерно так:
После этого мы должны сохранить содержимое на диск. Сделать это можно комбинацией клавиш Ctrl + X, затем нужно подтвердить согласие на модификацию путем ввода ’y’ и последующим нажатием клавиши enter.
Чтобы проверить, что наш созданный файл корректно записал содержимое, мы может сделать быстрый вывод листинга в терминал при помощи команды:
На этом мы почти закончили, осталось запустить наш сервер командой:
Как мы видим на скриншоте, наш контейнер успешно создался, запустился и транслирует порт 51820 для входящих подключений.
Давайте проверим, что наши файлы конфигураций успешно созданы и мы может выкачать их к себе на компьютер:
Мы должны получить листинг всех папок и файлов в указанной директории. Проверим, что у нас создались папки с именами пиров peer1...peer20, именно они хранят параметры подлючения для наших клиентов.
8) Выкачиваем конфиги в папку Загрузки
Для того, чтобы быстро выкачать все нужное на свой компьютер, мы можем воспользоваться FTP-клиентом с поддержкой подключения по протоколу SFTP, а можем просто в терминале (другая сессия, не из под сервера, а своего компьютера) выполнить:
Будет примерно такой вывод логов загрузки:
После этого мы можем открыть нашу загруженную папку configs и проверить содержимое.
Все, конфигурация загружена, мы можем подключаться. Имейте ввиду, что каждый peer — это отдельный клиент. Если вы подключите несколько пользователей на один peer-конфиг, подключение будет корректно работать только у последнего подключившегося пользователя.
9) Рекомендуемые клиенты для использования
Тут для меня все сложно, с одной стороны есть open-source бесплатные клиенты WireGuard для всех возможных платформ и ОС, но я не могу сказать, что работают они без нареканий, лично у меня с ними часто возникали проблемы. Вы можете поискать альтернативный клиент под названием Passepartout, его базовой функциональности достаточно для бесперебойной работы + он умеет восстанавливать соединение после выхода из режима гибернации. Этот клиент точно доступен для apple-устройств, возможно, что найдется и для других устройств. Это не реклама, это мой основной клиент, который я могу рекомендовать для использования. Во всяком случае, у меня он работает в случаях, когда основной клиент приходится по нескольку раз переподключать.
10) Заключение
В заключение, настройка собственного WireGuard сервиса может показаться немного сложной, особенно для новичков в области сетевых технологий. Однако, благодаря простоте и эффективности этого протокола, вы можете с легкостью настроить свою собственную защищенную сеть, которая будет обеспечивать высокий уровень безопасности и конфиденциальности для ваших устройств и данных, а также распространить готовые файлы конфигурации среди близких вам людей.
Надеюсь, что данная статья помогла вам настроить ваш собственный WireGuard сервис и добиться желаемого результата.
P. S.: Ссылка на хостера в статье партнерская, чего уж греха таить. Кому то все равно, а я попробую немного сохранить денежек для своих следующих проектов у данного хостера. Всем спасибо за внимание, надеюсь материал кому-либо пригодится! Если принципиально, вы можете перейти/найти этого хостера через google.
Еще раз, ссылка на используемого хостера.
P. S.: Редактор кода не сработал должным образом, пришлось вставить команды для выполнения в виде картинок!