Wireguard настройка сервера на windows

Время на прочтение
6 мин

Количество просмотров 38K

Подозреваю, что я не один такой, кто держит дома в режиме 24/7 маленький и тихий системный блок с Windows в качестве сервера, на который можно зайти по RDP (с того же смартфона) и несколько переживает в связи с количеством «неслучайных» попыток к нему подключиться. Задача не новая и вполне себе решаемая, например можно рассмотреть следующие варианты:

  1. Настроить OpenSSH сервер, начиная с Windows 10 1809 он официально часть дистрибутива, включить авторизацию по ключам и заходить на RDP через SSH тоннель. На маршрутизаторе соответственно настроить перенаправление только для SSH порта. Из плюсов — достаточно безопасно, из минусов:

    1. Не очень понятно, можно ли зайти со смартфона (для iPhone вероятно понадобится какой-то гибридный RDP клиент).

    2. Поддерживается только TCP, а RDP уже довольно давно умеет использовать преимущества UDP.

    3. Обновления Windows имеют необъяснимое свойство отключать OpenSSH, не знаю с чем это связано, но несколько за год раз такое было.

  2. Настроить VPN непосредственно на маршрутизаторе. В целом, решение рабочее и минусы тут довольно субъективные:

    1. Не хочется вешать на маршрутизатор дополнительную «необязательную» нагрузку.

    2. Открывается дополнительный вектор атаки непосредственно на маршрутизатор.

    3. Требует определенных технических навыков.

  3. Дополнительно установить Raspberry Pi и на нем настроить VPN (можно ещё много чего на ней запустить). До сих пор пользуюсь, отличный вариант, если есть необходимые навыки и немного денег на «малинку».

  4. Скорее для полноты картины, чем для реального домашнего использования, можно установить Hyper-V на нашу машинку с Windows, создать виртуальную машину с Linux и на нем настроить VPN. Как и в предыдущем случае:

    1. Требует определенных технических навыков.

    2. Увеличивается нагрузка на наш не особенно могучий домашний сервер (у меня это обычно Intel NUC) .

    3. Могут возникнуть проблемы при отключении питания (виртуальная машина окажется в состоянии Saved и VPN будет недоступен).

  5. Ну и наконец, можно установить сервер VPN непосредственно на Windows. Выбор конкретного VPN дело глубоко личное, но мне последние пару лет посчастливилось изрядно поработать с WireGuard и даже реализовать специализированного клиента для Wandera, в связи с этим выбор был очевиден.

Предварительные изыскания

Я думаю, это ни для кого не новость, что WireGuard уже больше года как включен в основную ветку ядра Linux. С Windows не все так радужно, однако в силу специфики протокола официальный WireGuard для Windows вполне себе выполняет функцию сервера, ему не хватает только NAT. Благодаря Henry Chang и его вдохновленному им micahmo примерно известно как сделать это стандартными средствами Windows. Честно говоря, процесс выглядит немного сложновато, хотя надо отдать должное micahmo, который его частично автоматизировал. Помимо этого, меня заинтересовал следующий комментарий под оригинальным постом:

Good day, excellent article!

I have a Win10 machine that I plan to use as a wireguard server. This machine has a main internet network adapter + OpenVPN client connection that is used for selected routes.
If I understand correctly described above wireguard VPN setup will only allow my wireguard clients to access main internet interface but not the OpenVPN connection, please correct me I’m wrong.
Is there a way for a wireguard client to use all available connections and honor existing routes configuration on wireguard server?

Thank you!

Думаю, что полный перевод не требуется, суть состоит в том, чтобы WireGuard использовал для выхода не какой-то один определенный интерфейс (это единственный вариант с Windows Internet Connection Sharing), а тот из них который определен согласно действующей таблице маршрутизации.

