# Настройка VPN сервера WireGuard в FreeBSD

VPN надёжно шифрует трафик, оберегая данные в публичных Wi-Fi, при сомнительных провайдерах или когда хочется больше анонимности и безопасности в сети. Сервер для VPN может быть куплен у провайдера VDS или можно использовать домашний сервер с внешним IP адресом. В статье разберём WireGuard — лёгкий, шустрый, открытый и безопасный VPN-протокол.

<nav class="toc" id="bkmrk-%D0%9E%D0%B3%D0%BB%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8%3A-1"><span class="text-big">Оглавление статьи:</span>1. [1. Установка WireGuard в FreeBSD](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#1)
2. [2. Генерация ключей для сервера и клиента WireGuard](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#2)
3. [2.1. Генерация ключей сервера](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#2-1)
4. [2.2. Генерация ключей клиента](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#2-2)
5. [3. Получение имени сетевой карты](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#3)
6. [4. Настройка и конфигурация WireGuard сервера (wg0.conf)](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#4)
7. [5. Автозагрузка и запуск VPN сервера WireGuard](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#5)
8. [6. Создание файла конфигурации WireGuard клиента](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#6)
9. [7. Генерация QR-кода WireGuard туннеля](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#7)
10. [8. Настройка файрвола и маршрутизации в FreeBSD](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#8)
11. [8.1. Настройка IPFW для WireGuard](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#8-1)
12. [8.2. Настройка PF для WireGuard](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#8-2)
13. [9. Подключение к серверу WireGuard](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#9)
14. [9.1. Подключение из Windows к VPN серверу WireGuard ](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#9-1)
15. [9.2. Подключение из Linux к VPN серверу WireGuard ](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#9-2)
16. [9.3. Подключение с телефона Android к VPN серверу WireGuard ](https://notby.net/nastroyka-vpn-servera-wireguard-v-freebsd#9-3)

</nav>## 1. Установка WireGuard в FreeBSD

В FreeBSD уже давно WireGuard встроен в ядро и уже присутствует утилита wg, но для более легкой настройки удобнее использовать **wg-quick**.

Устанавливаем **wireguard-tools** через пакеты

```
```
pkg install wireguard-tools
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

<figure class="image" id="bkmrk-">![Установка wireguard-tools версии 1.0.20210914_3 через пакеты FreeBSD при помощи команды pkg install wireguard-tools](https://notby.net/images/07/freebsd-pkg-install-wireguard-tools.webp)</figure>Или устанавливаем **wireguard-tools** из портов

```
```
cd /usr/ports/net/wireguard-tools/ && make install clean
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

## 2. Генерация ключей для сервера и клиента WireGuard

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

### 2.1. Генерация ключей сервера

Я накидал консольную команду которая выведет пару ключей на экран терминала и их можно будет скопировать в блокнот или использовать другое окно терминала. Для генерации приватного ключа используется команда `wg genkey`, для генерации публичного ключа используется команда `wg pubkey` и в качестве параметра для нее передается приватный ключ через временную переменную **WGKEY**.

Генерируем приватный и публичный ключ сервера:

```
```
WGKEY=$(wg genkey); echo "Server Private Key: $WGKEY"; echo $WGKEY | echo "Server Public Key: $(wg pubkey)"
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Значение **Server Private Key** необходимо будет вставить в файл конфигурации сервера, а значение **Server Public Key** в файл конфигурации клиента.

<figure class="image" id="bkmrk--1">![Выполнена консольная команда для генерации пары ключей WireGuard сервера в терминале FreeBSD, выведены ключи Server Private Key и Server Public Key](https://notby.net/images/07/freebsd-server-key-pair-wg-genkey-wg-pubkey.webp)</figure>Генерировать ключи можно на любом компьютере где уставлен WireGuard, необязательно на сервере, где будет работать VPN сервер.

### 2.2. Генерация ключей клиента

Консольная команда генерации ключей аналогичен предыдущей, но с добавлением генерации **Pre-Shared Key** через команду `wg genpsk` и заменой слова **Server** на **Client**

Ключ **Pre-Shared Key** используется для дополнительного шифрования внутри основного. Оно необходимо для защиты от расшифровки трафика инопланетными цивилизациями при помощи квантовых компьютеров или в будущем квантовым компьютером созданным человечеством.

Генерируем приватный и публичный ключ клиента:

```
```
WGKEY=$(wg genkey); echo "Client Private Key: $WGKEY"; echo $WGKEY | echo "Client Public Key: $(wg pubkey)"; echo "Client Pre-Shared Key: $(wg genpsk)"
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Значения **Client Private Key** и **Client Pre-Shared Key** необходимо будет вставить в файл конфигурации клиента, а значение **Client Public Key** в файл конфигурации сервера.

<figure class="image" id="bkmrk--2">![Выполнена консольная команда для генерации ключей WireGuard клиента в терминале FreeBSD, выведены ключи Server Private Key, Server Public Key и Client Pre-Shared Key](https://notby.net/images/07/freebsd-client-key-pair-wg-genkey-wg-pubkey-wg-genpsk.webp)</figure>Для каждого отдельного пользователя/устройства необходимо генерировать свои ключи.

## 3. Получение имени сетевой карты

Перед настройкой конфигурации сервера необходимо знать имя сетевой карты которая смотрит в интернет.

Выводим список всех сетевых интерфейсов и находим имя нужной сетевой карты

```
```
ifconfig
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Или можно получить имя сетевой карты, которая использует шлюз по умолчанию командой

```
```
route -n get default | grep 'interface:' | awk '{print $2}'
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

```
```plaintext
em0
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

В моем случае команда вывела имя **em0** сетевого интерфейса, который получает интернет. Почти во всех случаях команда выведет имя нужной сетевой карты.

## 4. Настройка и конфигурация WireGuard сервера (wg0.conf)

Создаем файл конфигурации **wg0.conf** для VPN сервера WireGuard в каталоге **/usr/local/etc/wireguard/**

```
```
nano /usr/local/etc/wireguard/wg0.conf
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Описание основных параметров конфигурационного файла **wg0.conf** (*строки для работы в сетях IPv6 закомментированы*)

```
```ini
# Файл конфигурации VPN сервера WireGuard 
#
# Раздел "Interface" относится к настройкам сервера
[Interface]
# Приватный ключ сервера из значения "Server Private Key"
PrivateKey = gMtlDa6fcFLfKBRQiBJIaGzvVu9C0tGZrsQRg1DJMHU=
# IP адрес сервера и маска внутренней сети VPN
Address = 192.168.10.1/24
#Address = fd20:20:20::1/64
# Порт сервера
ListenPort = 51820

# Разделы "Peer" относится к настройкам клиентов
[Peer]
# Публичный ключ клиента из значения "Clinet Puplic Key"
PublicKey = MW5v76GNuyMXLyMmH6nDqQ98XdHNbdWluGB42J8SU3Y=
# Ключ PSK из значения "Clinet Pre-Shared Key"
PresharedKey = G1WVZwGj+bDzggvqx9jBTL6NH4dhlW5rCW0PCFHY2oY=
# IP адрес клиента (указание маски 32 обязательно для IPv4)
AllowedIPs = 192.168.10.2/32
#AllowedIPs = fd20:20:20::2/128

# Настройка для второго устройства
#[Peer]
#PublicKey = "Clinet Puplic Key"
#PresharedKey = "Clinet Pre-Shared Key"
#AllowedIPs = 192.168.10.3/32
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

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

```
```ini
[Interface]
PrivateKey = gMtlDa6fcFLfKBRQiBJIaGzvVu9C0tGZrsQRg1DJMHU=
Address = 192.168.10.1/24
ListenPort = 51820

[Peer]
PublicKey = MW5v76GNuyMXLyMmH6nDqQ98XdHNbdWluGB42J8SU3Y=
PresharedKey = G1WVZwGj+bDzggvqx9jBTL6NH4dhlW5rCW0PCFHY2oY=
AllowedIPs = 192.168.10.2/32
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Основные изменения которые необходимо внести в файл конфигурации:

- параметр **PrivateKey** необходимо изменить на свой приватный ключ сервера из **“Server Private Key”**;
- вместо **ens33** необходимо указать имя своей сетевой карты;
- параметр **PublicKey** необходимо изменить на свой публичный ключ клиента из **“Client Private Key”**;
- параметр **PresharedKey** необходимо изменить на свой сгенерированный PSK ключ из **“Client Pre-Shared Key”**.

Вносим необходимые измерения и сохраняем файл.

## 5. Автозагрузка и запуск VPN сервера WireGuard

Добавляем в автозагрузку, где **wg0** — имя файла конфигурации без указания расширения **.conf**

```
```
sysrc wireguard_enable="YES" && sysrc wireguard_interfaces="wg0"
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

<figure class="image" id="bkmrk--3">![VPN сервера WireGuard добавлен составной командой sysrc wireguard_enable="YES" && sysrc wireguard_interfaces="wg0" в автозагрузку FreeBSD](https://notby.net/images/07/freebsd-sysrc-wireguard-enable-yes-sysrc-wireguard-interfaces-wg0.webp)</figure>Или вручную открываем файл **/etc/rc.conf**

```
```
nano /etc/rc.conf
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

и добавляем строки:

```
```plaintext
wireguard_enable="YES"
wireguard_interfaces="wg0"
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Запускаем VPN сервера WireGuard

```
```
wg-quick up wg0
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

<figure class="image" id="bkmrk--4">![VPN сервера WireGuard запущен командой “wg-quick up wg0” в операционной системе FreeBSD, выведены сообщения процесса запуска WireGuard](https://notby.net/images/07/freebsd-wg-quick-up-wg0.webp)</figure>Для остановки используем команду

```
```
wg-quick down wg0
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

## 6. Создание файла конфигурации WireGuard клиента

Создаем файл конфигурации WireGuard клиента **wg0-client.conf** в каталоге **/usr/local/etc/wireguard/**

```
```
nano /usr/local/etc/wireguard/wg0-client.conf
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Файл конфигурации клиента создается на сервере для удобства, чтобы была возможность в случае чего скопировать его в WireGuard клиент или передать через QR-код. Необязательно создавать данный файл на сервере, его можно сразу создать в WireGuard клиенте на устройстве пользователя.

Описание основных параметров конфигурационного файла WireGuard клиента

```
```ini
# Файл конфигурации VPN клиента WireGuard 
#
# Раздел "Interface" относится к настройкам клиента
[Interface]
# Приватный ключ клиента из значения "Client Private Key"
PrivateKey = QKlR2932N1k5K4OvQ82DqQQnfJa/kpr3NIHtj+loTk4=
# IP адрес клиента и маска внутренней сети VPN
Address = 192.168.10.2/24
# Публичные DNS сервера или если на сервера VPN запущен DNS,
# то указываем IP адрес WireGuard сервера внутри VPN сети
DNS = 1.1.1.1, 1.0.0.1, 2606:4700:4700::1111, 2606:4700:4700::1001
#DNS = 192.168.10.1

# Раздел "Peer" относится к настройкам подключения к серверу
[Peer]
# Публичный ключ сервера из значения "Server Puplic Key"
PublicKey = Kyhl31NZO9hXhORc3hkpNMWFOF69ZCzlcQ4P70mh4xU=
# Ключ PSK из значения "Clinet Pre-Shared Key"
PresharedKey = G1WVZwGj+bDzggvqx9jBTL6NH4dhlW5rCW0PCFHY2oY=
# Публичный IP адрес сервера и порт, который был указан в файле wg0.conf
Endpoint = 80.95.110.25:51820
# До каких IP адресов пропускать трафик через VPN
# Весь трафик пускать через WireGuard
AllowedIPs = 0.0.0.0/0, ::/0
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Используй всегда компактный файл, так как он необходим для генерации QR-кода и не везде поддерживается кириллица.

**Компактный файл конфигурации клиента выглядит так:**

```
```ini
[Interface]
PrivateKey = QKlR2932N1k5K4OvQ82DqQQnfJa/kpr3NIHtj+loTk4=
Address = 192.168.10.2/24
DNS = 1.1.1.1, 1.0.0.1, 2606:4700:4700::1111, 2606:4700:4700::1001

[Peer]
PublicKey = Kyhl31NZO9hXhORc3hkpNMWFOF69ZCzlcQ4P70mh4xU=
PresharedKey = G1WVZwGj+bDzggvqx9jBTL6NH4dhlW5rCW0PCFHY2oY=
Endpoint = 80.95.110.25:51820
AllowedIPs = 0.0.0.0/0, ::/0
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Основные изменения которые необходимо внести в файл конфигурации:

- параметр **PrivateKey** необходимо изменить на свой приватный ключ клиента из **“Client Private Key”**;
- параметр **PublicKey** необходимо изменить на свой публичный ключ сервера из **“Server Private Key”**;
- параметр **PresharedKey** необходимо изменить на свой сгенерированный PSK ключ из **“Client Pre-Shared Key”**;
- в параметре **Endpoint** необходимо указать **IP адрес** и **порт** своего WireGuard клиента.

Вносим необходимые измерения и сохраняем файл.

## 7. Генерация QR-кода WireGuard туннеля

С телефона очень удобно получать файл конфигурации через сканирование QR-кода, но для этого файл **wg0-client.conf** необходимо преобразовать в QR-код. Утилита qrencode может создавать QR-коды и выводить их в консоль.

Устанавливаем утилиту **qrencode \[libqrencode\]**

```
```
pkg install libqrencode
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Генерируем **QR-код** в терминале

```
```
qrencode -t ANSIUTF8 -r /usr/local/etc/wireguard/wg0-client.conf
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

где /**etc/wireguard/wg0-client.conf** — путь до файла конфигурации клиента.

<figure class="image" id="bkmrk--5">![Сгенерирован QR-код конфигурации WireGuard при помощи команды “qrencode -t ANSIUTF8 -r /usr/local/etc/wireguard/wg0-client.conf” в консольном терминале FreeBSD](https://notby.net/images/07/freebsd-qrencode-t-ansiutf8-r-usr-local-etc-wireguard-wg0-client-conf.webp)</figure>## 8. Настройка файрвола и маршрутизации в FreeBSD

Чтобы была возможность раздавать интернет внутри VPN сети, необходимо настроить маршрутизацию пакетов через один из трех доступных файрволов (**IPFW**, **PF**, **IPF**) в FreeBSD.

Если сервер является удаленным и без возможности получения доступа через дистанционную клавиатуру и монитор, то при настройке файрвола нужно быть очень внимательным. Так как если будет ошибка в настройке может получится так, что будет невозможно подключится через SSH.

*Я использую в качестве файрвола **IPFW**, поэтому покажу минимальные необходимые настройки на основе него, но также покажу еще пример настройки PF.*

### 8.1. Настройка IPFW для WireGuard

Включаем IP-форвардинг

```
```
sysctl net.inet.ip.forwarding=1
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Открываем файл **/etc/rc.conf**

```
```
nano /etc/rc.conf
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Добавляем строки

```
```ini
gateway_enable="YES" # Включить шлюз (сделает net.inet.ip.forwarding=1)
firewall_enable="YES" # Включить IPFW
firewall_nat_enable="YES" # Включить NAT
firewall_script="/etc/ipfw.rules" # Файл с правилами IPFW
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Строку **gateway\_enable="YES"** можно не добавлять, а вместо этого добавить строку **net.inet.ip.forwarding=1** в файл **/etc/sysctl.conf**

Открываем или создаем файл конфигурации **/etc/ipfw.rules**

```
```
nano /etc/ipfw.rules
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Файл конфигурации IPFW + NAT для WireGuard VPN-сервера будет выглядеть примерно так:

```
```bash
#!/bin/sh
# Очищаем список правил IPFW
ipfw -q -f flush
# Команда добавления правила, -q — режим без вывода сообщений
cmd="ipfw -q add"
# Сетевые интерфейсы заносим в переменные
inet_if="em0" # сетевая карта интернета
wg_if="wg0" # интерфейс WireGuard (если wg0.conf, то указывать wg0)

# Разрешить локальный трафик
$cmd allow all from any to any via lo0

# Разрешить любые пакеты внутри сети WireGuard
$cmd allow ip from any to any via $wg_if

# Разрешить доступ к SSH серверу по 22 порту
$cmd allow tcp from any to me 22 in via $inet_if

# Разрешить доступ к VPN-серверу по протоколу UDP на 51820 порт
$cmd allow udp from any to me 51820 in via $inet_if

# Настройка маршрутизации для WireGuard
ipfw -q nat 1 config if $inet_if same_ports unreg_only deny_in reset
# Разрешить проходить любым пакетам через маршрутизацию
$cmd nat 1 all from any to any via $inet_if
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

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

Вносим изменения и сохраняем файл с правилами IPFW.

Будь внимателен. Если есть ошибка или неточность в правилах, можно потерять доступ по SSH.

Запускаем службу IPFW

```
```
service ipfw start
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Можно переходить к проверке VPN-сервера WireGuard.

Более подробно о настройке IPFW читай: [Настройка файрвола IPFW в FreeBSD](https://notby.net/nastroyka-fayrvola-ipfw-v-freebsd) и [Настройка IPFW + NAT в FreeBSD](https://notby.net/nastroyka-ipfw-nat-v-freebsd)

### 8.2. Настройка PF для WireGuard

Включаем IP-форвардинг

```
```
sysctl net.inet.ip.forwarding=1
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Открываем файл **/etc/sysctl.conf**

```
```
nano /etc/sysctl.conf
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

добавляем строку **net.inet.ip.forwarding=1** для постоянного включения IP-форвардинга

```
```plaintext
net.inet.ip.forwarding=1
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Сохраняем файл и закрываем.

Открываем файл **/etc/rc.conf**

```
```
nano /etc/rc.conf
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Добавляем строки

```
```ini
pf_enable="YES" # Включить PF 
pf_rules="/etc/pf.conf" # Файл с правилами PF
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Открываем или создаем файл конфигурации **/etc/pf.conf**

```
```
nano /etc/pf.conf
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Файл конфигурации PF + NAT для WireGuard VPN-сервера будет выглядеть примерно так:

```
```plaintext
# Определение интерфейсов и параметров
inet_if="em0" # сетевая карта интернета
wg_if="wg0" # интерфейс WireGuard (если wg0.conf, то указывать wg0)
wg_net = "192.168.10.0/24"  # Внутренняя сеть WireGuard (которая указана в wg0.conf)

# Пропускать локальный трафик
set skip on lo0

# Включение NAT для трафика из сети WireGuard
nat on $inet_if from $wg_net to any -> ($inet_if)

# Разрешить любые пакеты внутри сети WireGuard
pass on $wg_if all

# Разрешить доступ к SSH серверу по 22 порту
pass in on $inet_if proto tcp from any to ($inet_if) port 22

# Разрешить доступ к VPN-серверу по протоколу UDP на 51820 порт
pass in on $inet_if proto udp from any to ($inet_if) port 51820

# Разрешить весь исходящий трафик
pass out all
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Этих настроек будет достаточно для раздачи интернета внутрь VPN сети и будет возможность подключится к WireGuard и SSH из интернета.

Вносим изменения и сохраняем файл с правилами PF.

Будь внимателен. Если есть ошибка или неточность в правилах, можно потерять доступ по SSH.

Запускаем службу PF

```
```
service pf start
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Можно переходить к проверке VPN-сервера WireGuard.

## 9. Подключение к серверу WireGuard

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

### 9.1. Подключение из Windows к VPN серверу WireGuard 

Запускаем **PowerShell** и копируем файл **wg0-client.conf** с сервера через утилиту **scp** в любое место на компьютере, например на рабочий стол

```
```
scp root@80.95.110.25:/etc/wireguard/wg0-client.conf 'C:\Users\User\Desktop\'
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Вместо **root@80.95.110.25** указываем свои данные для доступа по SSH, вместо **User** указываем свое имя пользователя Windows.

<figure class="image" id="bkmrk--6">![Запущен PowerShell в Windows 10, выполнена команда “scp root@80.95.110.25:/etc/wireguard/wg0-client.conf 'C:\Users\User\Desktop\'”, файл wg0-client.conf успешно скопирован на рабочий стол](https://notby.net/images/10/windows10-powershell-scp-etc-wireguard-wg0-client-conf.webp)</figure>Скачиваем с официального сайта [wireguard-installer.exe](https://download.wireguard.com/windows-client/wireguard-installer.exe) и запускаем установщик. Произойдет установка WireGuard и он автоматически запустится.

Нажимаем на кнопку **Импорт туннелей из файла** и выбираем файл, скачанный ранее.

<figure class="image" id="bkmrk--7">![Запущен WireGuard в Windows 10, нажата кнопка “Импорт туннелей из файла”, открыто окно с выбором файлов и выбран файл wg0-client.conf](https://notby.net/images/10/windows10-wireguard-import-tunneley-iz-fayla-vybran-fayl-wg0-client-conf.webp)</figure>Подключаемся к WireGuard серверу нажав кнопку **Подключить** и пробуем куда-нибудь зайти.

<figure class="image" id="bkmrk--8">![Запущен WireGuard в Windows 10, подключен wg0-client туннель, выведена статистика успешного VPN подключения, трафик принимается и передается](https://notby.net/images/10/windows10-wireguard-uspeshnoe-podklyuchenie-k-vpn-serveru-trafik-peredaetsya.webp)</figure>Как можно видеть, трафик принимается и передается, VPN WireGuard успешно работает.

Если интернет не работает, то проверяем что пакеты доходят до IP адреса сервера внутри VPN сети и до IP адреса в интернете

```
```
ping 192.168.10.1; ping 1.1.1.1
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

где **192.168.10.1** — IP адрес WireGuard сервера указанный в файле **wg0.conf** в параметре Address, а IP адрес **1.1.1.1** — публичный DNS сервер.

### 9.2. Подключение из Linux к VPN серверу WireGuard 

Устанавливаем **WireGuard**

```
```
apt install wireguard
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Копируем файл **wg0-client.conf** с сервера в каталог **/etc/wireguard/** через **scp**

```
```
scp root@80.95.110.25:/etc/wireguard/wg0-client.conf /etc/wireguard/
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Подключаемся к WireGuard серверу

```
```
wg-quick up wg0-client
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

где **wg0-client** — имя файла конфигурации без указания расширения **.conf**

Проверяем что пакеты доходят до IP адреса сервера внутри VPN сети и до IP адреса в интернете

```
```
ping 192.168.10.1 -c 3; ping 1.1.1.1 -c 3
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

где **192.168.10.1** — IP адрес WireGuard сервера указанный в файле **wg0.conf** в параметре Address, а IP адрес **1.1.1.1** — публичный DNS сервер.

<figure class="image" id="bkmrk--9">![Выполнена команда “ping 192.168.10.1 -c 3; ping 1.1.1.1 -c 3” в консоли Debian, успешный пинг до 192.168.10.1 и 1.1.1.1 адресов, потерь нет](https://notby.net/images/10/debian-console-ping-192-168-10-1-c-3-ping-1-1-1-1-c-3.webp)</figure>Как можно видеть, пинг до VPN сервера WireGuard и публичного DNS 1.1.1.1 успешен, можно пользоватся VPN WireGuard.

Чтобы выключить VPN, используем команду

```
```
wg-quick down wg0-client
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

Если необходимо, чтобы VPN подключался при запуске компьютера, то добавляем в автозагрузку автоматическое подключение к серверу WireGuard

```
```
systemctl enable wg-quick@wg0-client
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

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

```
```
systemctl disable wg-quick@wg0-client
```<button class="copy" title="Скопировать в буфер обмена" type="button"></button>
```

### 9.3. Подключение с телефона Android к VPN серверу WireGuard 

Устанавливаем приложение **WireGuard** из Google Play.

Запускаем приложение, нажимаем на <kbd>+</kbd> в нижней правой части экрана, выбираем из списка **Сканировать QR-код** и сканируем **QR-код** из консоли. Можно загрузить файл **wg0-client.conf** на телефон, выбрать из списка **Импорт из файла или архива** и указать данный файл.

<figure class="image" id="bkmrk--10">![Приложение WireGuard запущено на Android телефоне, нажата кнопка добавить туннель, выведено меню как можно добавить туннель](https://notby.net/images/10/android-wireguard-menyu-knopki-dobavit-tunnel.webp)</figure>Подключаемся к WireGuard серверу и пробуем куда-нибудь зайти.

<figure class="image" id="bkmrk--11">![Приложение WireGuard запущено на Android телефоне, выведена статистика успешного VPN подключения, трафик принимается и передается](https://notby.net/images/10/android-wireguard-uspeshnoe-podklyuchenie-k-vpn-serveru-trafik-peredaetsya.webp)</figure>Как можно видеть, в статистике трафик принимается и передается, VPN WireGuard успешно работает.