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

Обновлено: 06.07.2024

Это подробная инструкция по настройке личного VPN на протоколе Wireguard, чтобы обходить блокировки Роскомнадзора и защищаться от хакеров в чужих Wi-Fi с компьютеров и телефонов. По шагам, с картинками, для самых маленьких.

Если вы в России, у вас наверняка не работает LinkedIn или тормозит Twitter, а в месте с ним и половина интернета. VPN поможет нивелировать вредительство провайдеров и государственных органов. Кроме того, в общедоступных Wi-Fi точках, к которым вы подключаетесь в кафе, могут сидеть мамкины хакеры, которые перехватывают трафик и могут украсть у вас данные или подсунуть вирус. Достаточно включить VPN, и ваш трафик станет для таких вредителей недоступен.

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

Обычно VPN-сервисы продают аккаунты с ограничением на одновременное количество пользователей. Тот же Astrill, популярный в Китае, не позволяет подключаться больше чем с трёх устройств одновременно, при этом в месяц их VPN стоит от $10. Со своим сервером вы можете легко создать 10-20 пользователей и раздать их всем своим друзьям и знакомым: даже самый дешёвый VPS за $5 в месяц справится с такой нагрузкой.

Конечно, у платных VPN есть свои плюсы, например быстрое переключение между локациями (чтобы сменить сервер с Германии на США, например), особо продвинутые средства обхода блокировок и тому подобное. К счастью, в России блокировки осуществляются довольно просто, и для их обхода такие сервисы избыточны.

Вам понадобится VPS — самый дешёвый хостинг в стране, где блокировок нет. Мои рекомендации:


    от $3.5 в месяц, при регистрации по рефералке дадут $100 на месяц.
    от $5 в месяц, по рефералке дадут $100 на два месяца.
    от $5 в месяц, по рефералке ничего не дают, зато считают использование по часам — можно экспериментировать за гроши.

Или любой другой сервер на Ubuntu за пределами России, к которому у вас есть root-доступ.

Шаг 1 — Запустите VPS

Нужен самый простой сервер на Ubuntu 20.04 или новее.

  1. Перейдите на страницу Droplets
  2. Create -> Droplets -> Ubuntu 20.04 -> Basic -> Regular Intel with SSD -> $5/mo -> Amsterdam (или любой другой, кроме Singapore) -> Password (придумайте длинный пароль) -> Create Droplet
  3. Снова перейдите на страницу Droplets и найдите там IP-адрес вашего сервера

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


На этом этапе у вас есть установленный и работающий сервер WireGuard. Теперь нужно создать учётные записи для подключения с компьютера и телефона.

Сразу после установки WireGuard в консоли начнётся процесс создания учётной записи.

Кроме того, нужно сохранить текстовые данные к этой учётной записи для подключения с компьютера. Для этого откроем файл конфигурации:

  1. Найдите строку с адресом файла конфигурации сразу под QR-кодом, в моём случае она выглядит так:
    It is also available in /root/wg0-client-wtigga_vpn.conf
  2. Наберите команду nano, а затем после пробела напишите адрес к этому файлу, в моём случае это:
    nano /root/wg0-client-wtigga_vpn.conf
  3. В консоли откроется файл с конфигурацией. Скопируйте весь текст из этого файла в любой текстовый файл на своём компьютере, и сохраните.

Лучше давать каждому пользователю по учётной записи, чтобы при необходимости можно было точечно её отключить.

Чтобы добавить ещё одного пользователя, снова введите команду
./wireguard-install.sh


Скрипт спросит, что именно сделать. Введите единицу (Add a new user), нажмите Enter и вы снова увидите процесс создания нового пользователя.

Windows / Mac

Android / iOS

  1. Установите официальное приложение для Android (APK) или iOS
  2. Запустите, выберите (+) и Сканировать QR-Код
  3. Отсканируйте код, который вы заскриншотили в консоли
  4. Назовите его любым именем и нажмите Создать туннель
  5. Теперь нажмите на переключатель напротив вновь сохранённого туннеля, и вы попадёте в интернет без блокировок.

Послесловие

От чего не защитит VPN

Не используйте такой VPN для скачивания торрентов, продажи наркотиков или распространения детской порнографии. Вы оплачиваете VPS со своей банковской карты, а это значит, что для хостинга (Vult, DigitalOcean и других) вы не являетесь анонимом. И если полиция условной Германии будет расследовать уголовное дело, в котором фигурирует ваш VPN, то ваше имя там всплывёт.

Именно по этой причине нужно делать отдельные учётные записи WireGuard для каждого пользователя, и никогда не выкладывать эти учётки в открытый доступ, иначе вам возможно придётся отвечать за действия какого-то анонима из интернета.