Итак, сформулируем задачу

  1. Максимально упростить процесс установки и настройки WireGuard. Давление на компании предоставляющие услуги VPN нарастает и, согласитесь, было бы неплохо, если бы любой пользователь Windows мог бы:

    1. Настроить WireGuard на сервере расположенном облаке, не погружаясь в особенности реализации. Я не призываю к обходу блокировок уважаемого Роскомнадзора, но это так же может быть необходимо, чтобы обойти географические ограничения на какие-то продукты или услуги. Например, до недавнего времени, Ghidra нельзя было скачать с российского IP адреса. Сайт и сейчас вас не пустит, но сам дизассемблер можно скачать с Github. Или цена (валюта расчетов) на авиабилеты может варьироваться в зависимости от страны, с IP которой Вы зашли на сайт авиакомпании. Или можем вспомнить недавнюю историю с «неофициально» ввезенными телевизорами Samsung, у которых «неожиданно» отключилась функция Smart TV. Вернуть телевизор к нормальной жизни можно было только подключив его через европейский VPN. И это только то, что я сходу смог вспомнить…

    2. Установить WireGuard на домашнем Windows сервере и получить постоянный защищенный доступ в собственную сеть и пользоваться ВСЕМИ сервисами доступными ему дома независимо от того в какой точке мира он находится. Например, понравилась мне Яндекс Станция (это не реклама, я действительно их довольно много приобрел для себя, для семьи, в подарки друзьям), да так, что я даже одну привез на Тенерифе. И тут выяснилась удивительная подробность, Яндекс-музыка работает за границей, а вот КиноПоиск ссылается на географические ограничения и отказывается работать. Было бы обидно, но настроил WireGuard клиента на роутере Keenetic и подключил Яндекс станцию через домашний VPN в России. А еще не так уж давно я проделывал что-то подобное для Amazon Fire Stick, чтобы нормально пользоваться подпиской Prime. Могу ошибаться, но кажется где-то читал, что и сам WireGuard был изначально придуман, чтобы смотреть американский Netflix из Австралии.

  2. Использовать некую альтернативу Internet Connection Sharing со всем уважением к имеющейся сетевой конфигурации.

Примерно месяц назад у меня появилось 3-4 относительно свободных дня на неделе и я приступил к ее постепенной реализации. Как раз на днях закончил «боевую» сборку, которая в настоящее время успешно крутится на паре домашних машинок с Windows 10 Pro и на VPS в Microsoft Azure (Windows Server 2019 Core, 1vCPU + 1Gb) и которую нестыдно показать. Сразу должен отметить, что по производительности реализация в ядре безусловно выигрывает и если вам не составляет особенного труда сконфигурировать WireGuard на VPS с Linux, то это более оптимальный выбор. Моя целевая аудитория — это обычные пользователи Windows далекие от IT. Насколько могу судить, в текущей реализации самое сложное это настроить перенаправление UDP порта (на роутере или в панели управления виртуальной машиной в облаке).

WireSock Gateway

И с WireGuard созвучно и по смыслу подходит, к тому же, как удачно, домен wiresock.net оказался свободен. Инсталляторы и краткая инструкция по установке есть на сайте. В двух словах, кроме того, чтобы скачать и установить приложение, необходимо запустить ‘cmd’ с правами Администратора и выполнить ‘wg-quick-config -add -start’. wg-quick-config постарается определить внешний IP адрес и свободный локальный UDP порт, которые будут предложены по умолчанию. Если на маршрутизаторе настроен динамический DNS, то можно поменять IP на доменное имя. Если ISP/VPS провайдер выдает вам ‘белый» IPv4 адрес, то после этого достаточно настроить форвард на роутере для выбранного UDP порта. Виртуальная сеть для WinTun адаптера по умолчанию 10.9.0.0/24, но так же по желанию может быть изменена.

wg-quick-config создаст файлы конфигурации для сервера (wiresock.conf) и клиента (wsclient_1.conf), создаст и запустит WIreGuard туннель, а так же отобразит конфигурацию клиента в виде QR кода, который можно отсканировать смартфоном. Дополнительных клиентов можно добавлять, вызывая ‘wg-quick-config -add -restart’.

Основная работа выполняется сервисом Wiresock Service, который поддерживает два режима работы: NAT и Proxy.

