Как сделать туннель в wireguard

Обновлено: 07.07.2024

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

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

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

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

Это новое программное обеспечение VPN было впервые выпущено для ядра Linux, однако оно является кроссплатформенным, поскольку совместимо с операционными системами Window, 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 для деривации ключей, то есть мы используем самые современные криптографические алгоритмы для обеспечения максимальной безопасности и производительности.

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

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

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

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

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

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

После правильной установки WireGuard как на компьютер, выполняющий роль сервера, так и на все клиенты, к которым мы хотим подключиться, его необходимо настроить.
Первое, что нам нужно сделать, это создать пару открытый-закрытый ключ, как на сервере, так и на всех клиентах, к которым мы хотим подключиться. Мы использовали операционную систему Debian для генерации ключей, а также для конфигурирования сервера, но мы также могли бы сделать это непосредственно в программном обеспечении Windows.
Маршрут для запуска сервера WireGuard в Debian - / etc / wireguard /, поэтому мы перейдем к этому маршруту с помощью следующей команды:
cd /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 =
Эти ключи мы будем использовать в клиенте WireGuard VPN.

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

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

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

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

В разделе "Peer" нам нужно будет поместить список клиентов, которым мы разрешим подключаться. В этом случае мы будем подключать только "peer", поэтому мы определим ваш открытый ключ с " Public Key ", который мы ранее создали (или который клиент предоставил нам, так как возможно, что он был сгенерирован им самим), и мы также можем указать, разрешим ли мы подключиться этому клиенту с определенным IP-адресом. С помощью директивы "Allowed IP" мы можем фильтровать IP-адреса источников, если мы поставим 0.0.0.0/0, это означает, что мы разрешаем любой IP-адрес.

[Peer] PublicKey = 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =.
Разрешенный IP = 0.0.0.0/0
Если вы хотите добавить больше "одноранговых элементов", просто определите их по отдельности в конфигурационном файле следующим образом:

[Peer] PublicKey = 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =.
Разрешенный IP = 0.0.0.0/0
[Peer] PublicKey = открытый ключ клиента 2
Разрешенный IP = 0.0.0.0/0
[Peer] PublicKey = открытый ключ клиента 3
Разрешенный IP = 0.0.0.0/0
[/ code].
Конфигурационный файл можно назвать "wg0.conf", потому что WireGuard создает виртуальные интерфейсы с таким именем, что идеально подходит для их различения. Чтобы запустить этот файл конфигурации, просто выполните команду:

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

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

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

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

Наконец, в директиве "Endpoint" мы укажем публичный IP-адрес сервера, на котором работает WireGuard VPN, а затем две точки ) используемого UDP-порта. Мы должны помнить, что WireGuard использует UDP, поэтому мы не должны фильтровать его в брандмауэрах.

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

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

WireGuard_windows_1.jpg


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

WireGuard_windows_2.jpg

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

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

Конфигурация VPN-сервера, которую мы использовали (для обоих L2TP / IPsec, OpenVPN и WireGuard), выглядит следующим образом:

QNAP TS-1277: процессор AMD Ryzen 7 2700; оперативная память: 64 Гб DDR4 RAM; сетевое подключение: 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.

TS-1277.jpg

Мы использовали конфигурацию VPN клиента (как для L2TP / IPsec, так и для OpenVPN и WireGuard):

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

rendimiento-wireguard-vpn.jpg

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

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

Настройка нескольких подключений (peer) к Wireguard серверу 1

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

Устанавливаем Wireguard на каждую машину (см. в одной из предыдущих статей)

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

Настраиваем конфиг машины, которая будет в роли Wireguard сервера

Редактируем конфигурационный файл wg0.conf


В случае нескольких пиров, параметр AllowedIPs должен содержать ip-адрес wireguard-клиента (пира) с маской 32, и разрешенные сети (192.168.х.0/24) не должны пересекаться. Иначе не заработает.

Настраиваем конфиг для Client 1

Редактируем конфигурационный файл wg0.conf

Настраиваем конфиг для Client 2

Редактируем конфигурационный файл wg0.conf