И, разумеется, VPN не сделает вас анонимным, если вы заходите в социальные сети под учёткой с вашим настоящим именем.

Подозреваю, что я не один такой, кто держит дома в режиме 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, но без ограничений на адреса клиентской сети.

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

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

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

Напоминаем, что все действия, описанные в статье, пользователь делает на свой страх и риск. Материал приведен исключительно в ознакомительных целях. Если же вы собираетесь воспроизводить действия, описанные ниже, настоятельно советуем внимательно прочитать статью до конца хотя бы один раз. Редакция 3DNews не несет никакой ответственности за любые возможные последствия.

WireGuard — это современный протокол для организации VPN, написанный с нуля, бесплатный и с открытыми исходниками. В отличие от «мастодонтов» вроде OpenVPN или IPSec, он намного проще и легче. Это касается и скорости (пере)подключения, и производительности, и требований к ресурсам, и процесса настройки, и объёма кода. Недавно было объявлено, что WireGuard войдёт в состав будущих ядер Linux, а впоследствии попадёт и во все популярные дистрибутивы, что косвенно указывает на зрелость этого решения.

Как и было заявлено в анонсе, мы рассматриваем сценарий защиты подключения к публичным и другим недоверенным сетям. Естественно, этим использование WireGuard не ограничивается. В качестве примера рассмотрим настройку клиентов и сервера (правда, в данном случае это условные понятия — в силу специфики протокола), работающего в облаке и на домашнем роутере Keenetic. Как показывает практика, многие публичные VPN-сервисы не отличаются щепетильностью в отношении данных клиентов, поэтому всегда лучше иметь что-то своё, подконтрольное только пользователю. В нашем случае мы рассматриваем установку и настройку WireGuard, используя для этого компьютер на Windows и облачную виртуальную машину на Ubuntu.

Нам понадобится полный набор PuTTY, так что лучше скачать сразу MSI-пакет с инсталлятором (доступен по предыдущей ссылке), который всё установит и создаст новую группу в главном меню. Там нам нужна утилита PuTTYgen. После запуска генерируем новую пару ключей с настройками по умолчанию (RSA-2048), нажав кнопку Generate и поводив с полминуты мышкой в окне утилиты. Осталось заполнить несколько полей: в Key comment можно ввести название ключа в качестве напоминания, а в Key passphrase и Confirm passphrase ввести один и тот же пароль.


Пароль этот ещё пригодится, так что его надо запомнить или сохранить в надёжном месте. Далее в PuTTYgen сохраняем по отдельности приватный (Save private key, файл .ppk) и публичный (Save public key) ключи. Если планируется использовать несколько облачных провайдеров, то для каждого из них, а лучше и для каждого сервера, использовать собственные ключи.

Vscale — российский облачный провайдер, имеющий собственные площадки в Москве и Санкт-Петербурге и предлагающий неплохие конфигурации по низким ценам. Самый дешёвый сервер, мощностей которого вполне достаточно для наших задач, обойдётся в 200 руб./месяц. Хранение снапшота стоит ещё 40 руб./месяц. И его тоже можно перенести из одного региона в другой. Зато никаких ограничений по трафику нет.

Специально для читателей 3DNews Vscale подготовила промокод 3DNEWS500, чтобы можно было ознакомиться со всеми возможностями сервиса. После регистрации надо пополнить баланс хотя бы на 100 рублей или привязать банковскую карту. Затем промокод надо активировать на этой странице. Код будет действовать до 23:59:59 18.02.2020.


Интерфейс сервиса доступен на русском языке. Разобраться в нём просто, так что коротко опишем основные этапы. Для работы первым делом нужно в настройках аккаунта добавить публичный SSH-ключ, полученный в PuTTYgen. Затем в разделе серверов создать новый сервер с ОС Ubuntu 18.04, указав нужный регион, тариф и ключ. В течение минуты сервер будет готов и запущен.



Отдельного SSH-клиента для доступа к командной строке не требуется, так как Vscale предоставляет веб-консоль. Для входа вводим логин root и нажимаем Enter, далее по одной вводим нижеприведённые команды и на всё соглашаемся, нажимая Enter:



Пара замечаний на случай использования других облачных провайдеров. Во-первых, для Ubuntu 19.10 и более свежих версий ОС добавлять ppa не надо, достаточно будет первых двух команд. Во-вторых, доступ к командной строке возможен с помощью PuTTY. В поле Host Name надо ввести IP-адрес сервера, а в разделе Connection → SSH → Auth — путь до приватного ppk-ключа. Логин root, а пароль тот, что был указан при создании ключа (Key passphrase). Для удобства можно сохранить сессию (Save). По нажатии кнопки Open откроется окно консоли, при первом запуске предваряемое уведомлением о безопасности, с которым надо согласиться.


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