Первый это классический NAT, сервис включает маршрутизацию (для некоторых типов соединений начиная с Windows 7 встроенная маршрутизация не работает, и они маршрутизируются «вручную»), определяет внешний интерфейс «по умолчанию» на котором и занимается подменой адресов во входящих/исходящих пакетах. Получает почти то же самое, что дает встроенный Internet Connection Sharing, но без ограничений на адреса клиентской сети.

Второй несколько интереснее и именно этот режим включается инсталлятором по умолчанию. Все TCP/UDP соединения (для UDP условно), кроме DNS и NTP, прозрачно перенаправляются на локальные TCP/UDP прокси, которые уже от своего имени устанавливают соединения к сетевым ресурсам. При этом если у локальной системы присутствуют системные настройки HTTP/SOCKSv5 прокси, то Wiresock Service со всем уважением будет их использовать. Что касается NTP и DNS, то они обрабатываются отдельно. Wiresock Service сам отвечает за NTP сервер, а для DNS запросы перенаправляются на локально сконфигурированные IPv4 DNS сервера, а если таковых по каким-то причинам не окажется, то используются 8.8.8.8 и 1.1.1.1. Единственный недостаток данного подхода — не будет работать ping на внешние адреса.

Таким образом, основные задачи вроде бы выполнены. И если к проекту будет интерес, то ему есть куда развиваться, например:

  1. На данный момент (v.1.0.2.4) отсутствует поддержка IPv6.

  2. «Белые» IPv4 постепенно становятся редкостью, поэтому хотелось бы организовать работу WireGuard сервера за NAT (или даже multi-NAT) Интернет-провайдера. Здесь правда без внешнего сервиса (с «белым» IP) обойтись не удастся.

Буду рад любым отзывам и замечаниям…

This tutorial goes through the process of setting up a Wireguard server on Windows. Most Wireguard tutorials on the internet only give you the choice of hosting a server in a Linux environment. However, it is very possible to setup a windows server.

After searching for a tutorial to no avail, I spent a couple days to figure out the best way to do it and how to automate the process. Ideally you would still want to run it in an Linux environment, but if you have a use case for a windows server like me, you would appreciate just how flexible Wireguard is!

Prerequisite

  • Latest Wireguard Windows Client installed (Download here from official site)
  • Setup firewall rules (just as you would for a Linux server setup: open and forward ports 51820, configure ddns etc)

Disclaimer
Using Wireguard on Windows as server is not officially supported. Use at your own risk.

Step 1: Prepare Wireguard Server and Client Config File

This step is the same as other Linux tutorials.
I’ve provided my own server side and client side configs below, adjust to your own use case.

#Server Config
[Interface]
PrivateKey = #Replace with server private key#
ListenPort = 51820
Address = 192.168.200.1/24

[Peer]
#Client 1
PublicKey = #Replace with client public key#
PresharedKey = #Replace with pre-shared key#
AllowedIPs = 192.168.200.2/32
#Client Config
[Interface]
PrivateKey = #Replace with client private key#
Address = 192.168.200.2/24
DNS = 1.1.1.1, 8.8.8.8

[Peer]
PublicKey = #Replace with server public key#
PresharedKey = #Replace with pre-shared key#
AllowedIPs = 0.0.0.0/0
Endpoint = #Replace with server domain name or ip address#:51820

After you prepared the server config files, place it in a folder somewhere permanent.
For this tutorial I will assume the server config file is placed at C:\wireguard\wg_server.conf

Step 2: Start up the server

Instead of using the GUI to start the server, we will start it using command options.
At the time of this tutorial the official GUI only allows one connection at a time. If we use it to run the server, the GUI will be occupied and we won’t be able to make a new connection without dropping the server interface.
Running the server using command line options allows us the keep the GUI free for daily use.
If you don’t mind the GUI being occupied, you can just start the server on the GUI and skip to Step 3.

Use the following code to start / stop the server. Without saying, adjust the file paths if they are different on your system.
You need to run these with administrative privilege!

#Start server
C:\Program Files\WireGuard\wireguard.exe /installtunnelservice "C:\wireguard\wg_server.conf"