Проверка подключения клиентов к Wireguard серверу

Для начала поднимаем интерфейс wg0 вначале на Wireguard сервере, а затем на всех клиентах

Затем смотрим коннекты на Wireguard сервере

Если в пире присутствует строка endpoint с ip-адресом, значит соединение клиента с сервером установлено.

Логотип wireguard и docker

Установим и настроим Wireguard VPN на собственном vps сервере легко и просто с помощью docker , а также настроим подключение с ПК и смартфона.

Почему Wireguard и Docker

Wireguard современный, кроссплатформенный, безопасный, высокопроизводительный и простой в настройке сетевой туннель, который был принят в основную ветку linux с версии 5.6. На текущий момент это самый быстрый и привлекательный свободный VPN. Раньше я использовал OpenVPN , и в целом нареканий к нему нет. Но он проигрывает в скорости. Может быть он конечно более гибкий и поддерживает больше вариантов шифрования. Оба инструмента хороши, и подходят хорошо под свой пласт задач. В моем случае, для домашнего VPN, скорость соединения является решающим фактором. Приятным бонусом также является моментальная скорость подключения, в отличие от OpenVPN , где подключение обычно занимает как минимум несколько секунд.

Docker конечно же использовать не обязательно. Но в нашем случае это упрощает процесс установки, т.к. мы будем использовать уже готовый образ linuxserver/docker-wireguard, развертывание которого еще проще и быстрее, чем ручная настройка.

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

Если вы не знаете что такое docker , как он работает и почему он не является виртуальной машиной, то советую самостоятельно ознакомиться с темой. Данная статья не освещает базовую теорию docker . Но при пошаговом выполнении инструкций данные знания не потребуются.

Критерии выбора VPS сервера

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

Требования:

  • Размещение за пределами РФ
  • 1 cpu
  • не менее чем 512 Mb RAM
  • ширина канала 100 - 1000 Mbit/sec
  • виртуализация KVM
  • Linux дистрибутив на борту

Я решил, что приобрету себе отдельный сервер только под VPN, чтобы отдельная машина занималась одной задачей, не распыляясь, и делала это хорошо. Поэтому одного ядра и небольшой запас оперативной памяти в 512 Mb будет достаточно. Размещение в Германии мне подходит, т.к. я нахожусь в Европейской части России (чем дальше страна тем больше пинг), а также свободы в интернете там приемлемые. Ширину канала нужно выбирать исходя из скорости, которую предоставляет Ваш интернет провайдер (100/1000 Mbit/sec). Виртуализацию лучше взять KVM , что гарантирует изолированность среды и гарантию ресурсов.

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

Мой выбор хостинг провайдера пал на RoboVPS, где на момент написания статьи стоимость виртуального сервера 1cpu, 512 Mb RAM, 5 Gb SSD, 100 Mbit/sec составляет скромных 149 ₽/месяц (тариф R7, раздел VPS). Вот реферальная ссылка.

Настройка сервера

Не столь важно какой linux дистрибутив будет установлен на сервере, первично на него нам необходимо установить только Docker . Мой выбор пал на Ubuntu 20.04 . Я буду производить все действия из под пользователя root .

Подключение по ssh

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

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

Обновление системы

Сначала необходимо обновить кеш репозиториев и систему.

Установка Docker

После чего установим docker. Можно последовать инструкциям по установке из документации, которые в случае с ubuntu говорят установить в систему репозиторий докера. Но в стандартных репозиториях ubuntu также можно найти не самую свежую, но подходящую версию. Ее и установим

Подготовка конфигов

Создадим, например в домашнем каталоге, директорию ~/wireguard , где будем хранить конфигурационные файлы, и сразу внутри нее директорию ~/wireguard/config , которую будем монтировать внутрь контейнера

Далее создадим файл ~/wireguard/docker-compose.yml , в который скопируем содержимое из документации используемого docker образа

Внесем в него некоторые изменения:

Переменной окружения PEERS нужно присвоить достаточное количество клиентов, которыми вы планируете пользоваться VPN. К примеру, если мы планируем подключаться с ноутбука, 2-х смартфонов и роутера (4 устройства), то установим PEERS=4