Для настройки сервера WireGuard не будем мудрствовать лукаво, а воспользуемся открытым решением easy-wg-quick. Данный скрипт автоматически формирует файлы конфигурации и позволяет легко манипулировать настройками. Предварительно надо установить сам wireguard и некоторые дополнительные утилиты. В веб-консоли Vscale или в PuTTY вводим следующие команды, нажимая Enter после каждой:


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



Чтобы добавить настройки ещё для одного клиента (ноутбука, например), надо ещё раз выполнить эту же команду, указав имя нового профиля:

Например, для имени профиля win10 будет создан соответствующий файл wgclient_win10.conf. Его содержимое можно просмотреть командой cat, что пригодится при настройке клиента WireGuard в будущем.


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

Для просмотра текущих подключений используйте эту команду:

Клиенты для Windows, Android, iOS и других ОС можно скачать на сайте WireGuard. С мобильными версиями всё просто — достаточно отсканировать QR-код. Или же, как и для всех остальных клиентов, вручную скопировать настройки из файлов wgclient_*.conf. Из дополнительных опций там есть только возможность исключить доступ через VPN для выбранных пользователем приложений: Excluded Applications в настройках профиля.


В случае Windows-клиента в меню левой нижней кнопки надо выбрать Add empty tunnel, вставить в новом окне всё содержимое conf-файла, указать имя профиля (Name). Опционально можно включить функцию kill-switch для блокировки любого трафика вне VPN-подключения. Наконец, надо сохранить (Save) и активировать (Activate) соединение. Для проверки корректности подключения проще всего зайти на какой-нибудь сайт, определяющий текущий внешний IP-адрес.


В актуальных моделях роутеров Keenetic с прошивкой версии 3.3 или старше также появилась поддержка VPN-подключений WireGuard — нужно установить одноимённый компонент. Чтобы импортировать настройки соединения, нужно сохранить содержимое файла wgclient_*.conf (см. выше) в текстовый документ, а затем в разделе «Другие подключения» загрузить параметры из этого файла. Роутер создаст на их основе новое подключение, которое нужно активировать переключателем в левой части списка.


Для корректной работы надо сделать несколько небольших изменений (кстати, после каждого действия не забывайте нажимать кнопку «Сохранить» в нижней части веб-интерфейса). Во-первых, включить галочку «Использовать для входа в Интернет». Во-вторых, поле «Разрешенные подсети» привести к виду 0.0.0.0/0. В-третьих, в разделе «Приоритеты подключений» перетащить свежесозданное подключение выше всех остальных.


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


Обратите внимание, что для каждого клиента нужно будет сгенерировать и скопировать собственный conf-файл. Если на предыдущем этапе вы настроили DDNS-клиент на сервере, то в разделе Endpoint у всех клиентов надо будет прописать DDNS-имя вместо IP-адреса.

В самом начале мы уже упоминали, что принципиального различия между сервером и клиентом в случае WireGuard нет. И раз уже поддержка этого протокола доступна в прошивке, то можно настроить подключение клиентов к роутеру. В текущей версии не все настройки вынесены в веб-интерфейс, но ничего сложного всё равно нет. Единственное требование — наличие «белого» внешнего IP-адреса, пусть даже динамического (в этом случае поможет DDNS).

В разделе «Другие подключения» в секции WireGuard нужно добавить новое подключение. Указываем имя (любое) и ставим галочку «Генерация ключей» (Generate a random key pair). В поле «Адрес» надо ввести любой подходящий адрес из частного диапазона, но такой, чтобы он не пересекался с другими сетями на самом роутере. В качестве примера используем 10.11.12.1/24. Номер порта можно указать произвольный, лишь бы он не блокировался провайдером и не совпадал с уже открытыми портами для других сервисов. В нашем примере это 55555. Наконец, в поле DNS надо указать адрес любого публичного DNS-сервера.


Следующий этап — добавление пиров (клиентов) соответствующей кнопкой. Имя указываем любое, а в поле «Разрешённые подсети» вводим 0.0.0.0/0. Теперь открываем на смартфоне мобильное приложение WireGuard и добавляем новое подключение — Create from scratch. В разделе Interface указываем имя (любое) и жмём кнопку Generate. Содержимое поля Public Key копируем и вставляем в настройках пира на роутере в поле «Публичный ключ». В поле Addresses указываем частный IP-адрес из той же подсети, что и для роутера. В нашем примере у него был 10.11.12.1/24, так что для клиента возьмём просто следующий: 10.11.12.2/24. DNS опять же любой публичный.