#Stop server
C:\Program Files\WireGuard\wireguard.exe /uninstalltunnelservice wg_server

You will only need to run the command once, wireguard’s background service will remember the run state over reboots.
Once you start the server, wireguard will create a new network adapter as the same name as your server config file. Thus for our tutorial, the network adapter name would be «wg_server»
Check if the network adapter is successfully created.

If you named your config file «Wireguard_Server.conf», the network adapter created will also be name accordingly

Step 2.1: (Optional) Setting adapter profile
Now we have the wireguard adpater setup, it is recommended to change it to «Private» profile», by defaults the adapter is added as «Public». Private profile will allow greater compatibility for the clients (say you want to use some remote desktop etc). Public profile may block these ports and services.

To Do this we run three simple powershell commands with admin privilege manually:

#Open powershell with admin privilege and run the following:

$NetworkProfile = Get-NetConnectionProfile -InterfaceAlias "wg_server"

$NetworkProfile.NetworkCategory = "Private"

Set-NetConnectionProfile -InputObject $NetworkProfile

Step 3: Enable server routing

Now that server is running, the client should be able to handshake (given that you have the correct ports open and forwarded correctly).
However, you will notice the client won’t be able to access either the internet or the LAN network.
This is because by default windows do not bridge or NAT the wireguard interface with your actual physical internet interface.
In Linux this is done by some PostUp/PostDown firewall commands, which we do not use here.
Instead, we use a powershell script to enable the NAT (or in Windows term «internet sharing») function:

Function Set-NetConnectionSharing
{
    Param
    (
        [Parameter(Mandatory=$true)]
        [string]
        $LocalConnection,

        [Parameter(Mandatory=$true)]
        [bool]
        $Enabled        
    )

    Begin
    {
        $netShare = $null

        try
        {
            # Create a NetSharingManager object
            $netShare = New-Object -ComObject HNetCfg.HNetShare
        }
        catch
        {
            # Register the HNetCfg library (once)
            regsvr32 /s hnetcfg.dll

            # Create a NetSharingManager object
            $netShare = New-Object -ComObject HNetCfg.HNetShare
        }
    }

    Process
    {
		#Clear Existing Share	       
		$oldConnections = $netShare.EnumEveryConnection |? { $netShare.INetSharingConfigurationForINetConnection.Invoke($_).SharingEnabled -eq $true}           
		foreach($oldShared in $oldConnections)
        {
            $oldConfig = $netShare.INetSharingConfigurationForINetConnection.Invoke($oldShared)
            $oldConfig.DisableSharing()                        
        }        
	
        # Find connections
        $InternetConnection = Get-NetRoute | ? DestinationPrefix -eq '0.0.0.0/0' | Get-NetIPInterface | Where ConnectionState -eq 'Connected'        
        $publicConnection = $netShare.EnumEveryConnection |? { $netShare.NetConnectionProps.Invoke($_).Name -eq $InternetConnection.InterfaceAlias }
        $privateConnection = $netShare.EnumEveryConnection |? { $netShare.NetConnectionProps.Invoke($_).Name -eq $LocalConnection }

        # Get sharing configuration
        $publicConfig = $netShare.INetSharingConfigurationForINetConnection.Invoke($publicConnection)
        $privateConfig = $netShare.INetSharingConfigurationForINetConnection.Invoke($privateConnection)

        if ($Enabled)
        { 			
            $publicConfig.EnableSharing(0)
            $privateConfig.EnableSharing(1)
        }
        else
        {
            $publicConfig.DisableSharing()
            $privateConfig.DisableSharing()
        }
    }
}

Note: The shell script is originally created by igoravl, I made some modification to simplify the process and get rid of some errors for our wireguard server application.

This shell script is written as a custom function «Set-NetConnectionSharing» and needs to be loaded in powershell.
Save the script in the following location:

C:\Windows\System32\WindowsPowerShell\v1.0\Modules\wireguard\wireguard.psm1

💡

wireguard.psm1 needs to be in a folder named wireguard for the function to be loaded by powershell