Монтируемый каталог /path/to/appdata/config из секции volume необходимо заменить на ранее созданную директорию ~/wireguard/config

После чего наша конфигурация готова. Создадим и запустим контейнер

Дождемся пока скачается образ и запустится контейнер, после проверим, что он запущен командой docker ps . При успехе должны увидеть в выводе что - то вроде

Если все так, то на этом настройка сервера закончена, и можно уже начать настройку клиентов.

Настройка смартфонов

Проще всего наверное проверить подключение со смартфона. Ведь для этого понадобится лишь поставить клиент в один клик из магазина приложений

и отсканировать qr код .

Чтобы вывести на экран qr код добавления туннеля, на сервере исполняем команду:

Где 1 - порядковый номер PEERS , количество которых мы ранее задали в docker-compose.yml .

qr код для подключения wireguard

Рекомендуется каждый клиент подключать под отдельным peer.

Далее в мобильном приложении необходимо:

  • нажать кнопку добавления нового туннеля
  • выбрать пункт “сканировать qr код”
  • навести на заранее выведенный на экран qr код
  • придумать произвольное имя для подключения (например peer2 )

На этом настройка закончена. Подключение с введенным именем появится в списке. Начать пользоваться можно переключив переключатель в активное положение.

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

Скриншот с сайта 2ip.ru

Десктоп

Конфиги подключения

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

На сервере выведем содержимое монтируемой внутрь docker контейнера директории ~/wireguard/config

Скриншот вывода консоли, команда ls -la ~/wireguard/config

В этой директории наблюдаем файлы и директории жизнедеятельности контейнера. Нас интересуют директории peer1 , peer2 , peerN , где N - номер пира, как вы уже поняли.

Внутри каждой директории под каждого пира лежат заранее сгенерированные при старте контейнера файлы, а именно:

  • приватный и публичный ключ ( privatekey-peer1 , publickey-peer1 )
  • peer1.jpg - изображение с qr кодом подключения
  • peer1.conf - целевой конфигурационный файл, который требуется на клиенте

Скриншот вывода консоли, команда ls -la ~/wireguard/config/peer1

GNU/Linux

Чтобы установить wireguard клиент в свой linux дистрибутив, необходимо установить пакет wireguard-tools из репозиториев:

Установка клиента

Arch linux
Debian/Ubuntu
Fedora

Инструкции по другим дистрибутивам можно найти на странице установки на официальном сайте.

Конфиг

После установки нам необходимо на клиентской машине создать конфигурационный файл подключения /etc/wireguard/wg0.conf с содержимым файла ~/wireguard/config/peer1/peer1.conf с сервера.

Для этого можно например вывести содержимое файла peer1.conf в консоль командой cat ~/wireguard/config/peer1/peer1.conf , и скопипастить содержимое в целевой файл на клиенте.

Но вместо этого можно скачать файл при помощи утилиты scp с сервера прямо в целевой файл следующей единственной командой:

sudo при запуске потребуется для того, чтобы записать содержимое в файл, находящийся вне домашней директории вашего пользователя ОС ( /etc ).

первым параметром после указания имени утилиты scp указывается строка подключения к серверу ssh. Затем двоеточие, после которого путь к скачиваемому файлу на сервере.

Вторым параметром указывается путь к файлу, который будет создан на локальной машине.

Запуск

Все готово, осталось лишь запустить клиент следующей командой:

Проверим, что все работает:

Если в выводе ip адрес вашего сервера, то все получилось!

Остановка клиента

Windows, macOS

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

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

Скриншот UI wireguard из операционной системы Windows

Удаление wireguard с сервера

Удаление с сервера настроенного решения можно произвести в несколько шагов:

Остановка контейнера

Удаление контейнера

Удаление образа

Удаление директории с конфигами

Удалим директорию ~/wireguard с файлом docker-compose.yml и монтируемой директорией ~/wireguard/config , в которой локализованы все файлы жизнедеятельности контейнера

Заключение