В разделе Peers в поле Public keys копируем содержимое поля «Публичный ключ» роутера, в Allowed IPs вводим 0.0.0.0/0, а в Endpoint вводим внешний IP-адрес роутера (или DDNS-имя) и порт через двоеточие, то есть для нашего примера должна получиться конструкция вида xx.xx.xx.xx:55555. Опционально можно включить функцию поддержки активности подключения, указав время в секундах в поле Persistent keepalive на клиенте и в поле «Проверка активности» в параметрах пира на роутере. Обычно достаточно интервала от 3 до 30 секунд. Для остальных клиентов придётся повторить эту же процедуру добавления новых пиров.



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


Напоследок напомним «народную» мудрость: на VPN надейся, а сам не плошай. Проще говоря, надо всегда соблюдать осторожность и цифровую гигиену. К совсем уж подозрительным сетям и вовсе подключаться не надо, да и про базовые правила забывать не стоит. Их не так уж много: вовремя ставить обновления ОС и ПО, использовать двухфакторную аутентификацию, тщательно выбирать используемые программы, проверять разумность запросов ПО на доступ к различным ресурсам устройства, обзавестись современным антивирусом. Всё это касается и смартфонов, и планшетов, и ноутбуков, и десктопов.

Чтобы удаленно подключиться к локальной сети интернет-центра Keenetic, начиная с версии KeeneticOS 3.3 стало возможно использовать туннель WireGuard VPN.

Сначала необходимо выполнить настройку сервера WireGuard в Keenetic, которая показана в инструкции "Настройка WireGuard VPN между двумя роутерами Keenetic" , после переходите к настройке VPN-клиента.

NOTE: Важно! Если вы планируете настроить Keenetic в качестве VPN-сервера, начать необходимо с проверки того, что он имеет публичный "белый" IP-адрес, а при использовании сервиса KeenDNS, что он работает в режиме "Прямой доступ", для которого также требуется публичный IP-адрес. При несоблюдении любого из этих условий подключение к такому серверу из Интернета будет невозможно.

Ниже приведем пример действий для подключения к серверу из операционной системы под управлением ОС Windows, на примере версии Windows 10 1909 (19H2).

Чтобы установить соединение к WireGuard -серверу Keenetic, в компьютере на базе ОС Windows, потребуется скачать и установить программу WireGuard с официального сайта.

1. Послу установки программы и запуска, нажимаем в нижнем левом углу на стрелку вниз напротив "Add Tunnel" - "Add empty tunnel. [Ctrl+N]".

win-wg-01.jpg

Откроется окно настройки конфигурации подключения к удаленному WireGuard -серверу Keenetic - "Create new tunnel".

win-wg-02.jpg

NOTE: Важно! Оставляем данное окно открытым, не закрываем его.

2. Скачиваем файл wg-client.conf к себе на компьютер, можно на Рабочий стол. Открываем в текстовом редакторе, например в Notepad++

win-wg-03.jpg

Откроется готовая конфигурация, в которую необходимо будет ввести настройки подключаемого WireGuard -клиента Windows [Interface] и удаленного WireGuard -сервера Keenetic [Peer].

win-wg-04.jpg

NOTE: Важно! Оставляем данное окно открытым, не закрываем его.

3. Возвращаемся к открытому окну "Create new tunnel" пункта 1 и копируем из поля "PrivateKey /hc/article_attachments/360006439180/win-wg-05.jpg" alt="win-wg-05.jpg" />

NOTE: Важно! Оставляем данное окно открытым, не закрываем его.

4. Скопированный в буфер обмена компьютера приватный ключ WireGuard -клиента необходимо добавить в готовую конфигурацию из пункта 2 в строку "PrivateKey /hc/article_attachments/360006452839/win-wg-06.jpg" alt="win-wg-06.jpg" />

NOTE: Важно! Оставляем данное окно открытым, не закрываем его.

5. Настраиваем удаленное подключение на стороне ранее настроенного WireGuard-сервера.

Подключитесь к веб-конфигуратору роутера и перейдите в меню "Интернет" — "Другие подключения". Нажмите на ранее созданное WireGuard -подключение ("WG-S") и добавьте "Настройки пира". Нажав на "Добавить пир" откроется поле настроек пира, в котором укажите название туннеля "wg-windows-client".

В поле "Публичный ключ" вставляем ключ из пункта номер 1, который необходимо скопировать из поля "Public key" в буфер обмена компьютера.

win-wg-07.jpg

Окно "Create new tunnel" можно закрыть, нажимаем "Cancel".

NOTE: Важно! Оставляем окно подключения WireGuard открытым, не закрываем его.

Вставляем ключ в поле "Публичный ключ", в поле "Разрешенные подсети" указываем адрес, трафик с которого будет допущен до сервера в формате IP/bitmask — 172.16.82.6/32

