Добрый день вем, кто оказался на данном сайте. Безопасность работы в сети играет важную роль в нашей повседневной жизни. А использование vpn особенно в публичных местах так вообще можно назвать обязательным пунктом. Если вы к примеру, выходите в сеть в каком нибудь кафе, где есть бесплатный Wi-Fi то шифрования вашего трафика обязательно. Так как, ваш трафик могут перехватить, и в итоге все ваши данные окажутся у злоумышленников. И это всего лишь один из примеров, когда VPN становиться обязателен к использованию. Давайте разберемся, как можно поднять свой собственный VPN и не волноваться о безопасности в сети. Для начала нужно арендовать VPS сервер. Найти дешевый VPS сервер в наше время не представляет проблемы. После того как нашли VPS сервер, на нем нужно поднять VPN. Решений тут множество, но мы остановимся на Wireguard. Первое, он весьма шустрый, второе, имеет хорошее шифрование, третье, легок в настройке и четвертое, кроссплатформенный.
Установка Wireguard
И так, подключаемся к нашему серверу по ssh и подключаем репозитории Wireguard. Установка будет одинакова как для Debian так и для Ubuntu. Разница будет лишь в репозиториях. Для Debian вводим следующую команду, которая подключит к нашей системе репозиторий “sid” откуда мы и установим Wireguard. После этого репозиторий будет заморожен для дальнейшего использования, если можно так выразиться:
Debian
echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
Ubuntu
Для Ubuntu существует ppa репозиторий, его то мы и подключим. Для этого нужно ввести следующую команду:
add-apt-repository ppa:wireguard/wireguard
Ну а теперь, давайте приступим к установке wireguard.
apt install wireguard-dkms wireguard-tools

В процессе установки собирается модуль ядра, после установки, давайте посмотрим все ли загрузилось. Для этого вводим команду:
modprobe wireguard && lsmod | grep wireguard
Если все впорядке, то вы увидите следующее сообщение:

Настройка Wireguard
После чего создаем отдельную директорию и переходим в нее, при помощи команд:
mkdir ~/wireguard
cd ~/wireguard
umask 077


Теперь давайте создадим ключи. Команда сгенерирует два ключа, открытый и закрытый. Скопируйте их и сохраните, они нам понадобятся в дальнейшем:
wg genkey | tee server_private_key | wg pubkey > server_public_key
Просмотреть созданные ключи можно при помощи команды “cat”:
cat server_private_key
cat server_public_key


Давайте включим форвардинг, для этого набираем в терминале команду:
nano /etc/sysctl.conf
И в открывшемся окне находим закомментированный пункт “net.ipv4.ip_forward=1”. Нам нужно его раскомментировать и сохранить отредактированный файл:

После проведенных манипуляций введите команду “sysctl -p” для применения наших настроек:
sysctl -p

Теперь давайте создадим конфигурационный файл Wireguard. Для этого выполним команду:
nano /etc/wireguard/wg0.conf
Изначально в нем не чего не будет, нам же предстоит внести в него свои параметры работы Wireguard. Содержимое “wg0.conf” будет следующим:
[Interface]
Address = 10.8.0.1/24
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

Давайте разберемся, что здесь написано и что вам стоит отредактировать на ваше усмотрение. И так, начнем с Address.
Address – адрес виртуального интерфейса wg0
PostUp и PostDown – команды которые управляют iptables. Тут так же стоит заметить, что опция “eth0” у вас может отличаться. Что бы узнать имя интерфейса, наберите команду “ip a”
К пунктам SERVER_PRIVATE_KEY и CLIENT_PUBLIC_KEY мы еще вернемся чуть позже.
ListenPort – порт для работы VPN
AllowedIPs – виртуальные IP адреса клиентов для подключения к серверу
Сохраняем наш конфиг и переходим к следующему шагу. А следующим шагом будет настрока вашего копьютера или ноутбука для работы с нашим сервером.
Установка клиента Wirefuard
Открываем терминал на нашем рабочем компьютере и подключаем репозитории, как мы делали вначале статьи. И точно так же устанавливаем необходимые пакеты для работы Wirefuard.
Debian
echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
Ubuntu
add-apt-repository ppa:wireguard/wireguard
Установка
apt update
apt install wireguard-dkms wireguard-tools

После чего нам нужно точно так же сгенерировать ключи на сервере:
wg genkey | tee client_private_key | wg pubkey > client_public_key
Теперь давайте посмотрим на наши ключи при помощи уже знакомой нам команды “cat”. Их так же надо сохранить, они нам очень скоро понадобятся:
cat client_private_key
cat client_public_key


Создаем конфигурационный файл на нашем компьютере со следующим содержимом:
nano /etc/wireguard/wg0-client.conf
И вписываем следующую конфигурацию:
[Interface] Address = 10.8.0.2/32 PrivateKey = CLIENT_PRIVATE_KEY
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_REAL_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 21
В полях “CLIENT_PRIVATE_KEY” и “SERVER_PUBLIC_KEY” вписываем ключи которые создавали на нашем сервере. А в поле “SERVER_REAL_IP” вписываем реальный ip адрес нашего сервера и через двоеточие указываем порт.

Финальная настройка
Теперь возвращаемся к серверу и производим финальную настройку. Нам осталось лишь вписать недостающие ключи в конфиг. Для этого вводим команду:
nano /etc/wireguard/wg0.conf
И вписываем ключи в поля “SERVER_PRIVATE_KEY” и “CLIENT_PUBLIC_KEY”, в итоге у вас должно получится следующая конфигурация:

Задаем права и запускаем службу Wireguard при помощи следующих команд:
chmod 600 /etc/wireguard/wg0.conf
systemctl enable wg-quick@wg0.service
systemctl restart wg-quick@wg0.service
Проверяем что все запустилось введя в терминале команду:
wg

Подключиться можно при помощи команды “wg-quick up wg0-client”, а отключиться от VPN – “wg-quick down wg0-client”. При необходимости управление службой можно осуществлять при помощи “systemd”
systemctl restart wg-quick@wg0-client.service


В самом низу размещу ссылку на скачивания краткой инструкции в текстовом формате. Как видите, все запустилось и работает, чего мы и добивались. В дальнейшем можно скачать приложение на телефон и уже с телефона коннектится к нашей VPN. Для этого проделываем ту же операцию на сервере – создаем ключи:
wg genkey | tee mobile.priv | wg pubkey > mobile.pub
Создаем config
nano mobile.conf
Вписываем конфигурацию в созданный “mobile.conf”
[Interface]
Address = 10.8.0.2/32
PrivateKey = mobile.priv
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_REAL_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 21
После чего сохраняем файл и отправляемся в основной конфигурационный файл, что бы добавить еще одного
nano /etc/wireguard/wg0.conf
Вписываем в самый низ следующие строчки:
[Peer]
PublicKey = mobile.pub
AllowedIPs = 10.8.0.2/32
Ну а теперь можно с помощью qr кода передать конфигурацию на наш телефон, для этого в терминале набираем команду:
qrencode -t ansiutf8 < mobile.conf
И в вашем терминале появится qr код, с помощью которого передаем конфигурацию для мобильной версии Wireguard. После чего нужно перезагрузить на сервере Wireguard:
systemctl restart wg-quick@wg0.service
Создаем config
nano bomile.conf
Исправьте опечатку 🙂 название файла должно быть mobile.conf
соответственно команда должна быть такая: nano mobile.conf
Спасибо, щас исправлю