Установка Wireguard

August 15, 2019, 5:59 am LINUX SERVER
blog-header-image

В данной заметке я расскажу вам про то, как раскатать свой собственный VPN сервер на VDS. В качестве VPN будет использоваться WireGuard, потому что это самая передовая технология VPN которая даёт наибольшую производительность в условиях ограниченных ресурсов. Данная статья не ставит целью разобраться с работой с WireGuard, лишь установить максимально быстро и просто.

Вот что обещает производитель моего мобильного роутера:

openvpn_vs_wireguard

Поиск vds

Первое, что нужно сделать, это найти подходящего хостера для покупки VDS. В этом могут помочь специальные сервисы, такие как:

Когда-то давно, когда я выбирал себе хостера, я наткнулся на следующий список компаний принимающих к оплате BTC. Я предпочел использовать HostSailor.

Установка

  1. Берем самый дешёвый vps с приемлемым количеством трафика, тут важный момент, для корректной работы сервиса нужно будет работать с модулями ядра линукса это значит что подайдёт не любой тип виртуализации. OpenVZ - не подходит так как это виртуализация на уровне ядра, нам нужна - KVM, это полноценная виртуалка которая позволит нам запустить хоть шиндус на сервере.

  2. Ставим debian 11.

Все шаги между этими 2мя пунктами я пропущу, т.к. у любого хостера навалом подобной информации в справке.

Настройка сервера (Debian)

  1. Подключится через ssh под рутом (ssh admin@<YOU IP>) и обновить систему.
apt update
apt upgrade
apt install net-tools sudo wireguard-tools mawk grep iproute2 qrencode iptables

Если сервер с очень маленьким количеством ОЗУ, например 256 или 512 мб, то попытка обновления системы может повалить ее, так что не вводим apt upgrade, выбора все равно нет.

  1. Создать нового пользователя.

Это необходимо для того чтобы, было невозможно подключится к серверу из под рута.

useradd -m -s /bin/bash admin
passwd admin
usermod -aG sudo admin
  1. Проверить какие сервисы висят на портах.

Хостеры часто любят поставить какой-то софт при установке, например Apache. Наша задача удалить его весь, т.к. он потенциальная дыра в безопасности. В результате должен остатся только sshd.

netstat -tulpn

Для отключения лишних сервисов необходимо сделать следующее :

/etc/init.d/apache2 stop
update-rc.d apache2 disable
  1. Для увелечения безопасности настроить ssh:
nano /etc/ssh/sshd_config
  • Сменить порт:
    #Port 22  # ---> раскомментировать, сменить на любое число (1024 до 64000)
  • Ищем параметр PermitRootLogin и ставим no
  • Ищем параметр PermitEmptyPasswords и ставим no
  • Запретить доступ по ssh всем кроме user: добавить внизу
AllowUsers admin
  • Перезапускаем sshd и реконектимся.
service sshd restart

Здесь нужно быть крайне внимательным, в случае ошибки в предыдущих пунктах или утери пароля, вы не сможете больше получить доступ к северу. Для коннекта нужно сделать следующее:

ssh -p <PORT> admin@<YOU IP>

Установка WIREGUARD

Здесь нe большое отступление. Мы бы, конечно, могли бы установить VPN с нуля и настроить все ручками, как например тут и тут, но сегодня наша задача получить готовое, а главное удобное для использования решение а не приисполниться в своем познании, поэтому воспользуемся готовым скриптом, который разрулит всю рутину за нас.

  1. Скачиваем и запускаем скрипт:
wget https://raw.githubusercontent.com/burghardt/easy-wg-quick/master/easy-wg-quick
chmod +x easy-wg-quick
./easy-wg-quick user_1
sudo wg-quick up ./wghub.conf

Ввод предпоследний команды настроит конфиг для первого клиента с именем user_1. Конфиг будет доступен в виде:

  • конфиг файла - wgclient_user_1.conf.
  • qr код - wgclient_user_1.qrcode.txt, его можно вывести в терминале командой cat wgclient_user_1.qrcode.txt
  • uci - wgclient_user_1.uci.txt

После добавления нового клиента нужно обязательно перезагрузить интерфейс:

sudo wg-quick down ./wghub.conf
sudo wg-quick up ./wghub.conf

UDP: Дальнейшее было на debian 10, на Debian 11 проблема не воспроизвелась.

После чего я столкнулся с проблемой, при попытки запустится выдавалось такое сообщение:

admin@my-vpn:~$ sudo wg-quick up ./wghub.conf
[#] ip link add wghub type wireguard
RTNETLINK answers: Operation not supported
Unable to access interface: Protocol not supported
[#] ip link delete dev wghub
Cannot find device "wghub"

Также попытка подгрузить модуль wireguard, тоже не успешна:

admin@my-vpn:~$ sudo modprobe wireguard 
modprobe: FATAL: Module wireguard not found in directory /lib/modules/4.19.0-6-amd64

Решение тут:

sudo apt install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//')
sudo wg-quick up ./wghub.conf

После установки хедеров, вводим команду запуска сервера и наши конфиги начинают работать.

Клиенты

Интересные ссылки:

Next Post