1. Главная
  2. База Знаний
  3. Настройка Wireguard VPN на своем сервере

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


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

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

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

Предполагаю что у вас уже есть VPS. Если нет, то вы можете его заказать у нас.

На нашем сервере мы установим операционную систему Ubuntu 22.04. Если у вас имеется сервер с другой ОС, то вы можете легко переустановить ее по инструкции.

И так, у нас готов сервер с ОС Ubuntu 22.04, теперь подключаемся к нему по SSH. Если вдруг вы до этого не сталкивались с этим протоколом, то у нас есть статья в которой этот процесс подробно описан. Для ОС Linux второй пункт, для ОС Windows третий пункт в статье.

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

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

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

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 [email protected]

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

apt install iptables

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

systemctl enable [email protected]

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

systemctl status [email protected]

Статус должен быть 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 выполнена!

Предыдущая статья Как подключится с Android/IOS к серверу под управлением OS Windows?
Следующая статья Настройка VPN-сервера на Linux: PPTP или OpenVPN?

Задайте вопрос

Мы всегда готовы ответить на Ваши вопросы в любое время суток.
Пожалуйста, проверьте нашу Базу Знаний, скорее всего ответ на ваш вопрос там уже есть!