Now you can open a powershell window with administrative privilege and run the following commands to enable / disable NAT for our wireguard server interface.

#"wg_server" is the wireguard adapter name, replace it if you have something different.
#Enable NAT
Set-NetConnectionSharing "wg_server" $true

#Disable NAT
Set-NetConnectionSharing "wg_server" $false

If everything goes well, when you open the properties panel of your main internet network adaptor (Ethernet 3 in my case) the following options should be ticked:

Notice also the «Home networking connection» field should be populated with your wireguard interface name (picture shows Wireguar_Server but should be wg_server if you are following the tutorial).

Technically you can do this through the windows gui using the properties menu manually, but having this script will allow you to automate the server start/stop process as you will see later on in the tutorial.

Now everything should be working correctly, the client should be able to reach the internet and LAN network you allow it to.

Step 3.1: Change default Internet Connection Sharing IP

By default, when internet sharing (NAT) is enabled, Windows will change the IP address of the adapter to something else (to avoid conflicts). However, we already know what ip address we want to adapter to be (set in the [interface] block in our wireguard config), which is 192.168.200.1 in our case.
To modify the default IP Windows will switch to, we can simply change the setting in registry.
Open Registry Editor and go to the following path:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\SharedAccess\Parameters

Then simply change ScopeAddress and StandaloneDHCPAddress to the IP address we desire (192.168.200.1 in our case).

Disable and re-enable Internet connection sharing (NAT) using the powershell command in Step 3 to make sure this change takes place (you might need to restart computer).

Step 4: Enable persistent Internet Sharing on restart (updated 2/12/2020)

Since there is a windows bug that internet connection sharing will not auto start on reboot, we need to change a few settings to make sure internet sharing is started. The earlier tutorial used a scheduled task to accomplish this, but I’ve found a better way after reading the windows bug fix here.

Open the Service window and find «Internet Connection Sharing»:

wireguard server for windows tutorial

Chang the startup type to «Automatic»:

After that’s done, finally we add a registry:

Path: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedAccess
Type: DWORD (32bit)
Setting: EnableRebootPersistConnection
Value: 1

Step 4.1 (optional) Bat files to easily start / stop server manually

For convenience I also made two bat files to run these commands so I don’t have to open comman prompt or powershell everytime to start and stop the server.

Server start batch script: (save as «start.bat» and run with admin privilege)

@echo off
"C:\Program Files\WireGuard\wireguard.exe" /installtunnelservice "C:\Henry-Scripts\Wireguard_Server.conf"
"%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe" Set-NetConnectionSharing "Wireguard_Server" $true

Server stop batch script:  (save as «stop.bat» and run with admin privilege)

@echo off
"%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe" Set-NetConnectionSharing "Wireguard_Server" $false
"C:\Program Files\WireGuard\wireguard.exe" /uninstalltunnelservice Wireguard_Server

Final Remarks:

Compared to Linux, setting up a windows wireguard server can be tricky.
However, I have done most of the ground work for you (the powershell script to enable NAT).
Running the powershell script on startup with 3 minutes delay is not elegant, but it works.
There should be a way to run the task after the wireguard service is started and running, but I wasn’t able to get it to work. If you know how to get it to work, please share it with me.

If you like my work, feel free to buy me a coffee:

Установка

1) Скачайте текущую версию для Windows: https://www.wireguard.com/install/ и установите.
2) Запустите C:\Program Files\WireGuard\ wireguard.exe и добавьте пустой туннель (мы будем настраивать серверную часть):
Добавить туннель → Добавить пустой туннель …

Регистрируем настройки:
Имя — имя сетевого подключения
Открытый ключ — открытый ключ сервера WireGuard (необходим для настройки клиентской части)

[Interface]
PrivateKey = # приватный ключ сервера WireGuard
ListenPort = # порт, который будет слушать WireGuard
Address = # желаемый IP адрес сервера WireGuard

3) Добавьте еще один пустой туннель (мы будем настраивать клиентскую часть): Добавить туннель → Добавить пустой туннель
Регистрируем настройки:
Имя — имя сетевого подключения
Открытый ключ — открытый ключ клиента WireGuard (необходим для настройки серверной части)

[Interface]
PrivateKey = # приватный ключ клиента WireGuard
Address = # желаемый IP адрес клиента WireGuard
[Peer]
PublicKey = # публичный ключ сервера WireGuard (из шага 2)
AllowedIPs = # IP адреса локальных пользователей 
Endpoint = # IP адрес сервера (реальный, не WireGuard) и порт, который слушает сервер WireGuard (настроено в шаге 2)

4) Теперь нам нужно добавить нашего клиента в серверную часть WireGuard, для этого вернитесь к шагу 2 и добавьте его конфиг:


[Peer]
PublicKey = #Публичный ключ клиента WireGuard (из шага 3)
AllowedIPs = #IP адрес пользователя

5) Теперь достаточно экспортировать файлы конфигурации Экспортируйте все туннели в zip→Укажите место для экспорта→Сохранить

Далее откройте сохраненный архив, там будут конфигурации всех наших туннелей.
Отдайте клиенту его конфигурационный файл.
6) На сервере выберите конфиг сервера и запустите программу

7) На клиенте добавьте файл конфигурации в WireGuard. Добавить туннель→Выберите файл конфигурации клиента->Открыть

Выберите конфигурацию клиента и запустите

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

Автоматический запуск WireGuard после перезапуска сервера.

1) Добавьте файл запуска в автозапуск планировщика Windows: 

Пуск → taskschd.msc

Нажмите «Создать простую задачу» → Введите имя задачи (например, wireguard) → Далее

Выберите «При запуске компьютера» → Далее

Выберите «Начать программу» → Далее

В поле «Программа или сценарий» выберите наш файл для запуска WireGuard (по умолчанию это «C:\Program Files\WireGuard\wireguard.exe»)
Добавьте аргументы:

/installtunnelservice «C:\Program Files\WireGuard\wg_server.conf»

где:

C:\Program Files\WireGuard\wg_server.conf — расположение конфигурационного файла *.conf

Установите флажок «Открыть окно свойств для этой задачи после нажатия кнопки «Готово»»→ Готово

В открывшемся окне отметьте пункт «Выполнить с наивысшими правами» → OK

Выполнено. Сделайте перезагрузку, проверьте

С февраля 2022 года каждый пользователь в составе своего тарифа получает возможность использования сервера WireGuard и устанавливать одно подключение к нему из сети Интернет.

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

В рамах базового тарифа пользователю предоставляются 2 туннеля с протоколами PPTP, L2TP, L2TP/IPsec, IKEv2/IPsec, SSTP, OpenVPN и дополнительно одно соединение по протоколу WireGuard. Таким образом, каждый пользователь сможет одновременно установить три соединения к VPNKI.

Соединение WireGuard отличается еще и тем, что пока в нем нет возможности маршрутизации сетей, расположенных «за маршрутизатором», но мы планируем добавить такую возможность несколько позже.

Так как протокол WireGuard использует другую архитектуру, то логика его настройки на сервере VPNKI отличается от традиционной.

Мы хотим получить удаленный доступ к своей сети из Интернет с использованием протокола WireGuard. При этом наша сеть уже подключена к VPNKI по любому из протоколов — PPTP, L2TP/Ipsec, OpenVPN.

В качестве клиентского ПО мы будем использовать клиентское ПО WireGuard для Windows. Компьютер с клиентом WireGuard будет расположен в Интернет.

В момент подключения, в вашем клиентском ПО WireGuard будет создан туннельный интерфейс и использован адрес 172.16.0.3 сети VPNKI. Ну а хотим мы «достучаться» до сервера с адресом 192.168.1.10 в домашней сети.

Схема представлена здесь.

WireGuard сервер и клиент Windows настройка пример схемы

1. Подготовка сервера

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

Однако в нашей терминологии мы будем использовать слово «Сервер» применительно к тому WireGuard, который запущен на сервере VPNKI, а термин «Клиент» будем применять к Wireguard, который запущен на вашем компьютере с Windows.

Сначала нам будет необходимо сконфигурировать сервер WireGuard на VPNKI. Этот процесс состоит из двух шагов:

  • Выбор порта UDP на котором будет «слушать» ваш сервер WireGuard и ожидать подключения из сети Интернет.
  • Предварительная конфигурация сервера WireGuard — назначение приватного и публичного ключей сервера.

1.1. Начнем с выбора UDP порта. На главной странице туннелей выберите галочку «Использовать доступ через WireGuard».

WireGuard сервер запуск на VPNKI

Сервер выберет доступный UDP порт, на которому будет «слушать» ваш сервер WireGuard.

WireGuard сервер запуск на VPNKI выбор UDP порта

В данном примере система выбрала порт 26005 ( у вас будет какой-то другой). После завершения выбора порта можно переходить к предварительной конфигурации сервера.

1.2. На этом шаге система подготовит публичный и приватный ключи вашего сервере WireGuard.

Приватный ключ сервера VPNKI сохранит у себя, а вот публичный ключ покажет вам. Он будет необходим для корректной конфигурации вашего клиента WireGuard на ПК с ОС Windows.

 WireGuard сервер VPNKI конфигурация

Нажмите «Создать сервер WireGuard«.

WireGuard сервер VPNKI публичный ключ сервера

После генерации ключей система подготовила вам Публичный ключ сервера: Clu9YfM1KD8C+zl11fob2QDUiZcV1wqJzUOwihmavHA=. (у вас он будет какой-то другой).

На этом этап подготовки завершен и можно переходить к конфигурации клиента.

2. Установка клиента WireGuard

2.1. Установите ПО WireGuard на ваш ПК с ОС Windows, скачав пакет с официального сайта.

После установки вам будет необходимо создать новое соединение. Делается это в меню»Добавить туннель» и дальше нужно выбрать «Добавить пустой туннель».

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

После добавления пустого туннеля вам будет сгенерирован приватный и публичный ключи клиента. Эти ключи будут показаны на следующем экране. Нас будет интересовать только Публичный ключ (поле 1).

WireGuard клиент VPNKI настройка peer public key

2.2. Назовите как-нибудь соединение (например VPNKI) и нажмите «Сохранить«.

WireGuard клиент VPNKI настройка peer public key сохранить

Теперь у вас есть предварительно сконфигурированное подключение, но это еще не полная его конфигурация.

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

Выделите и скопируйте в буфер обмена Публичный ключ (поле 1). Сейчас мы перейдем к серверу VPNKI и укажем его там в настройках подключения.

3. Конфигурация подключения на сервере VPNKI

3.1. Вернитесь к экрану настройки сервера Wireguard и в разделе «Данные клиента» нажмите «Создать подключение».

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

3.2. На следующем экране вам предложат ввести «Публичный ключ клиента».

 WireGuard клиент публичный ключ

3.3. Вставьте Публичный ключ клиента из буфера обмена (который вы скопировали туда на шаге 2.2) и нажмите «Сохранить».

!!! Обратите внимание, что ключ всегда имеет длину 44 символа, последний из которых знак равенства =.

WireGuard клиент публичный ключ добавить

3.4. После сохранения публичного ключа клиента на сервере запустится процесс WireGuard и он будет готов принимать подключение.

WireGuard сервер полная конфигурация на VPNKI

Теперь осталась одна деталь… надо окончательно сконфигурировать клиента и попробовать подключиться.

4. Завершение конфигурации клиента WireGuard на ПК с ОС Windows для подключения

4.1. Завершим конфигурацию клиента. Для этого войдем в режим редактирования ранее созданного подключения при помощи кнопки «Редактировать«.

vpnki wireguard edit peer

4.2. Теперь вам нужно дозаполнить данные, которые будут описывать сервер и его данные. Это описание должно будет располагаться в месте красной рамки.

wireguard add text to peer 1

Взять эти данные для заполнения нам предстоит на сервере VPNKI. Для этого нажмите на кнопку «Конфигурация клиента».

vpnki wireguard add peer

