At the end of July, the WireGuard VPN tunnel developers proposed a
set of patches that will make their VPN tunnel management software part of the Linux kernel. However, the exact date of implementation of the "ideas" is still unknown. Under the cut talk about this tool in more detail.
/ photo Tambako The Jaguar CCBriefly about the project
WireGuard is a new-generation VPN tunnel created by Jason A. Donenfeld, head of Edge Security. The project was developed as a
simplified and smart alternative to OpenVPN and IPsec. The first version of the product contained only 4 thousand lines of code. For comparison, in OpenVPN about 120 thousand lines, and in IPSec - 420 thousand.
')
According
to the developers, WireGuard is easy to configure, and protocol security is achieved
through proven cryptographic algorithms .
When changing network : Wi-Fi, LTE or Ethernet, you need to reconnect to the VPN server every time. WireGuard servers do not break the connection, even if the user has received a new IP address.
Despite the fact that WireGuard was originally designed for the Linux kernel, the developers
took care of the portable version of the tool for Android devices. The application is still flawed, but you can try it now. To do this,
become one of the testers .
In general, WireGuard is quite popular and has even been
implemented by several VPN providers, such as Mullvad and AzireVPNB. A
large number of guidelines for setting up this solution have been published online. For example,
there are guides that users create, and there are guides
prepared by the authors of the project .
Technical details
In the
official documentation (p. 18), it is noted that the bandwidth of WireGuard is four times higher than that of OpenVPN: 1011 Mbit / s versus 258 Mbit / s, respectively. WireGuard is ahead of the standard Linux IPsec solution - 881 Mb / s. He surpasses it in simplicity of setting.
After key exchange (the VPN connection is initialized almost as in SSH) and the connection is established, WireGuard solves all other tasks on its own: there is no need to worry about routing, status monitoring, etc. Additional configuration efforts will need to be applied only if you want to use symmetric encryption.
/ photo by Anders Hojbjerg CCTo install, you will need a distribution with a Linux kernel “older” 4.1. It can be found in the repositories of the main Linux distributions.
$ sudo add-apt-repository ppa:hda-me/wireguard $ sudo apt update $ sudo apt install wireguard-dkms wireguard-tools
As the editors of xakep.ru note, self-assembly from source texts is also simple. It is enough to raise the interface and generate the public and private keys:
$ sudo ip link add dev wg0 type wireguard $ wg genkey | tee privatekey | wg pubkey > publickey
WireGuard
does not use the interface for working with the crypto-provider
CryptoAPI . Instead, the stream cipher
ChaCha20 , cryptographic Poly1305 and its own cryptographic hash functions are used.
The secret key is generated using
the Diffie-Hellman protocol based on the elliptic
Curve25519 curve. When hashing, the
hash functions BLAKE2 and
SipHash are used . Due to the timestamp format, the
TAI64N protocol discards packets with a lower timestamp value, thereby
preventing DoS and
replay attacks .
At the same time, WireGuard uses the ioctl function to control I / O (previously used
Netlink ), which makes the code cleaner and simpler. You can verify this by looking at
the configuration code .
Developer Plans
So far, WireGuard is an out-of-tree kernel module. But project author Jason Donenfeld
says that the time has come for a full-fledged implementation in the Linux kernel. Since it is simpler and more reliable than other solutions. Even Linus Torvalds himself
supports Jason in this regard - he called the WireGuard code "a work of art."
But no one is talking about the exact dates of the introduction of WireGuard into the core. And this is
unlikely to happen with the release of the August Linux kernel 4.18. However, it is likely that this will happen in the very near future: in version 4.19 or 5.0.
When WireGuard is added to the kernel, developers
want to refine the application for Android devices and start writing an application for iOS. In addition, it is planned to complete the implementation of Go and Rust and port them to macOS, Windows and BSD. It is also planned to implement WireGuard for more “exotic systems”:
DPDK ,
FPGA , as well as many other interesting things. All of them are listed in the
to-do-list of authors of the project.
PS A few more articles from our corporate blog:
The main direction of our activity is the provision of cloud services:
Virtual Infrastructure (IaaS) | PCI DSS Hosting | Cloud FZ-152 | SAP Hosting | Virtual Storage | Cloud Encryption | Cloud storage