0

Настройка Wireguard VPN на своем сервере

Настройка серверной части

После успешного подключения я напишу несколько команд и описание того что они производят для понимания процесса:

Обновляем список пакетов в репозиториях

apt update

Обновим сами пакеты

apt upgrade -y

Установим пакет wireguard

apt install -y wireguard

Наша конфигурация будет хранится в каталоге /etc/wireguard/ перейдем в каталог:

cd /etc/wireguard/

Нам потребуется открытый и закрытый ключ для нашего сервера. Сгенерируем их, предварительно выставив правильные права при создании файлов и каталогов командами:

umask 077
wg genkey > privatekey
wg pubkey < privatekey > publickey

Выставим права на приватный ключ:

chmod 600 privatekey

Перед созданием конфигурационного файла нам потребуется наименование нашего сетевого интерфейса. Для того что бы его узнать используем команду:

ip a

Нас интересует интерфейс с IP-адресом, Который используется для текущего подключения. Вероятно, у вас он будет называться ens3, но может быть и другое название.

Настройка Wireguard VPN

Также нам понадобятся открытый и закрытый ключи. Для их вывода я использую tail

tail privatekey publickey

Выглядит это так:

Также нам понадобятся открытый и закрытый ключи

Для редактирования вы можете использовать любой текстовый редактор Linux. В примере мы будем использовать nano. Чтобы установить его нужно выполнить команду:

apt install -y nano

Редактируем конфигурационный файл:

nano /etc/wireguard/wg0.conf

Примечание:

что бы сохранить файл используем комбинацию клавиш ctrl+o

для выхода ctrl+x

Он должен выглядеть следующим образом:

[Interface]
PrivateKey = [ ваш приватный ключ ]
Address = 10.30.0.1/24
ListenPort = 51928
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o [ имя интерфейса ] -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o [ имя интерфейса ] -j MASQUERADE

В моем случае он выглядит вот так:

Редактируем конфигурационный файл

Включаем ip forwarding

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

Запускаем wireguard службу:

systemctl start wg-quick@wg0.service

Если возникла ошибка, скорее всего формата: iptables: command not found , то просто устанавливаем недостающий компонент и заново запускаем службу:

apt install iptables

Если мы хотим чтобы служба запускалась после перезагрузки сервера то выполняем:

systemctl enable wg-quick@wg0.service

Для того чтобы посмотреть состояние службы:

systemctl status wg-quick@wg0.service

Статус должен быть active как на скриншоте:

Статус должен быть active

Если Вы внимательно следовали нашей инструкции, то на данном этапе, у Вас создано все необходимое для того, чтобы серверная часть VPN Wireguard работала. 

Настройка Wireguard-клиента 

Осталось настроить клиентскую часть Wireguard. Для примера и простоты я сгенерирую ключи для клиентской части так же на сервере. Но в целях безопасности было бы правильнее генерировать ключи на стороне клиента.

Использую команды для генерации:

wg genkey > mypc_privatekey
wg pubkey < mypc_privatekey > mypc_publickey

Также сгенерирую ключи чтобы использовать VPN и на телефоне:

wg genkey > myphone_privatekey
wg pubkey < myphone_privatekey > myphone_publickey

Следует заметить что все это требуется производить находясь в каталоге /etc/wireguard/

Можно выполнять и в другом каталоге. Но для простоты инструкции выполняем в /etc/wireguard/

Командой ls выводим список файлов в каталоге. У меня получилось вот так:

Командой ls выводим список файлов в каталоге

Выведем открытые ключи на экран. Они понадобятся нам для того, чтобы добавить узлы в нашу сеть:

tail mypc_publickey myphone_publickey

У меня это выглядит так:

Выведем открытые ключи на экран

Отредактируем наш конфигурационный файл:

nano wg0.conf

Добавим строки:

[Peer]
PublicKey = [ mypc_publickey ]
AllowedIPs = 10.30.0.2/32

[Peer]
PublicKey = [ myphone_publickey ]
AllowedIPs = 10.30.0.3/32

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

Теперь конфиг файл выглядит следующим образом

Сохраним файл и перезапустим нашу службу:

systemctl restart wg-quick@wg0

Проверим что все прошло успешно:

systemctl status wg-quick@wg0

Статус должен быть active

Перезагрузку службы требуется делать каждый раз после редактирования файла конфигурации сервера (wg0.conf)

Далее создадим конфигурации для клиентов (в моем случае мой пк и телефон). Я сделаю это также на сервере.

nano mypc.conf
[Interface]
PrivateKey = [ приватный ключ mypc_privatekey ]
Address = 10.30.0.2/32
DNS = 8.8.8.8

