Тариф успешно добавлен в корзину
В корзину
url image

Установка и настройка WireGuard (VPN) на виртуальном сервере

WireGuard — это современный, быстрый и легкий протокол виртуальной частной сети (VPN), который обеспечивает безопасные сетевые соединения. Он завоевал популярность благодаря простоте установки, эффективности работы и легкости настройки, по сравнению с другими популярными VPN-сервисами, такими как OpenVPN и IPSec. В статье расскажем, как установить WireGuard на своем сервере.

В FirstVDS вы можете заказать сервер с готовым рецептом WireGuard. Сервер будет установлен и настроен автоматически, и вам останется только настроить подключение.

Требования к серверу

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

1. Операционная система: WireGuard возможен для установки практически на любой современной ОС, в статье мы будем рассматривать установку на ОС семейства Linux, в частности Ubuntu 22.04, также подойдут любые близкие по версии Debian-based ОС (такие как Ubuntu 20.04, Debian 12 и т. д.).

2. Ресурсы сервера. Виртуальный  сервер с достаточными ресурсами для обработки VPN-трафика:  1 ядро процессора и минимум 512 МБ оперативной памяти.

3. Доступ суперпользователя. На вашем сервере у вас должны быть права sudo или доступ пользователя root на сервер, чтобы выполнить необходимые шаги по установке и настройке.

4. Требования к сети.  Убедитесь, что ваш сервер имеет публичный IP-адрес (“белый” IP), а также, что у вас есть доступ к настройке правил брандмауэра для разрешения VPN-трафика и нет каких-либо блокирующих правил фаервола на вышестоящем оборудовании. Также желательно, чтобы сетевой канал сервера был не менее 100 Мбит/сек.

Теперь давайте рассмотрим различные методы установки выбранного нами ПО.

Установка WireGuard

Первый способ: через Docker-контейнер

Использование Docker для запуска WireGuard упрощает установку, а также снижает влияние на остальное ПО на сервере (устанавливается изолированно). Опишем необходимые шаги:

1. Установка Docker  

Сначала убедитесь, что Docker установлен на вашем сервере. Если Docker не установлен, выполните команду:

apt update
apt install docker.io -y
apt install docker-compose -y

2. Создание и запуск контейнера с ПО в Docker  

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

mkdir -p /etc/wireguard/config  

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

   docker run -d \
     --name=wireguard \
     --cap-add=NET_ADMIN \
     --cap-add=SYS_MODULE \
     -e PUID=1000 \
     -e PGID=1000 \
     -e TZ=Europe/Moscow \
     -e SERVERURL=62.109.21.223 \
     -e SERVERPORT=51820 \
     -e PEERS=3 \
     -e PEERDNS=auto \
     -e INTERNAL_SUBNET=10.13.13.0 \
     -p 51820:51820/udp \
     -v /etc/wireguard:/config \
     -v /lib/modules:/lib/modules \
     --sysctl='net.ipv4.conf.all.src_valid_mark=1' \
     --sysctl='net.ipv4.ip_forward=1' \
     --restart unless-stopped \
     linuxserver/wireguard
  • Замените ip_вашего_VDS на IP вашего сервера.

  • Настройте другие параметры, такие как TZ (часовой пояс) и PEERS (количество клиентов). В примере установлено PEERS=3, что означает, что к этому VPN смогут подключиться только 3 пользователя.

3. Проверка контейнера  

После выполнения команды выше остается проверить состояние контейнера:

docker ps

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

Теперь вы можете получить доступ к конфигурационным файлам в папке /etc/wireguard/config, которые будут содержать ключи клиента и сервера.

Второй способ: С помощью скрипта

Установка скриптом — один из самых быстрых способов установки и настройки WireGuard. Существует несколько популярных скриптов, например, WireGuard Manager. Ниже приведен пример использования простого скрипта, производящего стандартную установку ПО:

1. Запуск скрипта  

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

wget https://git.io/wireguard -O wireguard-install.sh && bash wireguard-install.sh

2. Пункты установки в скрипте  

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

3. Завершение установки  