В поле "Проверка активности" необходимо указать периодичность попыток проверки доступности удаленной стороны соединения. Обычно достаточно 10-15 секундного интервала между проверками. По умолчанию значение "Проверки активности" в настройках пира Keenetic указано 30 секунд.

wgwin.jpg

6. Возвращаемся к настройке конфигурации wg-client.conf


Настройка [Interface] клиента:

В поле "PrivateKey" интерфейса клиента уже введем созданный ключ WireGuard -клиента Windows в пункте 4.

В поле "Addresses" интерфейса клиента указываем IP-адрес, в формате IP/bitmask — 172.16.82.6/24 (это внутренний адрес туннеля). Можно использовать другую подсеть, при этом ее следует выбрать из частного диапазона адресов и избежать наложения с другими настроенными на данных устройствах подсетями.

Настройка [Peer] сервера:

В поле "PublicKey" вставьте публичный ключ сервера, который можно скопировать в буфер обмена компьютера из настроек WireGuard в веб-интерфейсе роутера:

wg-lin-01.jpg

В поле "AllowedIPs" указываем разрешенные IP-адреса, в формате IP/bitmask — 172.16.82.1/32 (это внутренний адрес сервера) и 192.168.22.0/24 (адрес локального сегмента роутера Keenetic).

В поле "Endpoint" указываем публичный IP-адрес или доменное имя WireGuard -сервера, и порт прослушивания, на который будет устанавливать связь WireGuard -клиент.

В поле "PersistentKeepalive" указываем периодичность попыток проверки доступности удаленной стороны соединения. Обычно достаточно 10-15-секундного интервала между проверками.

Жмем сочетание клавиш Ctrl+S, либо нажимаем "Файл", "Сохранить".

7. В открытом окне настроек подключения WireGuard из пункта номер 5, нажимаем на "Import tunel(s) from file" и выбираем на Рабочем столе файл "wg-client", жмем "Открыть".

win-wg-09.jpg

8. После добавления конфигурации "wg-client" в программу подключения WireGuard , в списке "Tunnels" появится новое подключение.

win-wg-10.jpg

Если настройка выполнена правильно, напротив строки "Status" вы увидите зеленый индикатор.

win-wg-11.jpg

Для проверки доступности сервера можно выполнить отправку ICMP-пакетов до IP-адреса в командной строке Windows.

win-wg-12.jpg

Проверяем доступность веб-интерфейса сервера (в нашем примере это Keenetic с IP-адресом 192.168.22.1).

win-wg-13.jpg

Если вам нужно, чтобы подключенные клиенты получали через данное VPN-соединение доступ в Интернет, выполните дополнительную настройку из статьи " Доступ в Интернет через WireGuard-туннель ".

TIP: Примечание: При условии, что в конфигурации один пир и указана разрешенная сеть "все адреса", приложение будет автоматически формировать запрещающее трафик мимо туннеля правило сетевого экрана на компьютере.

WireGuard VPN это совершенно бесплатное программное приложение, которое позволит нам устанавливать VPN-туннели. Это полное программное обеспечение включает в себя все необходимые протоколы связи и криптографии для построения виртуальной частной сети между несколькими клиентами и сервером. WireGuard обеспечивает лучшую производительность, чем протокол IPsec и OpenVPN (как по скорости, так и по задержке соединений), сегодня мы расскажем о его основных функциях, о том, как его легко установить и настроить.


Особенности WireGuard VPN

WireGuard VPN это программное обеспечение для создать виртуальную частную сеть (VPN) чрезвычайно прост в настройке , очень быстро (быстрее, чем IPsec и OpenVPN) и использует самая современная криптография по умолчанию , без необходимости выбирать между различными алгоритмами симметричного шифрования, асимметричным и хешированием. Цель WireGuard VPN состоит в том, чтобы стать стандартом, и для большего числа домашних пользователей и предприятий, чтобы начать использовать его, вместо использования IPsec или популярного OpenVPN, которые более сложны в настройке и медленнее. Это программное обеспечение предназначено для использования всеми пользователями, как для домашних пользователей, так и для суперкомпьютеров.

С WireGuard VPN нет необходимости управлять соединениями беспокоиться о состоянии самой виртуальной частной сети, управлять процессами или знать, что находится под программным обеспечением, чтобы оно работало, подобно IPsec, где часто необходимо просматривать журналы и исследовать происходящее. Другая сила в том, что конфигурация чрезвычайно проста, но очень мощна.