[Peer]
PublicKey = [ публичный ключ сервера publickey ]
Endpoint =[ ip адрес сервера ]:51928
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20

В поле Endpoint можно увидеть IP- адрес сервера – это IP-адрес, по которому мы подключались по SSH. Чтобы увидеть интерфейсы и адреса можно использовать команду ip a

Настройка Wireguard для телефона

Аналогичную конфигурацию создаем для нашего телефона. Только требуется изменить адрес. Для ПК был 10.30.0.2/32, а в конфигурации для телефона сделаем 10.30.0.3/32. Так же если захотим использовать VPN на других устройствах то при создании конфигураций следует добавлять другие адреса в поле Address в конфигурационных файлах и файле конфигурации сервера wg0.conf поле AllowedIPs.

У меня файлы выглядят вот так:

mypc.conf

Настройка Wireguard для телефона

myphone.conf

Для подключения устанавливаем клиент Wireguard

Для подключения устанавливаем клиент Wireguard https://www.wireguard.com/install/

В приложении на Windows добавляем новый тоннель и вписываем конфигурацию которую создали в файле mypc.conf

В приложении на Windows добавляем новый тоннель и вписываем конфигурацию которую создали в файле mypc.conf

Запускаем туннель и переходим в браузер на сайт который отображает наш адрес

Запускаем туннель и переходим в браузер на сайт который отображает наш адрес

Чтобы удобно добавить VPN на телефон, на сервере установим программу для генерации qr кодов:

apt install -y qrencode

Находясь в каталоге с конфигурацией выполним:

qrencode -t ansiutf8 -r myphone.conf
Чтобы удобно добавить VPN на телефон, на сервере установим программу для генерации qr кодов

Перейдем в приложение Wireguard на телефоне, нажмем + для создания нового тоннеля, выберем сканировать QR-код, отсканируем его, включим VPN. Далее проверим с помощью любого ресурса, отображающего выходной IP-адрес, что у нас отображается адрес нашего сервера.

Перейдем в приложение Wireguard на телефоне
проверим с помощью любого ресурса, отображающего выходной IP-адрес

Готово! Настройка Wireguard выполнена!

Облачная платформа

Свежие комментарии

Подписка

Лучшие статьи

Рубрики

Популярное

1

VPN кластер.

Отказоустойчивый VPN Пошаговое руководство, как на базе OpenVPN настроить кластер для большого количества клиентов, используя виртуальную частную сеть. Сможете защитить активность клиентов
3

OpenVPN сервер

ОpenVPN — это бесплатное и общедоступное программное обеспечение для систем типа Linux/Unix. Таким образом осуществляется двух или трех уровневая OSI защита сетевого подключения
Previous Story

Установка Zabbix 7 c NGINX + PostgreSQL + TimescaleDB на Ubuntu Server или Debian

Next Story

How to Install Proxmox Virtual Environment on Debian 11

Latest from Blog

Docker: собираем веб сервер

Ниже предоставлен готовый набор окружения веб сервера на базе контейнеров Docker. Включает в себя MySQL, PHP, NGINX, composer, SSL сертификаты и механизм резервного копирования в облако. Код доступен на github. Компоненты сервера Для

Как с помощью docker запустить окружение для разработки nginx + php + mysql

Создание проекта Compose Подготовка контейнерной среды разработки веб-приложения отождествляется с созданием проекта Compose. Для этого начинать нужно с создания каталога проекта Compose.Его имя – new_compose_project. Создадим каталог, после чего перейдем к нему. Введем в

обновить Debian 11 до Debian 12 Bookworm

Подготовка системы к обновлению Перед обновлением рекомендую ознакомиться с официальным руководством Upgrades from Debian 11 (bullseye). Мои дальнейшие действия соответствуют некоторым рекомендациям из этого документа. В первую очередь проверьте все бэкапы. И по

Мониторинг докер-хостов, контейнеров и контейнерных служб

Я искал self-hosted мониторинговое решение с открытым кодом, которое может предоставить хранилище метрик, визуализацию и оповещение для физических серверов, виртуальных машин, контейнеров и сервисов, действующих внутри контейнеров. Опробовав Elastic Beats, Graphite и
Go toTop

Don't Miss

openconnect

OpenConnect – совместимый с Cisco AnyConnect VPN сервер на платформе Linux

Особая разновидность VPN – это SSL VPN, протоколы, работающие с

OpenVPN сервер

ОpenVPN — это бесплатное и общедоступное программное обеспечение для систем типа