В конце июля разработчики VPN-туннеля WireGuard предложили , которые сделают их ПО для организации VPN-туннелей частью ядра Linux. Однако точная дата реализации «задумки» пока остается неизвестной. Под катом поговорим об этом инструменте подробнее.
/ фото
Кратко о проекте
WireGuard — VPN-туннель нового поколения, созданный Джейсоном Доненфельдом (Jason A. Donenfeld), главой компании Edge Security. Проект разрабатывался как и шустрая альтернатива OpenVPN и IPsec. Первая версия продукта содержала всего 4 тыс. строк кода. Для сравнения, в OpenVPN порядка 120 тыс. строк, а в IPSec — 420 тыс.
По разработчиков, WireGuard несложно настроить, а безопасность протокола достигается . : Wi-Fi, LTE или Ethernet нужно каждый раз переподключаться к VPN-серверу. Серверы WireGuard же не разрывают соединение, даже если пользователь получил новый IP-адрес.
Несмотря на то что WireGuard изначально заточен под Linux-ядро, разработчики и о портативной версии инструмента для Android-устройств. Приложение пока недоработано, однако попробовать его в деле можно уже сейчас. Для этого нужно .
В целом WireGuard пользуется довольно большой популярностью и даже был несколькими VPN-провайдерами, например Mullvad и AzireVPNВ. В сети опубликовано этого решения. Например, , которые создают пользователи, а есть гайды, .
Технические подробности
В (стр.18) отмечено, что пропускная способность у WireGuard в четыре раза выше, чем у OpenVPN: 1011 Мбит/с против 258 Мбит/с соответственно. WireGuard опережает и стандартное решение для Linux IPsec ― у того 881 Мбит/с. Превосходит он его и по простоте настройки.
После обмена ключами (VPN-подключение инициализируется почти как в SSH) и установления соединения WireGuard самостоятельно решает все остальные задачи: нет необходимости беспокоиться маршрутизации, контроле состояния и др. Дополнительные усилия на настройку понадобится приложить только в том случае, если хочется задействовать симметричное шифрование.

/ фото
Для установки понадобится дистрибутив с ядром Linux «старше» 4.1. Его можно найти в репозиториях основных дистрибутивов Linux.
$ sudo add-apt-repository ppa:hda-me/wireguard
$ sudo apt update
$ sudo apt install wireguard-dkms wireguard-tools
Как отмечают редакторы xakep.ru, самостоятельная сборка из исходных текстов также несложна. Достаточно поднять интерфейс и сгенерировать открытый и закрытый ключи:
$ sudo ip link add dev wg0 type wireguard
$ wg genkey | tee privatekey | wg pubkey > publickey
WireGuard интерфейс для работы с криптопровайдером . Вместо него, используется поточный шифр , криптографическая Poly1305 и собственные криптографические хеш-функции.
Секретный ключ генерируется с применением на базе эллиптической кривой . При хешировании задействуются и . За счет формата меток времени протокол отбрасывает пакеты с меньшим значением timestamp, тем самым и .
При этом WireGuard задействует функцию ioctl для контроля ввода/вывода (раньше использовался ), что делает код чище и проще. Убедиться в этом можно, заглянув в .
Планы разработчиков
Пока что WireGuard — это out-of-tree модуль ядра. Но автор проекта Джейсон Доненфельд , что уже настало время для полноценной реализации в ядре Linux. Так как он проще и надежнее других решений. Джейсона в этом плане даже сам Линус Торвальдс — он назвал код WireGuard «произведением искусства».
Но о точных датах внедрения WireGuard в ядро пока никто не говорит. И это случится с выходом августовского Linux kernel 4.18. Однако есть вероятность, что это произойдет в самом ближайшем будущем: в версии 4.19 или 5.0.
Когда WireGuard будет добавлен в ядро, разработчики доработать приложение для Android-устройств и начать писать приложение под iOS. Кроме того, планируется завершить реализации на Go и Rust и портировать их на macOS, Windows и BSD. Также планируется реализация WireGuard для более «экзотических систем»: , , а также множество других занятных вещей. Все они перечислены в авторов проекта.
P.S. Ещё несколько статей из нашего корпоративного блога:
Основное направление нашей деятельности — предоставление облачных сервисов:
| | | | | |
Источник: habr.com