Эта медитация Программное обеспечение L3 VPN то есть использует только туннелирование , это не происходит как OpenVPN, где у нас есть возможность работать в транспортном режиме или туннельном режиме. В этом случае мы всегда будем использовать туннельный режим, кроме того, он совместим с обоими Сети IPv4 и сети IPv6 Кроме того, он может инкапсулировать пакеты IPv4 в IPv6 и наоборот. Протокол транспортного уровня, используемый WireGuard: UDP Таким образом, нам нужно будет открыть определенный порт (чтобы его можно было изменить) в нашем маршрутизаторе, который выполняет NAT.

Совместимость с операционными системами

Это новое программное обеспечение VPN было впервые выпущено для Linux Ядро, но это кросс-платформенной , поскольку он совместим с Windows, Linux, MacOS, FreeBSD, Android , а также Ios операционные системы , Одной из сильных сторон этого программного обеспечения является то, что конфигурация клиента и сервера в разных операционных системах одинакова, используется один и тот же синтаксис, поэтому вы можете настроить сервер и клиенты в Linux, а затем «передать» конфигурацию другим устройствам с помощью другие операционные системы внутри.

Криптография используется

При использовании протоколов IPsec и OpenVPN необходимо, чтобы и клиенты, и сервер «согласовали» используемые криптографические протоколы как на этапе 1 и этапе 2 (IPsec), так и в канале управления и передачи данных (OpenVPN). ), иначе соединение не будет установлено правильно. WireGuard предоставляет весь криптографический «пакет» , обеспечивая связь без необходимости выбирать что-либо. Если в какой-то момент один из криптографических протоколов, используемых этой VPN, считается небезопасным, это так же просто, как запуск второй версии WireGuard с новым протоколом, который не имеет изъянов безопасности, и между клиентами и сервером он будет указали, что используют «версию 2», будучи полностью прозрачными для нас.

Еще одна очень важная деталь заключается в том, что этот VPN использует очень маленький исходный код , По сравнению со StrongSwan или OpenVPN очень мало строк кода, поэтому аудит может быть выполнен за очень короткое время, также будет легче найти возможные уязвимости или недостатки безопасности. С меньшим количеством строк кода поверхность возможной атаки на программирование VPN также становится меньше.

WireGuard VPN в настоящее время использует ChaCha20 для симметричного шифрования, аутентифицируется с Poly1305 , используя конструкцию AEAD. Он также использует Curve25519 для ECDH, BLAKE2 для хеширования, SipHash24 для хеш-таблица ключи и HKDF для получения ключа, что означает, что мы используем самые современные криптографические алгоритмы с целью обеспечения максимальной безопасности и производительности.

Поддержка роуминга и Kill Switch

Это программное обеспечение предназначено для бродить легко и быстро , если наше устройство меняет сети и логически меняет общедоступный IP-адрес, например, когда мы переходим из сети Wi-Fi и сети 4G / LTE нашего оператора, VPN-соединение будет отменено, поскольку они быстро повторно аутентифицируются с помощью VPN сервер, так что мы всегда будем подключены к VPN.

Мы также можем включить Kill-Switch на устройстве таким образом, если VPN-соединение будет прервано, само программное обеспечение также будет отвечать за прерывание всего сетевого трафика до тех пор, пока VPN-соединение не будет восстановлено, чтобы не было навигации без защиты, которую нам предоставляет эта VPN.

Установка WireGuard VPN

Установка этого программного обеспечения очень проста, нам просто нужно перейти на официальный сайт WireGuard и загрузите исполняемый файл для операционных систем Windows или MacOS. Если вы используете операционную систему на основе Linux с соответствующими репозиториями, вам, вероятно, придется добавить определенные репозитории WireGuard, поскольку в настоящее время она не находится в «стабильной» ветке по умолчанию.

Например, мы установили VPN-сервер в последней версии Debian, чтобы установить его, мы выполнили шаги, указанные на официальном сайте. Разрешения суперпользователя необходимы для правильной установки.

Мы не должны забывать, что этот VPN также совместим с операционными системами, такими как FreeBSD, OpenBSD и даже с OpenWRT для маршрутизаторов, поскольку просто установите его через «opkg», поскольку обычно устанавливается все дополнительное программное обеспечение.

Если вы собираетесь установить VPN-клиент на свой смартфон с Android или iOS, в настоящее время у нас есть официальные приложения, поэтому вы можете установить его без проблем из Гугл игры и App Store соответственно:

Конфигурация WireGuard: открытый, закрытый ключи и файлы конфигурации

После того, как мы правильно установили WireGuard, как на компьютере, который работает как сервер, так и на всех клиентах, которые мы хотим подключить, необходимо его настроить. Первое, что мы должны сделать, это создать пару открытый-закрытый ключ, как на сервере, так и на всех клиентах, к которым мы хотим подключиться. Мы использовали операционную систему Debian для генерации ключей, а также для настройки сервера, однако мы могли бы сделать это непосредственно в программном обеспечении Windows.

