0

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

04.09.2024

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

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

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

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 2K views

VPN кластер.

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

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

How to Install Proxmox Virtual Environment on Debian 11

Introduction Proxmox Virtual Environment is an open-source virtualization management program. It provides a single platform to manage services and functions like KVM Hypervisor, Linux Containers (LXC), storage & networking. In addition, it

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

Сервер Zabbix предполагает достаточную вариативность в выборе СУБД и веб-сервера, поэтому многое тут будет зависеть от персональных предпочтений. Однако расширение TimescaleDB позволяет поддерживать высокий уровень производительности и масштабирования при работе с временными

Настройка простого беспроводного репитера на устройстве MikroTik

При развертывании беспроводных сетей достаточно часто возникают ситуации, когда в некоторых местах квартиры или офиса мощность Wi-Fi сигнала недостаточна для уверенной работы. Конечно, наиболее действенным решением является создание централизованно управляемой сети и

Настройка и использование Redis

В этой статье мы расскажем что такое Redis, его преимущества и для каких целей он используется. Redis (REmote DIctionary Server) — сетевое журналируемое хранилище данных типа “ключ” — “значение” с открытым исходным кодом. По сути Redis представляет собой базу данных

Настройка и использование Memcached

В статье мы расскажем, что такое Memcache, зачем он нужен и как он влияет на работу некоторых популярных CMS. Кеширование данных – немаловажный момент в работе любого веб-проекта. С ростом посещаемости увеличиваются требования к
Go toTop

Don't Miss

openconnect

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

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

OpenVPN сервер

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