Мы рассмотрели один из простых и быстрых способов поднять свой собственный VPN сервер на основе замечательной технологии wireguard , с помощью docker . Безусловно, одну и ту же задачу в linux можно решить множеством способов. Изучайте linux, его экосистему. Его возможности безграничны.

Эта публикация лицензируется в соответствии с Attribution-NonCommercial 4.0 International лицензией.


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

В то время как OpenVPN скорее является лидером отрасли, WireGuard выглядит мощным соперником.

Что такое WireGuard?

Протокол VPN определяет, как ваши данные направляются с вашего компьютера на сервер. Разные протоколы имеют разные характеристики – т.е. некоторые из них более безопасны, чем другие и лучше подходят для разных задач.

Например, некоторые протоколы отдают приоритет безопасности, а другие – скорости. При выборе VPN важно знать, для чего он вам нужен и выбирать VPN с протоколами, поддерживающими это.

Хотя существует много широко используемых протоколов VPN – SSTP, PPTP и P2TP / IPSec и многие другие – есть один более новый протокол, который выделяется на фоне остальных, WireGuard. Он станет ключевым протоколом и будущим VPN.

WireGuard, как технология VPN

Он был назван в качестве следующего поколения в безопасном VPN-туннелировании. В качестве протокола с открытым исходным кодом WireGuard представляет собой защищенный сетевой туннель на сетевом уровне – третьем уровне в модели компьютерных сетей OSI – для IPv4 и IPv6.

Используя современные криптографические протоколы, WireGuard является ультра-безопасным и очень быстро набирает обороты. Он особенно популярен среди разработчиков. Первоначально выпущенный для Linux, он теперь совместим с несколькими платформами и обеспечивает самое сильное шифрование, которое когда-либо когда-либо наблюдалось.

Что отличает WireGuard?

Созданный Джейсоном Доненфельдом, экспертом по кибербезопасности и основателем Edge Security, WireGuard основан на собственных методах эксфильтрации корневых наборов, которые он использовал, чтобы оставаться в сети в течение длительных периодов времени, оставаясь незамеченным.

1. Он гораздо меньше

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

Напротив, код WireGuard прост и имеет около 4000 строк кода, тогда как OpenVPN имеет порядка 100 000 строк. Да и OpenVPN также требует OpenSSL, который добавляет что-то в районе 500 000 строк.

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

2. WireGuard проще в использовании

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

В то же время протоколы VPN, используемые в большинстве продуктов VPN, используют сложные протоколы туннелирования, такие как OpenVPN и IPSec. Они не только могут быть сложными и медленными в работе из-за огромного количества кода, их также сложно защитить.

3. Имеет шифрование следующего уровня

  • ChaCha20 аутентифицируется с Poly13045
  • Curve25519
  • HKDF
  • Blake2s
  • SipHash24

Комбинация без параметров конфигурации наряду с относительно короткими 256-битными ключами шифрования беспокоит некоторых людей, особенно учитывая, что OpenVPN предлагает 4,906-битный RSA. Тем не менее, когда вы делаете математику, 4096-битный ключ вам нужен?

С 256-битным, вам нужно проработать 2 256 комбинаций, прежде чем взломать его. С учетом того, что большинство проблем ставит раскрытые решения на полпути, это оставляет колоссальные 2 255 возможных сбоев.

Высокие надежды на WireGuard

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

Настройка WireGuard на Ubuntu 20.04

Установка и настройка на стороне сервера (Ubuntu 20.04 Server)

sudo su
apt install wireguard
cd /etc/wiregaurd/

*Сохраните и закройте файл (ctrl+x, then ‘y’ and ‘enter’)

Теперь настроим сетевую инфраструктуру нашего сервера и firewall

sudo systemctl enable [email protected]

Установка и настройки на стороне клиента (Ubuntu 20.04 Desktop)

sudo su
apt install wireguard
cd /etc/wireguard/
nano wg0.conf

sudo wg-quick up wg0

— 10.8.10.1 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2002ms

Это означает что наш сервер и клиент установили соединение и настроены корректно.

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