Маршрут для запуска сервера WireGuard в Debian - / etc / wireguard /, поэтому мы пойдем по этому маршруту с помощью следующей команды:

Четная генерация открытого и закрытого ключа для сервера

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

wg genkey | tee claveprivadaservidor | wg pubkey > clavepublicaservidor

Теперь у нас будет два файла, один с открытым ключом и один с закрытым:

  • Закрытый ключ: 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
  • Открытый ключ: xeTkJjjBUyp8paxTgajwDa + qWjrD2RpXlJRSHMwcGDQ =

Эти ключи мы будем использовать для «сервера» WireGuard VPN.

Четная генерация публично-приватного ключа для клиента

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

wg genkey | tee claveprivadacliente1 | wg pubkey > clavepublicacliente1

Теперь у нас будет два файла, один с открытым ключом и один с закрытым:

  • Закрытый ключ: yPMpP2raY4FoCEJkmzQMlxzm / 6RBIW9HkjY6pVFIOnI =
  • Открытый ключ: 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =

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

Файл конфигурации сервера

Конфигурация сервера WireGuard довольно проста по сравнению с серверами IPsec или OpenVPN, однако мы должны принять во внимание несколько вещей, которые мы объясним ниже.

На сервере мы должны иметь Интерфейс В этом разделе мы можем указать частный IP-адрес который идентифицирует сервер при подключении клиентов. Мы должны помнить, что это VPN L3, поэтому мы можем указать любой частный IP-адрес, который не используется в любой момент времени. Например, в OpenVPN подсетью по умолчанию является 10.8.0.0/24, здесь мы также можем поместить ту же или любую другую подсеть 192.168.2.0/24 (а 192.168.2.1 - это сам сервер, а другие IP-адреса, которые являются клиентами) , С синтаксисом « Адрес »Мы разместим подсеть VPN, которую мы хотим.

В " PrivateKey »Нам нужно будет ввести закрытый ключ, который мы ранее сгенерировали для сервера. В " Listenport »Мы добавим UDP-порт, который мы хотим использовать для сервера, этот порт будет тем, который нам позже придется« открыть »в NAT, если мы находимся за маршрутизатором с NAT.

Наконец, в этом разделе «Интерфейс» мы также можем определить команды, которые будут выполняться после снятия виртуального интерфейса с «PostUp» и после выброса виртуального интерфейса с «PostDown». Как вы можете видеть, мы прокомментировали это, поскольку мы не хотим использовать NAT для этого интерфейса, но это может быть сделано идеально.

В разделе » вглядываться », Где нам нужно будет разместить список клиентов, которым мы разрешаем подключаться. В этом случае мы будем подключать только «одноранговый узел», поэтому мы определим ваш открытый ключ с помощью « PublicKey »Что мы создали ранее (или что клиент предоставил нам, так как возможно, что он был сгенерирован им), а также мы можем указать, разрешаем ли мы соединяться этому клиенту с определенным IP-адресом. С « Разрешенные IP-адреса »Мы можем отфильтровать исходные IP-адреса, если мы введем 0.0.0.0/0, это означает, что мы разрешаем любой IP-адрес.

Адрес [Interface] = 192.168.2.1/24
PrivateKey = 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
ListenPort = 51820

[Peer] PublicKey = 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =
AllowedIPs = 0.0.0.0/0

Если мы хотим добавить больше «пиров», просто определите их индивидуально в файле конфигурации следующим образом:

Адрес [Interface] = 192.168.2.1/24
PrivateKey = 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
ListenPort = 51820

[Peer] PublicKey = 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =
AllowedIPs = 0.0.0.0/0

[Peer] PublicKey = открытый ключ клиента 2
AllowedIPs = 0.0.0.0/0

[Peer] PublicKey = открытый ключ клиента 3
AllowedIPs = 0.0.0.0/0

Файл конфигурации может называться «wg0.conf», поскольку WireGuard создает виртуальные интерфейсы с этим именем, идеально подходящие для их отличного различия. Чтобы запустить этот файл конфигурации, просто запустите:

Когда вы запустите его, WireGuard будет отвечать за создание виртуального интерфейса, размещение IP-адреса, MTU и даже создание соответствующих маршрутов в таблице маршрутизации:

Файл конфигурации для клиентов

Конфигурация клиента WireGuard довольно проста по сравнению с серверами IPsec или OpenVPN, однако мы должны принять во внимание несколько вещей, которые мы объясним ниже.

