Думаю, что не стоит в качестве предисловия к статье объяснять читателям и подписчикам канала зачем нужен VPN. Популярность VPN-сервисов возросла на территории нашей страны до невообразимых высот, а каждый второй популярный блогер в каждом третьем видео рекламирует очередной сервис, «гарантирующий анонимность и безопасность». Предлагаю вам действительно сделать использование VPN безопасным по-настоящему, подняв его на собственном сервере.
Помните, как РКН хотел заблокировать Телеграм, но ничего не получилось? Война Телеги и РКН закончилась поражением последнего и теперь мы можем спокойно пользоваться мессенджером. Например, можно подписаться на обновления канала Просто Код и получать уведомления о новых заметках раньше, чем их пришел Дзен.
Что понадобится для установки?
Само собой сервер с Linux на борту. Это может быть как собранный вами агрегат, шуршащий головками жесткого диска в шкафу или под столом, так и виртуальный сервер, приобретенный у провайдера. Если выбрали первый вариант, то милости прошу в комментарии к одной из заметок на канале, где подписчики поделились своими сборками и конкретной экономикой по созданию.
Зачем нужен собственный Linux-сервер, где и как его создать?
Если ваш выбор, как и мой, пал на виртуальный сервер, то можете перейти по ссылке ниже, зарегистрировать в Timeweb и после оплаты услуг от одного месяца мы вместе получим до 2000 рублей на счет для последующих платежей.
Создать собственный сервер на Timeweb
Подключаемся к серверу
Подключение происходит по протоколу SSH, данные для доступа хостинг-провайдер выдает после создания машины, обычно это логин, пароль и IP-адрес сервера. Подключение осуществляется через терминал следующей командой:
ssh <имя_пользователя>@<IP-адрес сервера>
Чтобы проще было подключаться рекомендую добавить свой публичный SSH-ключ на созданный сервер. Про создание SSH-ключей я говорил в заметке на канале.
Переносим SSH-ключи с одного компьютера на другой
Чтобы загрузить публичный ключ на сервер можно воспользоваться, как терминалом, так и панелью управления сервером. Если вы, как и я, выбрали Timeweb, то сделать это проще простого. Как видите, справа расположена подробная инструкция по тому, как ключ создать и как добавить в панель управления.
Для добавления ключа вручную нужно в терминале ввести:
ssh-copy-id -i <путь_до_публичного_ключа> <имя_пользователя>@<IP-адрес сервера>
Обычно ключи SSH расположены в домашней директории пользователя в папке .ssh. Публичный ключ по-умолчанию называется id_rsa.pub, не перепутайте его с закрытым (приватным) ключом, которым ни с кем нельзя делиться и никуда не нужно загружать.
После добавления ключа на сервер вам не нужно будет вводить пароль при подключении, да и вообще после такой процедуры рекомендуется отключить авторизацию по SSH-протоколу на основе пары логин/пароль.
Почему Wireguard?
VPN-серверов очень много, каждый найдет что-то свое. Но я остановился на Wireguard, о котором впервые услышал от авторов двух каналов на Youtube - Johe News и Диджитиализируй. В видео они подробно рассказывают о преимуществах этого VPN-сервера. Если сказать кратко, то первым преимуществом является то, что скорость соединения при подключении не сильно падает, вторым - то, что сервер не «сжирает» много системных ресурсов. Ссылки на видео я оставил выше, можете перейти и посмотреть подробно суть каждого ролика.
Ручной установки НЕ БУДЕТ
В обоих видео происходила ручная установка и настройка вначале серверной части Wireguard, а потом и клиентской. Для тех, кто хочет подробно разобраться в том, как все работает и за что отвечает каждая строка конфигов, такой способ подойдет идеально. Мне же нужно сделать так, чтобы сервер встал без моего посильного участия и позволил легко получить конфигурационный файл для клиента. Потому я нашел готовый скрипт, который нужно только скачать и запустить.
Повторюсь еще раз: если вы желаете поставить все вручную и разобраться в деталях, то переходите по ссылкам на видео, которые я оставил выше. Если же вам, как и мне, нужно просто получить результат, не вдаваясь в суть, то читайте дальше.
Поднимаем сервер Wireguard
Скрипт разработал пользователь под именем Stanislas и разместил на своем Github. На странице проекта говорится, что существует поддержка таких дистрибутивов, как Ubuntu (от версии 16.04 и выше), Debian (от версии 10 и выше), Fedora, CentOS, AlmaLinux, Arch Linux, Oracle Linux. Чтобы скачать скрипт на сервер открываем терминал, подключаемся к серверу и вводим там команду:
git clone https://github.com/angristan/wireguard-install.git
В домашней директории появится папка wireguard-install, где лежит скрипт wireguard-install.sh. Его нужно сделать исполняемым:
chmod +x wireguard-install.sh
После остается лишь запустить скачанный скрипт и он произведет все необходимые действия по установке в систему серверной части Wireguard.
./wireguard-install.sh
Как видите, установка представляет собой просто нажатие кнопки Enter и ввода имени клиентского конфигурационного файла. Единственный момент: на этапе, когда скрипт спрашивает о DNS резолверах (First DNS resolver и Second DNS resolver), то некоторые рекомендует в первом случае указать адрес 1.1.1.1, во втором - 8.8.8.8. Но я оставил все по-умолчанию. В конце установки присутствует QR-код, который можно использовать для настройки клиента.
Чтобы добавить клиента нужно заново запустить скрипт. Также при повторном запуске доступны различные опции.
Я создал два конфигурационных файла - для компьютера и для смартфона. Начнем с настройки смартфона, так как там все очень просто.
Устанавливаем клиент Wireguard на смартфон
Нужно установить клиент Wireguard из магазина приложений, который зависит от вашей платформы. У меня Android, потому установил приложение из Play Market. Если не закрыли QR-код, то запускаем Wireguard и сканируем изображение.
Если сканировать QR-код уже не получается, то скачиваем конфигурационный файл, переименовываем во что-нибудь покороче (так как у мобильного приложения, судя по всему, свои ограничения на название подключения), закидываем на телефон (я это сделал через Избранное в Телеграме) и загружаем в Wireguard-клиенте.
Устанавливаем клиент Wireguard на компьютер или ноутбук
Для начала нужно установить клиентскую часть на свой дистрибутив. Установка слегка отличается в зависимости от дистрибутива, но я приведу команды для классической троицы - Ubuntu (и все, что DEB-базе), Fedora (и все, что на RPM-базе) и Archlinux.
- Ubuntu (Debian/Linux Mint/etc)
sudo add-apt-repository ppa:wireguard/wireguard
sudo apt update
sudo apt install wireguard
- Fedora
sudo dnf install wireguard-tools
- Archlinux
sudo pacman -S wireguard-tools
Так как у меня Archlinux, то буду показывать настройку на примере этой системы.
После установки нужно скопировать конфигурационный файл для компьютера в папку по пути /etc/wireguard. Во время копирования я переименую файл, чтобы было проще потом включать и выключать VPN-соединение. Конфиги я положил внутрь папки VPN-conf в домашней директории.
cd VPN-conf
sudo cp wg0-client-prosto-code.conf /etc/wireguard/vpn.conf
Теперь осталось только включить VPN-соединение, для этого вводим команду
wg-quick up vpn
Название соединения соответствует имени конфигурационного файла. Чтобы отключиться от VPN-сервера вводим:
wg-quick down vpn
Также существуют графические утилиты, которые позволяют работать с Wireguard в привычном режиме, помимо этого есть дополнения для системных менеджеров подключений. Дабы не заморачиваться с этими способами, я показал универсальный, который прокатит на любом дистрибутиве с любой средой рабочего окружения. Чтобы не вводить команды каждый раз, можно добавить алиас. У меня vpnup включает соединение, vpndown отключает. Про то, как настроить алиасы для работы в терминале и чем они удобны я рассказывал в одной из статей на канале.
Ускоряем работу в терминале при помощи алиасов
Пост получился объемным и, как мне кажется, полезным. Если вы считаете также, то обязательно поставьте лайк и подпишитесь на канал, если еще не сделали этого. Также напишите в комментариях каким VPN-сервисом пользуетесь вы и чем он привлек ваше внимание.
Чтобы не пропустить новые заметки стоит подписаться на обновления канала Просто Код в Телеграме. Так вы будете получать уведомления о выходе постов раньше, чем об этом сообщит Дзен.