Автор Тема: В рамках проекта WireGuard подготовлена новая реализация VPN для Linux  (Прочитано 992 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн qwertyuser

  • самый главный админ
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 561
  • Karma: +65535/-0
  • кармадрочер
    • Просмотр профиля
    • ufoserver.org
В списке рассылки разработчиков ядра Linux представлена новая реализация виртуального интерфейса для создания шифрованных и аутентифицированных туннелей. Новый VPN-интерфейс развивается в рамках проекта WireGuard, сочетающего применение проверенных современных методов шифрования с предоставлением минималистичной реализации (около 4000 строк кода), лишённой усложнений, наблюдаемых в таких системах, как xfrm и OpenVPN.

Отмечается, что продукт развивается уже несколько лет и прошёл стадию рецензирования применяемых криптографических методов, что позволяет начать его публичное продвижение в основной состав ядра. Проект позиционируется как многоплатформенный - после стабилизации реализации для Linux планируется создание вариантов и для других операционных систем. Автором проекта является Джейсон Доненфилд (Jason A. Donenfeld), исследователь безопасности, возглавляющий компанию Edge Security. Код распространяется под лицензией GPLv2.

елом Бернштейном (Daniel J. Bernstein), Таней Ланге (Tanja Lange) и Питером Швабе (Peter Schwabe). Для генерации совместного секретного ключа применяется протокол Диффи-Хеллмана на эллиптических кривых в реализации Curve25519, предложенной Дэниелом Бернштейном. Для хэширования используются BLAKE2s (RFC7693) и SipHash24. Для согласования ключей и соединения вместо собственного демона в пространстве пользователя применяется механизм Noise_IK из Noise Protocol Framework, похожий на поддержание authorized_keys в SSH, без усложнений в виде поддержки x509 и ASN.1. Передача данных осуществляется через инкапсуляцию в пакеты UDP.

ChaCha20 и Poly1305 позиционируются как более быстрые и безопасные (пип)оги AES-256-CTR и HMAC, программная реализация которых позволяет добиться фиксированного времени выполнения без задействования специальной аппаратной поддержки. Повышение производительности обусловлено не только применением более быстрых алгоритмов, но и решением не использовать предоставляемый ядром crypto API (достаточно медленный из-за дополнительной буферизации), вместо которого в WireGuard задействованы собственные реализации примитивов ChaCha20, Poly1305, Blake2s и Curve25519.

Например, при тестировании производительности WireGuard продемонстрировал в 4 раза более высокую пропускную способность и в 3.8 раз более высокую отзывчивость, по сравнению с OpenVPN (256-bit AES c HMAC-SHA2-256). WireGuard также опережает по производительности IPsec (256-bit ChaCha20+Poly1305 и AES-256-GCM-128), но существенный выигрыш для IPsec заметен в основном в области снижения задержек.

В WireGuard применяется концепция маршрутизации по ключам шифрования, которая подразумевает привязку к каждому сетевому интерфейсу закрытого ключа и применение для связывания открытых ключей. Обмен открытыми ключами для установки соединения напоминает подход, применяемый в SSH. Поддерживается смена IP-адреса VPN-сервера (руминг) без разрыва соединения и автоматической перенастройкой клиента.

WireGuard достаточно прост в настройке. Для создания туннелирующего интерфейса предлагается использовать штатную команду "ip link", а для генерации ключей и настройки параметров VPN предлагается специальная утилита "wg". Например:

ip link add dev wg0 type wireguard
   ip address add dev wg0 192.168.2.1 peer 192.168.2.2
   wg genkey > privatekey
   wg pubkey < privatekey > publickey
   wg set wg0 listen-port 2345 private-key /path/to/private-key \
      peer   ABCDEF... allowed-ips 192.168.88.0/24 endpoint 209.202.254.14:8172
   ip link set up dev wg0

Для упрощения настройки предлагается использовать файлы конфигурации ("wg setconf wg0 myconfig.conf"). Пример конфигурации сервера:

[Interface]
   PrivateKey = yAnz5TF+lXXJte14tji3zlMNq+hd2rYUIgJBgB3fBmk=
   ListenPort = 41414

   [Peer]
   PublicKey = xTIBA5rboUvnH4htodjb6e697QjLERt1NAB4mZqp8Dg=
   AllowedIPs = 10.192.122.3/32, 10.192.124.1/24

   [Peer]
   PublicKey = TrMvSoP4jYQlY6RIzBgbssQqY3vxI2Pi+y71lOWWXX0=
   AllowedIPs = 10.192.122.4/32, 192.168.0.0/16

   [Peer]
   PublicKey = gN65BkIKy1eCE9pP1wdc8ROUtkHLF2PfAqYdyYBz6EA=
   AllowedIPs = 10.10.10.230/32

Пример конфигурации клиента:

[Interface]
   PrivateKey = gI6EdUSYvn8ugXOt8QQD6Yc+JyiZxIhp3GInSWRfWGE=
   ListenPort = 21841

   [Peer]
   PublicKey = HIgo9xNzJMWLKASShiTqIybxZ0U3wGLiUeJ1PKf8ykw=
   Endpoint = 192.95.5.69:41414
   AllowedIPs = 0.0.0.0/0

opennet.ru
по вопросам размещения Ваших сайтов на этом сервере пишите info@qwertyuser.ru