Откроется окно с данными, которые вам будет необходимо перенести в конфигурацию вашего клиентского подключения.

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

wireguard vpnki add config lines to peer

Вот так:

wireguard vpnki add config lines to peer 2

Нажмите «Сохранить«.

Теперь ваше клиентское подключение полностью сконфигурировано и готово к подключению. После сохранения вы увидите полную конфигурацию вашего клиента.

Однако перед нажатием кнопки подключиться давайте все еще раз проверим и поясним детали.

  • В вашей настройке соединения на клиентском ПО верхняя часть описывает ваш собственный интерфейс. Хоть мы его и назвали VPNKI, но это ваш интерфейс. Он пока отключен. Его публичный ключ — OYUNru3L5zljznYR1NEHMCVFCgeIwQWal91O4Q8qwA0= IP адреса:172.16.0.3/32 это адрес, который будет использован на вашем интерфейсе после успешного подключения.

  • Нижняя часть (Пир) описывает сервер. Публичный ключ сервера — Clu9YfM1KD8C+zl11fob2QDUiZcV1wqJzUOwihmavHA= Адреса, при обращении к которым, трафик вашего клиента пойдет в туннель WireGuard — 172.6.0.0/16. Это адреса вашей сети VPNKI. То есть при успешном подключении из Интернет пинг с вашего ПК, отправленный по адресу 172.16.0.1 пойдет в интерфейс WireGuard, а не куда-либо еще. По сути, это правило для таблицы маршрутизации вашего ПК. Ну и в завершении — IP адрес сервера и порт — 84.201.157.25:26005. Это то, куда ваш клиент будет подключаться из Интернет используя протокол UDP. Наверное все.

wireguard vpnki full config on peer

 Теперь можно попробовать подключиться. Но ….

 5. Подключаемся снаружи

Обратите внимание, что эта инструкция подразумевает, что ваш клиентский ПК расположен в сети Интернет. Но если сейчас ваш ПК подключен к домашней сети, которая, в свою очередь, уже подключена к VPNKI то имеет смысл выключить этот ПК из домашней сети и подключить его, например, к сотовому оператору связи.

Если ваш ПК уже в Интернет, то нажимайте Подключить и смотрите за результатом.

wireguard vpnki connect successful

На скриншоте показано успешное подключение. Давайте попробуем выполнить пинг сервера VPNKI по туннелю WireGuard — ping 172.16.0.1.

wireguard vpnki ping over tunnel

Пинг успешен. Это хорошо. Но как быть если нужно выполнить пинг, например, адреса 192.168.1.1, который расположен где-то в вашей сети VPNKI.

С текущими настройками это будет невозможно. Потому что ваш клиент просто не отправляет пакеты к адресу 192.168.1.1 в интерфейс Wireguard. Вот пинг и не успешен…

wireguard vpnki ping over tunnel 2

Давайте добавим маршрут к вашей сети 192.168.1.0/24 через интерфейс WireGuard. Для этого остановим соединение и внесем изменение в настройки подключения на вашем клиенте. А именно …

wireguard vpnki add route on peer

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

wireguard vpnki ping over tunnel 3

Вот теперь все успешно. И в завершение можно выполнить пинг адреса сервера в домашней сети — 192.168.1.10.

wg last step 9

Теперь все.

PS: В процессе написания инструкции мы обратили внимание на некоторые странности в работе ПО WireGuard под Windows. При попытке подключения в статусе содинения может быть написано «Подключен», но при этом не появляется статистика числа переданных и полученных байт. Ну и фактически трафик по туннелю не передается. Поэтому больше доверяйте статистике, чем самому статусу подключения. Если статистика есть — значит туннель работает.

Спасибо за внимание и успехов в пингах!

*** WireGuard пока в тестовом режиме, если вдруг что-то не получилось, обращайтесь на Форум.

Search code, repositories, users, issues, pull requests…

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

  • Wireguard windows не работает интернет
  • Wireguard windows handshake did not complete
  • Wireguard vpn windows 10 настройка
  • Winx club игра 2006 скачать на windows 10
  • Wireguard unable to create network adapter windows 7