После завершения работы, скрипт создаст конфигурационные файлы для сервера и клиентов, которые обычно хранятся в папке `/etc/wireguard/`. Вы можете загрузить эти файлы на клиенты (устройства), с которых хотите подключаться к VPN.

Третий способ: Ручная установка (на примере ОС Ubuntu)

Ручная установка дает вам больше контроля над процессом. Рассмотрим необходимые шаги для этого:

1. Обновление пакетов в системе  

apt update

2. Установка ПО 

 WireGuard возможен для установки из официальных репозиториев Ubuntu, поэтому команда будет следующей:

apt install wireguard -y

3. Генерация приватного и публичного ключей сервера  

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

wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

4. Генерация клиентских ключей  

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

wg genkey | tee /etc/wireguard/peer_<i>_privatekey | wg pubkey | tee /etc/wireguard/peer_<i>_publickey

где вместо <i> укажите порядковый номер учетной записи, с которой будет подключаться определенное устройство. В нашем примере создадим 3 пары ключей для 3 устройств соответственно:

wg genkey | tee /etc/wireguard/peer_1_privatekey | wg pubkey | tee /etc/wireguard/peer_1_publickey
wg genkey | tee /etc/wireguard/peer_2_privatekey | wg pubkey | tee /etc/wireguard/peer_2_publickey
wg genkey | tee /etc/wireguard/peer_3_privatekey | wg pubkey | tee /etc/wireguard/peer_3_publickey

5. Настройка WireGuard  

Создайте файл конфигурации WireGuard для VPN-подключения (например, /etc/wireguard/wg0.conf) и наполните следующим содержимым:

[Interface]
PrivateKey = <server_private_key>
Address = 10.13.13.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820

[Peer]
#peer_1
PublicKey = <client_public_key(peer_1_publickey)>
AllowedIPs = 10.13.13.2/32

[Peer]
#peer_2
PublicKey = <client_public_key(peer_2_publickey)>
AllowedIPs = 10.13.13.3/32

[Peer]
#peer_3
PublicKey = <client_public_key(peer_3_publickey)>
AllowedIPs = 10.13.13.4/32
  • Замените <server_private_key> на приватный ключ сервера из предыдущего шага (в нашем примере это файл /etc/wireguard/privatekey).

  • Добавьте клиентские публичные ключи вместо <client_public_key> соответственно количеству устройств и созданных для них ключевых пар (в нашем примере это 3 устройства и в скобках указаны имена файлов, располагающиеся в директории /etc/wireguard).

  • Для каждого устройства в секции [Peer] обязательно укажите разные адреса из выделенной подсети в секции [Interface]. В нашем примере выделена подсеть 10.13.13.1/24 и выделены адреса для устройств — 10.13.13.2, 10.13.13.3, 10.13.13.4 соответственно. 

6. Создание конфигурационных файлов для клиентов

Чтобы впоследствии было удобнее передавать файл настройки подключения на устройства, сразу сформируем необходимые для них конфигурационные файлы. В примере выше мы уже обозначили 3 устройства и пары ключей для них. Создадим для них конфигурационные файлы и заполним необходимым содержимым, рассматривать будем на примере 1-го устройства (файл peer_1.conf).

Открываем для редактирования файл (тем самым его создавая):

nano /etc/wireguard/peer_1.conf

Вносим туда следующее содержимое:

[Interface]
Address = 10.13.13.2/32
PrivateKey = <client1_private_key(/etc/wireguard/peer_1_privatekey)>
DNS = 1.1.1.1

[Peer]
PublicKey = <server_public_key(/etc/wireguard/publickey)>
Endpoint = <server-ip>:51820
AllowedIPs = 0.0.0.0/0, ::/0
  • Замените <client1_private_key> на приватный ключ 1-го устройства из 4-го шага (в нашем примере это файл /etc/wireguard/peer_1_privatekey).

  • Добавьте публичный ключ сервера вместо <server_public_key> из 3-го шага (в нашем примере это файл /etc/wireguard/publickey)

  • В секции [Interface] в параметре Address должен быть указан соответствующий адрес из секции [Peer], который указывали в 5-м шаге в файле /etc/wireguard/wg0.conf.

  • Вместо <server-ip> укажите публичный адрес сервера.

  • В секции [Peer] в параметре AllowedIPs укажите адреса, с которых должен быть доступ к VPN-серверу. В нашем примере разрешен доступ для любых адресов, в том числе и для IPv6, поэтому указано как 0.0.0.0/0, ::/0

Аналогичным образом сделайте конфигурационные файлы и для остальных устройств. В нашем примере нужно создать еще конфигурационные файлы /etc/wireguard/peer_2.conf  и /etc/wireguard/peer_3.conf, указывая в них соответственные IP-адреса и соответственные приватные ключи (10.13.13.3 и /etc/wireguard/peer_2_privatekey, 10.13.13.4 и /etc/wireguard/peer_3_privatekey)
7. Включение переадресации IP  

 Для работы VPN, необходимо включить форвардинг IP-адресов, это можно сделать следующей командой:

sysctl -w net.ipv4.ip_forward=1

Команда sysctl -w  изменяет параметры временно, только до перезагрузки системы. Чтобы изменить параметр на постоянной основе, нужно добавить в файл /etc/sysctl.conf следующую строку:

net.ipv4.ip_forward = 1

При этом после добавления строки в файл, параметр применится только после перезагрузки, если вы ранее не выполнили команду sysctl -w net.ipv4.ip_forward=1

8. Запуск WireGuard  

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

 wg-quick up wg0
 systemctl enable wg-quick@wg0

9. Настройка фаервола  

Проверьте настройки фаервола в вашей системе на сервере, чтобы не был запрещен трафик WireGuard через порт 51820 (или заданный вами порт). На чистой системе по умолчанию правила фаервола не имеют запрещающих правил.

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

После установки и настройки WireGuard на сервере вам нужно будет настроить клиенты (устройства, с которых будете подключаться вы и ваши пользователи — например, ноутбуки, телефоны) для подключения к VPN.
Опишем необходимые шаги для разных ОС:

1. Установка клиентского приложения WireGuard  

На ОС семейства Linux (Debian-based):

sudo apt install wireguard

Для Windows, macOS, десктопных Linux (с GUI) или мобильных устройств (iOS/Android) достаточно скачать официальное приложение WireGuard с сайта.

2. Получение клиентских конфигурационных файлов  

Если пользовались первым и вторым способами установки (через Docker-контейнер или с помощью скрипта), то все необходимые ключи и файлы конфигураций были сформированы автоматически в заданной при установке директории. Например, в приведенном выше руководстве по установке через Docker мы задавали директорию /etc/wireguard/conf, соответственно, для подключения можно взять готовый конфигурационный файл по расположению /etc/wireguard/config/peer<i>/peer<i>.conf, где вместо <i> необходимо указать порядковый номер пользователя (в нашем примере было только 3 возможных пользователя - peer1, peer2 и peer3).
В третьем способе мы формировали конфигурационные файлы вручную и размещали их в директории /etc/wireguard/peer_<i>.conf, где вместо <i> необходимо указать порядковый номер пользователя (в нашем примере было только 3 возможных пользователя - peer_1, peer_2 и peer_3).

Скачайте эти файлы с сервера или скопируйте содержимое этих файлов на устройство в конфигурационный файл.

3. Подключение к VPN  

 На ОС семейства Linux (Debian-based):

sudo wg-quick up peer_1.conf

Вместо peer_1.conf укажите полный путь до файла конфигурации клиента именно для того устройства, которое требуется. Нельзя указать на двух устройствах один и тот же файл конфигурации, на условном устройстве_1 из нашего примера мы укажем файл peer_1.conf, а на условном устройстве_2 — peer_2.conf.

Для десктопных приложений (Windows, Linux, MacOS) запуск проводится аналогично через подключение конфигурационного файла (в нашем случае peer_<i>.conf, где вместо <i> - порядковый номер устройства) через интерфейс приложения. Скриншот на примере приложения для ОС Windows:

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

4. Проверка подключения  

После подключения вы можете убедиться, что VPN работает, проверив свой публичный IP-адрес через различные сервисы, например: https://2whois.ru/?t=myip.

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

Этот материал был полезен?

Скидка 25% новым клиентам!
Закажи сервер сегодня и получи скидку на первый месяц аренды!