В клиенте нам нужно будет иметь » Интерфейс В этом разделе мы можем указать частный IP-адрес это идентифицирует клиента, когда мы соединяемся. Мы должны помнить, что это VPN L3, поэтому мы можем указать любой частный IP-адрес, который не используется в любой момент времени. Например, в OpenVPN подсетью по умолчанию является 10.8.0.0/24, здесь мы также можем поместить ту же или любую другую подсеть 192.168.2.0/24 (а 192.168.2.1 - это сам сервер, а адрес 192.168.2.2 - с этого момента). быть клиентами, с синтаксисом Адрес «Мы разместим подсеть VPN, которую мы хотим.

В " PrivateKey »Нам нужно будет ввести закрытый ключ, который мы ранее сгенерировали для клиента.

Наконец, с « Конечная точка »В директиве мы определим публичный IP-адрес сервера, на котором работает WireGuard VPN, за которым следуют две точки (:) используемого порта UDP. Мы должны помнить, что WireGuard использует UDP, поэтому мы не должны фильтровать его на брандмауэрах.

Программное обеспечение и связь с WireGuard стараются пройти максимально незамеченными, если они не используются, то есть они не отправляют данные через VPN непрерывно, чтобы туннель оставался активным, что идеально подходит для экономии заряда батареи и мобильных данных на смартфонах. В большинстве обычных конфигураций это работает отлично, но если мы находимся за NAT или брандмауэр, возможно, что связь прервана из-за того, что данные не передаются, поэтому необходимо настроить «поддержку активности». Чтобы настроить Keep Alive, просто укажите директиву «PersistentKeepAlive» и введите целое число, которое означает секунды сохранения активности. Согласно официальной документации, установки 25 секунд достаточно для большинства межсетевых экранов и систем NAT, если мы установим 0, это отключает эту функцию. Если мы находимся за NAT или межсетевым экраном и хотим получать входящие соединения после долгого времени без трафика, эта директива будет необходима, в противном случае мы не сможем ее поставить.

[Interface] PrivateKey = yPMpP2raY4FoCEJkmzQMlxzm / 6RBIW9HkjY6pVFIOnI =
Адрес = 192.168.2.2/32

[Peer] PublicKey = xeTkJjjBUyp8paxTgajwDa + qWjrD2RpXlJRSHMwcGDQ =
AllowedIPs = 0.0.0.0/0
Конечная точка = 10.10.2.86:51820

В операционных системах Windows мы можем импортировать эту же конфигурацию, и она будет готова к подключению, хотя мы можем подключиться с нуля к клиенту, но мы должны «передать» сгенерированный открытый ключ на сервер WireGuard.


Также очень важно просмотреть журналы WireGuard, чтобы убедиться, что VPN-соединение установлено правильно. Мы не можем поместить в раздел «Интерфейс / Адрес» частный IP-адрес, который уже используется в клиентах Windows, так как у нас будет ошибка в соединении.


Как вы уже видели, конфигурация WireGuard VPN действительно проста и быстра

Производительность WireGuard VPN по сравнению с L2TP / IPsec и OpenVPN

В RedesZone мы проверили производительность WireGuard VPN по сравнению с L2TP / IPsec и OpenVPN, тесты проводились в локальной сети, чтобы избежать проблем с оператором, поэтому мы можем измерить реальную максимальную производительность, которая может предоставить нам аппаратное обеспечение

  • QNAP TS-1277: процессор AMD Ryzen 7 2700; Оперативная память: 64GB RAM DDR4; Сетевое подключение: QNAP QXG-10G2T-107 со скоростью 10 Гбит / с с кабелем Cat7 и Переключатель D-Link DXS-1210-10TS .
  • Программное обеспечение VPN для L2TP / IPsec и OpenVPN (с использованием UDP) - QVPN 2 от QNAP
  • Во втором тесте с OpenVPN (используя UDP) и AES-256-GCM мы использовали Virtualization Station с Debian.
  • iperf3 устанавливается вручную в QTS, а также в виртуализированном Debian.


  • ПК с процессором AMD Ryzen 7 3800x; Оперативная память: 32 ГБ оперативной памяти DDR4 3200 МГц; Сетевое подключение: ASUS XG-C100C на скорости 10 Гбит / с с кабелем CAT7 и Переключатель D-Link DXS-1210-10TS для соединения обоих устройств , Операционная система, использованная в тестах: Windows 10 1909.
  • Windows 10 L2TP / IPsec клиент
  • Последняя версия OpenVPN (2.4.8)
  • iperf 3 в Windows 10.

Результаты, полученные в ходе испытаний, следующие:


Как видите, реальная скорость WireGuard в два раза выше, чем у L2TP / IPsec или OpenVPN, поэтому мы можем сказать, что этот VPN действительно быстрый.

Мы надеемся, что это руководство по установке поможет вам, и вы можете легко развернуть серверы и клиенты WireGuard для безопасного подключения к нашему дому, бизнесу или Интернету из любого места безопасным способом.

Читайте также: