Перед выполнением описанных ниже команд убедитесь, что вы используете последнюю версию WireGuard и обладаете правами администратора на вашем устройстве.
Установка
1) Скачайте текущую версию для Windows: https://www.wireguard.com/install/ и установите.
2) Запустите C:\Program Files\WireGuard\wireguard.exe и добавьте пустой туннель (мы будем настраивать серверную часть):
Добавить туннель → Добавить пустой туннель …
Регистрируем настройки:
Имя — имя сетевого подключения
Открытый ключ — открытый ключ сервера WireGuard (необходим для настройки клиентской части)
[Interface] PrivateKey = # private key of WireGuard server ListenPort = # port that WireGuard will listen to Address = # desired IP address of WireGuard server
Включить параметры, позволяющие серверу WG использовать основной сетевой интерфейс
3) Добавляем еще один пустой туннель (будем настраивать клиентскую часть): Add tunnel → Add empty tunnel
Регистрируем настройки:
Имя — имя сетевого подключения
Открытый ключ — открытый ключ клиента WireGuard (необходим для настройки серверной части)
[Interface] PrivateKey = # WireGuard client private key Address = # desired IP address of WireGuard client [Peer] PublicKey = # public key of the WireGuard server (from step 2) AllowedIPs = # specify the IP addresses for which you want to use the created WG tunnel (specifying the subnet 0.0.0.0/0 will allow you to route all traffic to the WG tunnel) Endpoint = # Server IP address (real, not WireGuard) and port that WireGuard server listens on (configured in step 2)
4) Теперь нам нужно добавить нашего клиента в серверную часть WireGuard, для этого вернитесь к шагу 2 и добавьте его конфиг:
... [Peer] PublicKey = #WireGuard client public key (from step 3) AllowedIPs = #IP user address
5) Настроим брандмауэр Windows для работы с WireGuard. Для этого:
- Создадим новое правило для входящего трафика:
-
Откройте «Windows Defender Firewall with Advanced Security» (Брандмауэр Windows с повышенной безопасностью).
-
В левой панели выберите «Inbound Rules» (Входящие правила).
-
Нажмите «New Rule…» (Создать правило).
-
- Укажем протокол (UDP) и порты (например, 51820):
-
В появившемся окне «New Inbound Rule Wizard» выберите «Port» (Порт) и нажмите «Next» (Далее).
- В разделе «Protocol and Ports» (Протокол и порты) выберите тип протокола:
-
Выберите «UDP».
-
- Укажите конкретные локальные порты (Specific local ports):
-
Например, порт WireGuard по умолчанию — 51820.
-
Если используется несколько портов, перечислите их через запятую (например: 51820, 51821).
-
-
Нажмите «Next» (Далее).
-
- Разрешим подключения:
-
В разделе «Action» (Действие) выберите «Allow the connection» (Разрешить подключение).
-
Нажмите «Next» (Далее).
-
- Сохраним правило:
- Определите профили, для которых будет применяться правило:
-
Domain (Доменный);
-
Private (Частный);
-
Public (Общий).
-
-
Нажмите «Next» (Далее).
-
Укажите понятное имя для нового правила, например: «WireGuard UDP 51820».
-
Нажмите «Finish» (Готово).
- Определите профили, для которых будет применяться правило:
Ваш брандмауэр настроен на пропуск трафика через указанные порты WireGuard
6) Теперь достаточно экспортировать файлы конфигурации Экспортировать все туннели в zip→Указатьместо для экспорта→Сохранить
Далее откройте сохраненный архив, там будут конфигурации всех наших туннелей.
Отдайте клиенту его конфигурационный файл.
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
Установите флажок «Открыть окно свойств для этой задачи после нажатия кнопки «Готово»» → Готово
В открывшемся окне отметьте пункт «Запускать с наивысшими правами»→ОК
Готово. Выполните перезагрузку, проверьте
Инструкция обновлена 14.10.2024
WireGuard — open-source-проект с открытым исходным кодом, который позволяет легко и удобно настраивать шифрованные туннели.
- Официальный сайт
- Официальный репозиторий Github
Коротко, чем мне нравится WireGuard:
- Скорость работы (минимальная задержка, максимальная пропускная способность)
- Удобство установки и настройки
Из минусов:
- Требуется установка дополнительного ПО на клиентских устройствах (не слишком серьезный минус, так как поддерживаются все платформы, а многие современные маршрутизаторы уже имеют поддержку Wireguard из коробки).
В сети много различных гайдов и инструкций по настройке и установке. Для ознакомления рекомендую следующее:
- Инструкция на официальном сайте
- Инструкция на Timeweb Cloud
В этой инструкции я опишу простые способы начала использования WireGuard и интересные решения — побольше примеров и практики, поменьше воды и теории.
Установка сервера через маркетплейс Timeweb Cloud
В панели идем в Облачные серверы > Добавить > Маркетплейс > Сеть > Wireguard GUI.
Выбираю Нидерланды, убираю бэкапы, нажимаю «Заказать сервер».
Необходимо минут 5 на создание виртуальной машины и установку ПО, затем придет сообщение на почту, что сервер готов к работе.
cloud
Настройка и подключение
Перейду по адресу из письма и войду в интерфейс со своим паролем.
Web-интерфейс — минималистичный и интуитивно понятный.
Добавляю новых клиентов для подключения с Android и Windows PC.
Доступны два способа подключения к серверу с клиентского устройства:
- QR-код — удобно с мобильного устройства.
- Config-файл — для ПК проще загрузить файл конфигурации.
На скриншоте выше видны кнопки для открытия QR-кода и скачивания конфигурационного файла.
Android
Для запуска на смартфоне нужно скачать с GooglePlay официальный клиент Wireguard.
Далее нужно открыть приложение > отсканировать QR-код с web-интерфейса > нажать «Подключиться».
Проверяю IP-адрес на сайте 2ip.ru. Вижу IP-адрес сервера — значит, все работает.
Windows
Для подключения нужно:
- Скачать клиент для Windows можно с официального сайта.
- В веб-интерфейсе скачать конфигурационный файл.
- Запустить клиент > Добавить туннель > Выбрать файл -> Нажать «Подключить».
В целом, это все, уже можно пользоваться. Весь процесс занял около 15 минут:
- создание сервера,
- скачивание клиентов,
- подключение с Android- и Windows-клиентов.
Еще есть много тонких настроек конфигурации, но на практике хватает способа, который показан выше с минимальными настройками и затратами. Как правило, WireGuard можно один раз поднять, настроить и забыть — работает стабильно.
Информации выше достаточно для того, чтобы легко начать пользоваться, а дальше я буду описывать дополнительные функции и интересные решения.
Проверка скорости
Для начала проверю скорость интернета с самого сервера. Для этого придется установить инструмент Speedtest CLI:
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt-get install speedtest
Скорость 194 Mbs — отлично.
Теперь проверим на Windows PC с подключением WireGuard:
172 Mbs — неплохо (ожидал на уровне 180, но вполне нормально).
Установка сервера через docker-compose
В целом, решение c WebGUI и установка через маркетплейс Timeweb Cloud в одну кнопку очень упрощает процесс, но хочется больше контроля и удобства для обслуживания. Например, может требоваться установка на другом хостинге или на своем удаленном сервере, где нет маркетплейса.
Так как мне очень нравится Docker, буду использовать его для установки точно такого же WireGuard с веб-интерфейсом.
Начинаю с чистой чистой системы: Создать сервер > Ubuntu 24.04.
После создания и подключения к серверу нужно обновить пакеты и установить docker
и docker-compose
:
apt update && apt upgrade -y
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Следующим шагом нужно создать безопасный зашифрованный пароль для веб-интерфейса. Для этого скачаем образ wg-ease
:
docker pull ghcr.io/wg-easy/wg-easy
И запустим команду:
docker run -it ghcr.io/wg-easy/wg-easy wgpw YOUPASSWORD
Вместо YOURPASSWORD
подставьте свой пароль.
На выходе получаем свой пароль в зашифрованном виде, примерно такого формата:
$2a$12$BGXo0fIV4s0gVEaNQDggpeVz01MhlG8DzSLfs2tbvuKTSoaXoKi1G
Оригинальный пароль нужно запомнить и сохранить, обратно расшифровать вы его уже не сможете (но пароль можно поменять, настройки при этом сохраняются).
Создадим новый файл compose.yaml
:
nano compose.yaml
В редакторе вставляю следующую конфигурацию:
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy
container_name: wg-easy
environment:
LANG: ru
WG_HOST: '194.87.220.159' # Hostname or server white IP address
PASSWORD_HASH: $$2a$$12$$BGXo0fIV4s0gVEaNQDggpeVz01MhlG8DzSLfs2tbvuKTSoaXoKi1G
MAX_AGE: 15
volumes:
- ./wireguard:/etc/wireguard
ports:
- 51820:51820/udp
- 51821:51821/tcp
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
Важно:
WG_HOST
— внешний IP-адрес вашего сервера.PASSWORD_HASH
— зашифрованный пароль от веб-интерфейса WireGuard. Здесь нужно установить пароль созданный выше, без кавычек, но все знаки$
заменить на$$
(задвоить).
Сохраняю изменения, после чего выполняю команду для запуска:
docker compose up -d
После запуска можно проверить и открыть в браузере по адресу http://IP-адрес:51821
, в моем случае: http://194.87.220.159:51821
.
В итоге получим тот же знакомый web-интерфейс.
Сам проект называется wg-easу
. В репозитории можно ознакомиться с более подробными настройками.
Дополнительно есть возможность в разделе environment
docker-compose файла, изменить некоторую конфигурацию:
-
PASSWORD_HASH
— зашифрованный пароль для WebGUI. -
WG_HOST
— hostname или IP-адрес. -
WG_DEVICE
— устройство Ethernet, через которое должен пересылаться трафик WireGuard. -
WG_PORT
— общедоступный UDP-порт сервера (51280). -
WG_MTU
— MTU, который будут использовать клиенты. Сервер использует WG MTU по умолчанию. -
WG_PERSISTENT_KEEPALIVE
— значение в секундах для проверки соединения. Если это значение равно 0, то соединения не будут поддерживаться в рабочем состоянии. -
WG_DEFAULT_ADDRESS
— диапазон адресов, которые будут выдаваться клиентам. -
WG_DEFAULT_DNS
— DNS-сервер. -
WG_ALLOWED_IPS
— разрешенные IP-адреса, которые будут использовать клиенты. MAX_AGE
— максимальное время сеансов веб-интерфейса в минутах. Значение по умолчанию (0) означает, что сеанс будет продолжаться до тех пор, пока браузер не будет закрыт.UI_TRAFFIC_STATS
— отображение активной статистики соединения по каждому клиенту. По умолчанию выключено, для включения необходимо установить значениеtrue
.UI_CHART_TYPE
— вид отображения статистики от 1 до 3 (обычно 3 — самый простой удобный формат в виде бара).
Данный способ установки позволяет удобнее управлять конфигурацией, перезапускать, переносить и править настройки. Также становится удобнее запускать на этом сервере другие сервисы, тоже в Docker, при необходимости.
Доступ к локальным ресурсам при установленном подключении
Этот пункт редко встречается в инструкциях, но мне кажется будет полезным.
При подключении к WireGuard весь трафик пойдет через туннель и к локальным ресурсам напрямую обратиться не получится
В конфигурации WireGuard есть значение AllowedIPs
, где можно указать, какие адреса пойдут через WG. По умолчанию это 0.0.0.0.0/0
, т.е. весь трафик идет через туннель. Для доступа к локальным ресурсам приходится делать наоборот, и все адреса, за исключением нужных (серого списка IP-адресов), добавлять в AllowedIPs
.
Для этого в файле docker-compose.yml
можно добавить environment
-переменную и перезапустить контейнер.
environment:
WG_ALLOWED_IPS: '0.0.0.0/5, 8.0.0.0/7, 11.0.0.0/8, 12.0.0.0/6, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/3, 160.0.0.0/5, 168.0.0.0/6, 172.0.0.0/12, 172.32.0.0/11, 172.64.0.0/10, 172.128.0.0/9, 173.0.0.0/8, 174.0.0.0/7, 176.0.0.0/4, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 8.8.8.8/32'
А в WireGuard WebGUI из маркетплейса перезапустить контейнер с добавлением флага:
-e WG_ALLOWED_IPS='0.0.0.0/5, 8.0.0.0/7, 11.0.0.0/8, 12.0.0.0/6, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/3, 160.0.0.0/5, 168.0.0.0/6, 172.0.0.0/12, 172.32.0.0/11, 172.64.0.0/10, 172.128.0.0/9, 173.0.0.0/8, 174.0.0.0/7, 176.0.0.0/4, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 8.8.8.8/32'
Или на клиентском устройстве отредактировать конфигурационный файл подключения:
[Peer]
PublicKey = PublicKey
PresharedKey = PresharedKey
AllowedIPs = 0.0.0.0/5, 8.0.0.0/7, 11.0.0.0/8, 12.0.0.0/6, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/3, 160.0.0.0/5, 168.0.0.0/6, 172.0.0.0/12, 172.32.0.0/11, 172.64.0.0/10, 172.128.0.0/9, 173.0.0.0/8, 174.0.0.0/7, 176.0.0.0/4, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 8.8.8.8/32
Endpoint = Endpoint
Итоги
На мой взгляд, WireGuard— один из простых и удобных в использовании сервисов для безопасного доступа в сеть и построения шифрованных каналов связи. Для разных задач я настраивал и использовал PPTP, SSTP, L2TP/IPsec и другие — у каждого есть свои плюсы и минусы. Для каждой задачи нужно подбирать наиболее подходящие инструменты. На данный момент Wireguard справляется со всем необходимыми для меня задачами и не доставляет проблем.
Проект активно развивается, все больше различных устройств поддерживают Wireguard, а некоторые команды разработчиков создают еще дополнительные UI для расширения конфигурации и более удобного управления через GUI (например, проект NetMaker).
Время на прочтение6 мин
Количество просмотров62K
Подозреваю, что я не один такой, кто держит дома в режиме 24/7 маленький и тихий системный блок с Windows в качестве сервера, на который можно зайти по RDP (с того же смартфона) и несколько переживает в связи с количеством «неслучайных» попыток к нему подключиться. Задача не новая и вполне себе решаемая, например можно рассмотреть следующие варианты:
-
Настроить OpenSSH сервер, начиная с Windows 10 1809 он официально часть дистрибутива, включить авторизацию по ключам и заходить на RDP через SSH тоннель. На маршрутизаторе соответственно настроить перенаправление только для SSH порта. Из плюсов — достаточно безопасно, из минусов:
-
Не очень понятно, можно ли зайти со смартфона (для iPhone вероятно понадобится какой-то гибридный RDP клиент).
-
Поддерживается только TCP, а RDP уже довольно давно умеет использовать преимущества UDP.
-
Обновления Windows имеют необъяснимое свойство отключать OpenSSH, не знаю с чем это связано, но несколько за год раз такое было.
-
-
Настроить VPN непосредственно на маршрутизаторе. В целом, решение рабочее и минусы тут довольно субъективные:
-
Не хочется вешать на маршрутизатор дополнительную «необязательную» нагрузку.
-
Открывается дополнительный вектор атаки непосредственно на маршрутизатор.
-
Требует определенных технических навыков.
-
-
Дополнительно установить Raspberry Pi и на нем настроить VPN (можно ещё много чего на ней запустить). До сих пор пользуюсь, отличный вариант, если есть необходимые навыки и немного денег на «малинку».
-
Скорее для полноты картины, чем для реального домашнего использования, можно установить Hyper-V на нашу машинку с Windows, создать виртуальную машину с Linux и на нем настроить VPN. Как и в предыдущем случае:
-
Требует определенных технических навыков.
-
Увеличивается нагрузка на наш не особенно могучий домашний сервер (у меня это обычно Intel NUC) .
-
Могут возникнуть проблемы при отключении питания (виртуальная машина окажется в состоянии Saved и VPN будет недоступен).
-
-
Ну и наконец, можно установить сервер 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), а тот из них который определен согласно действующей таблице маршрутизации.
Итак, сформулируем задачу
-
Максимально упростить процесс установки и настройки WireGuard. Давление на компании предоставляющие услуги VPN нарастает и, согласитесь, было бы неплохо, если бы любой пользователь Windows мог бы:
-
Настроить WireGuard на сервере расположенном облаке, не погружаясь в особенности реализации. Я не призываю к обходу блокировок уважаемого Роскомнадзора, но это так же может быть необходимо, чтобы обойти географические ограничения на какие-то продукты или услуги. Например, до недавнего времени, Ghidra нельзя было скачать с российского IP адреса. Сайт и сейчас вас не пустит, но сам дизассемблер можно скачать с Github. Или цена (валюта расчетов) на авиабилеты может варьироваться в зависимости от страны, с IP которой Вы зашли на сайт авиакомпании. Или можем вспомнить недавнюю историю с «неофициально» ввезенными телевизорами Samsung, у которых «неожиданно» отключилась функция Smart TV. Вернуть телевизор к нормальной жизни можно было только подключив его через европейский VPN. И это только то, что я сходу смог вспомнить…
-
Установить WireGuard на домашнем Windows сервере и получить постоянный защищенный доступ в собственную сеть и пользоваться ВСЕМИ сервисами доступными ему дома независимо от того в какой точке мира он находится. Например, понравилась мне Яндекс Станция (это не реклама, я действительно их довольно много приобрел для себя, для семьи, в подарки друзьям), да так, что я даже одну привез на Тенерифе. И тут выяснилась удивительная подробность, Яндекс-музыка работает за границей, а вот КиноПоиск ссылается на географические ограничения и отказывается работать. Было бы обидно, но настроил WireGuard клиента на роутере Keenetic и подключил Яндекс станцию через домашний VPN в России. А еще не так уж давно я проделывал что-то подобное для Amazon Fire Stick, чтобы нормально пользоваться подпиской Prime. Могу ошибаться, но кажется где-то читал, что и сам WireGuard был изначально придуман, чтобы смотреть американский Netflix из Австралии.
-
-
Использовать некую альтернативу 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 на внешние адреса.
Таким образом, основные задачи вроде бы выполнены. И если к проекту будет интерес, то ему есть куда развиваться, например:
-
На данный момент (v.1.0.2.4) отсутствует поддержка IPv6.
-
«Белые» IPv4 постепенно становятся редкостью, поэтому хотелось бы организовать работу WireGuard сервера за NAT (или даже multi-NAT) Интернет-провайдера. Здесь правда без внешнего сервиса (с «белым» IP) обойтись не удастся.
Буду рад любым отзывам и замечаниям…
С февраля 2022 года каждый пользователь в составе своего тарифа получает возможность использования сервера WireGuard и устанавливать одно подключение к нему из сети Интернет.
Соединение WireGuard является дополнительным к вашим существующим туннелям и использование WireGuard не считается туннелем в рамках тарифного плана.
В рамах базового тарифа пользователю предоставляются 2 туннеля с протоколами PPTP, L2TP, L2TP/IPsec, IKEv2/IPsec, SSTP, OpenVPN, Openconnect и дополнительно одно соединение по протоколу WireGuard. Таким образом, каждый пользователь сможет одновременно установить три соединения к VPNKI.
Соединение WireGuard отличается еще и тем, что пока в нем нет возможности маршрутизации сетей, расположенных «за маршрутизатором», но мы планируем добавить такую возможность несколько позже.
Так как протокол WireGuard использует другую архитектуру, то логика его настройки на сервере VPNKI отличается от традиционной.
0. Исходные данные для удаленного доступа через WireGuard
Мы хотим получить удаленный доступ к своей сети из Интернет с использованием протокола WireGuard. При этом наша сеть уже подключена к VPNKI по любому из протоколов — PPTP, L2TP/Ipsec, OpenVPN.
В качестве клиентского ПО мы будем использовать клиентское ПО WireGuard для Windows. Компьютер с клиентом WireGuard будет расположен в Интернет.
В момент подключения, в вашем клиентском ПО WireGuard будет создан туннельный интерфейс и использован адрес 172.16.0.3 сети VPNKI. Ну а хотим мы «достучаться» до сервера с адресом 192.168.1.10 в домашней сети.
Схема представлена здесь.
1. Подготовка сервера
Основная особенность WireGuard состоит в том, что у него нет понятия клиент и сервер, а все соединения равнозначны.
Однако в нашей терминологии мы будем использовать слово «Сервер» применительно к тому WireGuard, который запущен на сервере VPNKI, а термин «Клиент» будем применять к Wireguard, который запущен на вашем компьютере с Windows.
Сначала нам будет необходимо сконфигурировать сервер WireGuard на VPNKI. Этот процесс состоит из двух шагов:
- Выбор порта UDP на котором будет «слушать» ваш сервер WireGuard и ожидать подключения из сети Интернет.
- Предварительная конфигурация сервера WireGuard — назначение приватного и публичного ключей сервера.
1.1. Начнем с выбора UDP порта. На главной странице туннелей выберите галочку «Использовать доступ через WireGuard».
Сервер выберет доступный UDP порт, на которому будет «слушать» ваш сервер WireGuard.
В данном примере система выбрала порт 26005 ( у вас будет какой-то другой). После завершения выбора порта можно переходить к предварительной конфигурации сервера.
1.2. На этом шаге система подготовит публичный и приватный ключи вашего сервере WireGuard.
Приватный ключ сервера VPNKI сохранит у себя, а вот публичный ключ покажет вам. Он будет необходим для корректной конфигурации вашего клиента WireGuard на ПК с ОС Windows.
Нажмите «Создать сервер WireGuard«.
После генерации ключей система подготовила вам Публичный ключ сервера: Clu9YfM1KD8C+zl11fob2QDUiZcV1wqJzUOwihmavHA=. (у вас он будет какой-то другой).
На этом этап подготовки завершен и можно переходить к конфигурации клиента.
2. Установка клиента WireGuard
2.1. Установите ПО WireGuard на ваш ПК с ОС Windows, скачав пакет с официального сайта.
После установки вам будет необходимо создать новое соединение. Делается это в меню»Добавить туннель» и дальше нужно выбрать «Добавить пустой туннель».
После добавления пустого туннеля вам будет сгенерирован приватный и публичный ключи клиента. Эти ключи будут показаны на следующем экране. Нас будет интересовать только Публичный ключ (поле 1).
2.2. Назовите как-нибудь соединение (например VPNKI) и нажмите «Сохранить«.
Теперь у вас есть предварительно сконфигурированное подключение, но это еще не полная его конфигурация.
Мы вернемся к нему чуть позже, а пока пришло время сообщить серверу публичный ключ клиента, а клиенту сообщить публичный ключ сервера. Вроде бы просто, но путаница возникает часто.
Выделите и скопируйте в буфер обмена Публичный ключ (поле 1). Сейчас мы перейдем к серверу VPNKI и укажем его там в настройках подключения.
3.1. Вернитесь к экрану настройки сервера Wireguard и в разделе «Данные клиента» нажмите «Создать подключение».
3.2. На следующем экране вам предложат ввести «Публичный ключ клиента».
3.3. Вставьте Публичный ключ клиента из буфера обмена (который вы скопировали туда на шаге 2.2) и нажмите «Сохранить».
!!! Обратите внимание, что ключ всегда имеет длину 44 символа, последний из которых знак равенства =.
3.4. После сохранения публичного ключа клиента на сервере запустится процесс WireGuard и он будет готов принимать подключение.
Теперь осталась одна деталь… надо окончательно сконфигурировать клиента и попробовать подключиться.
4. Завершение конфигурации клиента WireGuard на ПК с ОС Windows для подключения
4.1. Завершим конфигурацию клиента. Для этого войдем в режим редактирования ранее созданного подключения при помощи кнопки «Редактировать«.
4.2. Теперь вам нужно дозаполнить данные, которые будут описывать сервер и его данные. Это описание должно будет располагаться в месте красной рамки.
Взять эти данные для заполнения нам предстоит на сервере VPNKI. Для этого нажмите на кнопку «Конфигурация клиента».
Откроется окно с данными, которые вам будет необходимо перенести в конфигурацию вашего клиентского подключения.
На скриншоте ниже показаны два окна — окно сервера VPNKI и окно редактирования клиентского подключения. Рамкой отомечен тот текст, который вам нужно будет скопировать и вставить.
Вот так:
Нажмите «Сохранить«.
Теперь ваше клиентское подключение полностью сконфигурировано и готово к подключению. После сохранения вы увидите полную конфигурацию вашего клиента.
Однако перед нажатием кнопки подключиться давайте все еще раз проверим и поясним детали.
- В вашей настройке соединения на клиентском ПО верхняя часть описывает ваш собственный интерфейс. Хоть мы его и назвали 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. Наверное все.
Теперь можно попробовать подключиться. Но ….
5. Подключаемся снаружи
Обратите внимание, что эта инструкция подразумевает, что ваш клиентский ПК расположен в сети Интернет. Но если сейчас ваш ПК подключен к домашней сети, которая, в свою очередь, уже подключена к VPNKI то имеет смысл выключить этот ПК из домашней сети и подключить его, например, к сотовому оператору связи.
Если ваш ПК уже в Интернет, то нажимайте Подключить и смотрите за результатом.
На скриншоте показано успешное подключение. Давайте попробуем выполнить пинг сервера VPNKI по туннелю WireGuard — ping 172.16.0.1.
Пинг успешен. Это хорошо. Но как быть если нужно выполнить пинг, например, адреса 192.168.1.1, который расположен где-то в вашей сети VPNKI.
С текущими настройками это будет невозможно. Потому что ваш клиент просто не отправляет пакеты к адресу 192.168.1.1 в интерфейс Wireguard. Вот пинг и не успешен…
Давайте добавим маршрут к вашей сети 192.168.1.0/24 через интерфейс WireGuard. Для этого остановим соединение и внесем изменение в настройки подключения на вашем клиенте. А именно …
Добавим через запятую нужные адреса сетей, которые должны быть доступны через туннель WireGuard, сохраним настройки, переподключитмся и выполним пинг 192.168.1.1 .
Вот теперь все успешно. И в завершение можно выполнить пинг адреса сервера в домашней сети — 192.168.1.10.
Теперь все.
PS: В процессе написания инструкции мы обратили внимание на некоторые странности в работе ПО WireGuard под Windows. При попытке подключения в статусе содинения может быть написано «Подключен», но при этом не появляется статистика числа переданных и полученных байт. Ну и фактически трафик по туннелю не передается. Поэтому больше доверяйте статистике, чем самому статусу подключения. Если статистика есть — значит туннель работает.
Спасибо за внимание и успехов в пингах!
*** WireGuard пока в тестовом режиме, если вдруг что-то не получилось, обращайтесь на Форум.
Безопасное и стабильное VPN-соединение обеспечивает защиту данных и конфиденциальность в сети. Простота процесса и минимальные требования делают WireGuard на Windows доступным для пользователей с разным уровнем подготовки.
Настроить VPN на Windows через WireGuard не так сложно, как выглядит на первый взгляд. Но лучше весь процесс выполнять поэтапно, особенно если раньше не приходилось сталкиваться с такими вещами. Придётся создать ключи, прописать настройки, но всё это вполне выполнимо, если идти шаг за шагом.
Разберёмся, как правильно запустить безопасное соединение.
WireGuard предлагает эффективное решение для организации VPN на Windows, улучшая скорость и безопасность подключения.
Наши технические специалисты помогут вам определиться с конфигурацией и настроят ваш VPN-сервер под ключ, если это будет необходимо.
Преимущества WireGuard
WireGuard — это современный VPN-протокол, который работает быстрее и стабильнее старых решений вроде OpenVPN и L2TP. Он потребляет меньше ресурсов, а соединение устанавливается мгновенно. Это отличный вариант для организации безопасного подключения к корпоративной сети или защиты данных в публичных Wi-Fi. Важно помнить, что использование VPN в России регулируется законом, и его цель — обеспечение безопасной работы с данными, а не обход блокировок. Подробнее об этом можно прочитать в статье 15.4 Федерального закона № 149-ФЗ «Об информации, информационных технологиях и о защите информации».
Что понадобится для настройки:
- компьютер с Windows 10 или 11;
- подключение к интернету;
- конфигурационные файлы VPN (их можно получить у провайдера или настроить вручную).
Запрет VPN в России: законы и их практическое применение
Шаг 1. Установка WireGuard
Перейдите на сайт WireGuard. Вам нужна версия для Windows. Скачайте установочный файл. Запустите установку и следуйте инструкциям.
По окончании процесса в системе появится новая сеть (виртуальный адаптер WireGuard), через которую будет идти весь VPN-трафик.
Шаг 2. Получение конфигурационного файла
Если вы используете готовый VPN-сервис, провайдер обычно предоставляет конфигурацию в файле .conf. Его можно скачать в личном кабинете или получить на почту.
Если конфигурации нет, придётся создать её вручную.
Шаг 3. Создание конфигурации вручную
Откройте WireGuard и нажмите «Добавить туннель» → «Создать пустой». Присвойте название, например, VPN.
Генерация ключей. WireGuard автоматически создаст пару PrivateKey (закрытый) и PublicKey (открытый). Закрытый ключ остаётся в настройках, а открытый нужно передать администратору сервера.
Шаг 4. Настройка соединения
В окне конфигурации укажите параметры:
[Interface]
PrivateKey = ВАШ_ЗАКРЫТЫЙ_КЛЮЧ
Address = 10.0.0.2/24
DNS = 8.8.8.8
[Peer]
PublicKey = ПУБЛИЧНЫЙ_КЛЮЧ_СЕРВЕРА
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
Где:
- ВАШ_ЗАКРЫТЫЙ_КЛЮЧ — сгенерированный PrivateKey.
- ПУБЛИЧНЫЙ_КЛЮЧ_СЕРВЕРА — берётся из инструкции к VPN-серверу.
- AllowedIPs — указывает, какие IP-адреса должны идти через VPN (0.0.0.0/0 означает весь трафик).
- PersistentKeepalive — параметр, поддерживающий активное соединение (25 секунд — стандартное значение).
Сохраните настройки.
Шаг 5. Подключение к VPN
Откройте WireGuard. Выберите созданный туннель. Нажмите «Активировать». Если всё настроено правильно, появится статус «Подключено».
Теперь ваш трафик идёт через VPN, а данные защищены.
Шаг 6. Работа VPN
Увидеть, работает ли VPN, помогут два действия.
Проверка IP-адреса: зайдите на whoer.net или ipleak.net и убедитесь, что отображается IP VPN-сервера, а не ваш настоящий.
Если IP не изменился:
- проверьте, действительно ли VPN-соединение активно — в WireGuard статус должен быть «Подключено»;
- отключите и заново включите VPN;
- убедитесь, что в файле конфигурации правильно указан Endpoint (адрес VPN-сервера);
- если используете сторонний VPN-сервис, попробуйте загрузить новую конфигурацию или свяжитесь с поддержкой.
Проверка утечек DNS: откройте dnsleaktest.com или surfshark.com, запустите тест и посмотрите, какие серверы отображаются в результатах. Если там указаны серверы вашего интернет-провайдера, значит, DNS-запросы идут в обход VPN, и соединение не полностью защищено.
Если DNS-запросы идут мимо VPN, откройте настройки WireGuard и добавьте строки:
DNS = 8.8.8.8
или
DNS = 1.1.1.1
Перезапустите VPN и повторите тест.
Если утечки сохраняются, может быть, ваш браузер или антивирус принудительно использует другие DNS-серверы. Тогда отключите «Безопасный DNS» в браузере.
Что делать, если VPN не подключается
Убедитесь, что ключи введены правильно. Возможно, сервер не принимает соединение из-за ошибок в конфигурации.
Если ваш VPN не подключается, это может означать, что порт, через который происходит соединение, заблокирован брандмауэром Windows. Чтобы устранить эту проблему, необходимо убедиться, что нужный порт открыт. Например, для WireGuard это может быть порт 51820. Давайте попробуем.
Запуск брандмауэра Windows:
- нажмите Win+R, чтобы открыть окно «Выполнить»;
- введите control и нажмите Enter, чтобы попасть в Панель управления;
- в панели управления выберите Брандмауэр Windows Defender;
- затем слева в меню кликните на «Дополнительные параметры», чтобы перейти к расширенным настройкам.
Создание правила для входящего трафика:
- в новом окне в левой части выберите раздел «Правила для входящих подключений»;
- справа нажмите на «Создать правило».
Тип правила: в появившемся окне выберите Порт и нажмите Далее.
Настройка порта:
- определите, какой протокол используется для вашего VPN: TCP или UDP;
- в разделе «Указание порта» выберите опцию «Определённые порты»;
- введите номер порта (например, 51820 для WireGuard) и нажмите «Далее».
Разрешение подключения. На следующем экране выберите Разрешить подключение и нажмите Далее.
Когда правило будет применяться: оставьте все параметры по умолчанию (для всех типов сетевых подключений: доменный, частный, публичный), чтобы правило работало в любой ситуации. Нажмите «Далее».
Задайте имя правила. Введите название для нового правила, например, «Разрешить VPN», и нажмите «Готово».
Теперь брандмауэр пропустит трафик через открытый вами порт, и ваше VPN-соединение должно заработать без проблем.
Перезагрузите адаптер WireGuard: зайдите в «Сетевые подключения» и отключите, а затем включите виртуальный адаптер WireGuard.
Попробуйте другой сервер (если используете коммерческий VPN-сервис, возможно, выбранный сервер перегружен).
Дополнительные рекомендации
Храните ключи в безопасном месте. Если потеряете PrivateKey, придётся генерировать новую пару ключей.
Обновляйте WireGuard — разработчики регулярно выпускают исправления.
Используйте стабильные DNS-серверы. Например, Google (8.8.8.8) или Cloudflare (1.1.1.1).
Теперь WireGuard настроен на Windows, и соединение работает. Если всё сделано правильно, интернет станет безопаснее, а работа с удалёнными сервисами — комфортнее.
Читайте в блоге:
- Протокол VPN WireGuard — непреодолимая цифровая стена для защиты данных
- Установка VPN на VPS с Ubuntu: как запустить собственный сервер
- VPS сервер для VPN бесплатно: мифы, риски и реальность