ááá±á· Linus ááẠnet-next áá¬áááœá²ááᯠVPN interfaces áá»á¬ážááŒáá·áº áá°á·ááá¯ááºáá° ááŒá±á¬ááºážááœáŸá±á·áá²á·áááºá
Linux 5.6 kernel á¡áá
áºá¡ááœáẠáá¯ááºá
á¯áá±á¬ááºážááŒááºážááᯠáááºááŸáááœáẠáá¯ááºáá±á¬ááºáá±áá«áááºá WireGuard ááẠáá±ááºáá® cryptography ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááá·áº ááŒááºáááºáá±á¬ áá»áá¯ážáááºáá
ẠVPN áá
áºáá¯ááŒá
áºáááºá áááºážááᯠááŸáááŒá®ážáá¬áž VPN áá»á¬ážá¡ááœáẠááá¯ááá¯ááá¯ážááŸááºážááŒá®áž ááá¯ááá¯á¡áááºááŒá±áá±á¬ á¡á
á¬ážááá¯ážáá
áºáá¯á¡ááŒá
Ạáá°áá áá®ááœááºáá²á·áááºá á
á¬áá±ážáá°ááẠááá±áá« ááááºážá¡áá»ááºá¡ááẠáá¯á¶ááŒá¯á¶áá±áž á¡áá°ážáá»áœááºážáá»ááºáá° Jason A. Donenfeld ááŒá
áºáááºá 2018 áá¯ááŸá
ẠááŒáá¯ááºáááœáẠWireGuard
"Jason ááẠkernel ááœáẠWireGuard ááá·áºááœááºážáááºáá±á¬ááºážááá¯ááŸá¯ááá¯ááŒá¯áá¯ááºáá²á·áááº" áᯠLinus ááŸááŒáá¯ááºá 2, 2018 ááœááºáá±ážáá¬ážáá²á·áááºá â ဠVPN ááá¯áá»áœááºá¯ááºááá»á
áºááŒááºááá¯ážááŒá±á¬ááºážááŸáá·áº áááŒá¬áá®áá±á«ááºážá
ááºážáááºáá»áŸá±á¬áºááá·áºáá»ááºáá
áºáá¯ááᯠáááºáá¶ááŒá±ááŒá¬ááá¯ááºáá«ááá¬ážá áá¯ááºááẠááŒá®ážááŒáá·áºá
á¯á¶ááŒááºáž áááŸáááá¯ááºáá±á¬áºáááºáž áááºážááᯠáá»áœááºá¯ááºááŒáá·áºáá²á·ááŒá®áž OpenVPN ááŸáá·áº IPSec ááá¯á·á ááŒá±á¬ááºáááºááœááºáá±á¬ááºážááŸá¯áá»á¬ážááŸáá·áº ááŸáá¯ááºážááŸááºáá«á áááºážááẠáááá·áºá¡áá¯ááá¬áááºáá¬áá
áºáá¯ááŒá
áºáááºá"
Linus áááá¹áááŸááá±á¬áºáááºáž áá±á«ááºážá
ááºážááŸá¯ááẠáá
áºááŸá
áºááœá²ááŒá¬áá²á·áááºá á¡áááááŒá¿áá¬ááŸá¬ á
áœááºážáá±á¬ááºáááºááᯠááŒáŸáá·áºáááºáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áá¬ážááá·áº cryptographic functions áá»á¬ážá áá°ááá¯ááºá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá»á¬ážááŸáá·áº áááºá
ááºáá±áá«áááºá 2019 áá¯ááŸá
Ạá
ááºáááºáá¬áááœáẠááŸá
áºááŸááºááá»á¬áž á
á±á·á
ááºááœá±ážááœá±ážááŸá¯áá»á¬áž ááŒá¯áá¯ááºáá²á·áá«áááºá
áá±á¬ááºáá¯á¶ážá 9 áá¯ááŸá
Ạáá®áááºáá¬á 2019 áááºáá±á·ááœáẠLinux kernel á ááœááºáááºá
áá
áºááœá²á¡ááœáẠáá¬áááºááŸááá±á¬ David S. Millerá
ááá±á·á áááºááá«áá® 29á 2020 ááœáẠá¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááẠkernel ááœááºáá«áááºáááºá¡ááœáẠLinus ááá¯á·ááœá¬ážáá«áááºá
á¡ááŒá¬áž VPN ááŒá±ááŸááºážáá»ááºáá»á¬ážááẠWireGuard á á¡á¬ážáá¬áá»ááºáá»á¬áž
- á¡áá¯á¶ážááŒá¯áááœááºáá°áááºá
- áá±ááºáá® áá»áŸáá¯á·ááŸááºá á¬ááŸááºááᯠá¡áá¯á¶ážááŒá¯áááº- áá°áá¶áá¶áááá¯ááá¯áá±á¬áá±á¬ááºá Curve25519á ChaCha20á Poly1305á BLAKE2á SipHash24á HKDF á áááºááŒáá·áºá
- áá»á áºáá»á áºáá±á¬á áááºááá¯ááºáá±á¬ áá¯ááºá á¡á¬ážáááºážáá»ááºáá»á¬ážááᯠááŸá¬ááœá±ááẠááá¯ááá¯ááœááºáá°áááºá
- ááŒáá·áºáá¬ážáá±á¬á áœááºážáá±á¬ááºáááºá
- ááŸááºážáááºážááŒá®áž á¡áá±ážá
áááºáá«á
áááºááŸááºáá»áẠ.
WireGuard á áááºááá¯áá¹áááá±áá¡á¬ážáá¯á¶ážááẠáá¯ááºááá¯ááºážáá±á«ááºáž 4000 áááºáááºážááŒá®áž OpenVPN ááŸáá·áº IPSec ááá¯á·ááẠááá¯ááºážáá±á¬ááºáá±á«ááºážáá»á¬ážá áœá¬ ááá¯á¡ááºáááºá
âWireGuard ááẠááœááºáááºá¡ááºáá¬áá±á·á áºáá áºáá¯á á®ááœáẠáá»áŸáá¯á·ááŸááºáá±á¬á·áá áºáá¯ááᯠáá»áááºááœá²ááŒá®áž áááºážááᯠáá»ááºááŸá±á¬ááºááẠá¡áá»á¬ážáá°ááŸá¬áá±á¬á·áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážáá«áááºááá·áº áá»áŸáá¯á·ááŸááºáá¯ááºáááºážááŒá±á¬ááºážááŒááŒááºážááá¯ááºáᬠááá±á¬ááá¬ážááᯠá¡áá¯á¶ážááŒá¯áááºá SSH ááŸáá·áº á¡áá¬ážáá°áá±á¬ áá»áááºáááºááŸá¯áá áºáá¯ááᯠáááºáá±á¬ááºáááºá¡ááœáẠá¡áá»á¬ážáá°ááŸá¬áá±á¬á·áá»á¬ážááᯠáá²ááŸááºáááºá áá±á¬á·áá»á¬ážááŸáá·áº áá»áááºáááºáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áá°áá±áá¬ááœááºááœáẠáá®ážááŒá¬áž daemon ááá¯ááºáá±á¬ááºáá² áá»áááºáááºááẠNoise_IK ááá¹ááá¬ážááŸ
Noise Protocol Framework SSH ááœáẠauthorized_keys áá»á¬ážááᯠááááºážááááºážááŒááºážááŸáá·áº áááºáá°áááºá áá±áá¬áá±ážááá¯á·ááŒááºážááᯠUDP packets ááœáẠencapsulation ááŒáá·áºáá¯ááºáá±á¬ááºáááºá áááºážááẠclient áá¡ááá¯á¡áá»á±á¬ááºááŒááºáááºááŸá¯ááŒáá·áºáá»áááºáááºááŸá¯ááá¯ááŒááºáá±á¬ááºááŒááºážáááŸááá² VPN áá¬áá¬á IP ááááºá á¬ááá¯ááŒá±á¬ááºážáá²ááŒááºáž (roaming) ááá¯áá¶á·ááá¯ážáá±ážááẠ-áá°ááá±ážáá¬ážáá²á·ááẠOpennetáá¯ááºááŸááºááŒááºážá¡ááœááº
á¡áá¯á¶ážááŒá¯ááẠcipher á á®ážááŒá±á¬ááºážChaCha20 ááŸáá·áº áááºáá±á·áá»áº á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááŒááºážááá¯ááºáᬠá¡ááºáááá¯áá®ááẠ(MAC)Poly1305 Daniel Bernstein á áá®ááá¯ááºážááœá²ááŒá®ážáDaniel J. Bernstein Tanja Lange ááŸáá·áº Peter Schwabeá ChaCha20 ááŸáá·áº Poly1305 ááá¯á·ááẠAES-256-CTR ááŸáá·áº HMAC á ááá¯ááá¯ááŒááºáááºááŒá®áž áá±ážáááºážáá±á¬ analogues áá»á¬ážá¡ááŒá Ạáá±áá¬áá°áá¬ážááŒá®ážá á¡áá°ážáá¬á·ááºáá²áá¶á·ááá¯ážááŸá¯áááá¯á¡ááºáá² áá¯á¶áá±áá¯ááºáá±á¬ááºááŸá¯á¡áá»áááºááᯠáááŸáááá¯ááºá á±ááá·áº áá±á¬á·ááºáá²á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááŒá áºáááºá áá»áŸáá±áá¬ážáá±á¬ áá»áŸáá¯á·ááŸááºáá±á¬á·ááᯠáá¯ááºáá¯ááºáááºá elliptic curve Diffie-Hellman protocol ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááœáẠá¡áá¯á¶ážááŒá¯áááºCurve25519 Daniel Bernstein ááŸá¡ááá¯ááŒá¯áááºá hashing á¡ááœááºáá¯á¶ážáá±á¬ algorithm áááºBLAKE2s (RFC7693) "á
ááááºáá»á¬ážááá¯
Bandwidth (megabit/s)
áááºáž (ms)
á ááºážáááºááœá²á·á ááºážáá¯á¶-
- Intel Core i7-3820QM ááŸáá·áº Intel Core i7-5200U
- Gigabit áááºáá»á¬áž Intel 82579LM ááŸáá·áº Intel I218LM
- Linux ááᯠ4.6.1
- WireGuard Configuration- MAC á¡ááœáẠPoly256 ááŒáá·áº 20-bit ChaCha1305
- ááá IPsec ááœá²á·á ááºážááŸá¯- MAC á¡ááœáẠPoly256 ááŒáá·áº 20-bit ChaCha1305
- áá¯ááá IPsec ááœá²á·á ááºážááŸá¯- AES-256-GCM-128 (AES-NI ááŸáá·áºá¡áá°)
- OpenVPN ááœá²á·á ááºážááŸá¯- HMAC-SHA256-2á UDP áá¯ááºááŒáá·áº AES 256-bit áá®áá»áŸáá±á¬ cipher suite
- á
áœááºážáá±á¬ááºáááºááᯠá¡áá¯á¶ážááŒá¯á ááá¯ááºážáá¬áá²á·áá«áááºá
iperf3
áááá Ạ30 áá»á±á¬áºáá»ááºážáá»áŸááááºááá¯ááŒááááºá
áá®á¡áá¯áá®á¡áá network stack ááœáẠáá±á«ááºážá ááºážááá¯ááºáááºááŸáá·áº WireGuard ááẠááá¯á ááá¯á ááŒááºáááºá áœá¬ á¡áá¯ááºáá¯ááºááá·áºáááºá ááá¯á·áá±á¬áº áááºááœá±á·ááœáẠkernel ááœááºáááºáá±á¬ááºáá¬ážáá±á¬ Crypto API cryptographic functions áá»á¬ážáá®ááá¯á· áá°ážááŒá±á¬ááºážááŒááºážááŒá±á¬áá·áº áááºážááẠáá±áá»á¬áá±á«ááºááŒá áºáááá·áºáááºááá¯ááºáá«á áááºážááá¯á·á¡á¬ážáá¯á¶ážááᯠáá°á WireGuard á á áœááºážáá±á¬ááºáááºá¡ááá·áºááá¯á· ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠááœááºážáá¶áá¬ážáá±ážááŒááºáž ááŒá áºááá¯ááºáááºá
âáá»áœááºáá±á¬á·áºá¡ááŒááºá¡ááá±á¬á· WireGuard áᬠá¡áá¯á¶ážááŒá¯áá°á¡ááœáẠáá±áá¯áá»á¡á¬ážááŒáá·áº á á¶ááŒááŒá áºáá«áááºá á¡ááá·áºáááá·áºáá¯á¶ážááŒááºáá»ááºá¡á¬ážáá¯á¶ážááᯠáááºááŸááºáá»ááºááœáẠááŒá¯áá¯ááºáá¬ážáá±á¬ááŒá±á¬áá·áº áá¯á¶ááŸáẠVPN á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠááŒááºáááºááŒááºážáá¯ááºáááºážá ááºááẠáááá áºá¡áááºážáááºáᬠááŒá¬áá«áááºá configuration ááᯠááŸá¯ááºá¡á±á¬ááºáá¯ááºááá¯á·ááá¯áᬠáááŒá áºááá¯ááºááá±á¬ááºáá«áá²á
áá±ážáá¬ážáá²á·ááẠ2018 ááœáẠHabre - áááºáááºááŒááºážáá¯ááºáááºážá ááºá¡áá±ážá áááºáá±á¬áºááŒáá¬ážáááºá ááá¬ážáááºáááºááá¯ááºááœááºá á¡áá°ážáá±á¬ááºážááœááºáááºááᯠááŸááºáá¬ážááá¯áá«áááºáOpenWRT áá¶á·ááá¯ážááŸá¯ . á€á¡áá¯á¶ážááŒá¯áááœááºáá°ááŸá¯ááŸáá·áº áá¯ááºá¡ááŒá±áá¶á áá»á áºáá áºááááºáááºážááŸá¯ááŸá¬ áá±á¬á·áá»á¬ážááŒáá·áºáá»ááºááŒááºážááᯠáááºááŸá¬ážááŒááºážááŒáá·áº á¡á±á¬ááºááŒááºáá²á·áááºá ááŸá¯ááºááœá±ážáá±á¬ áááºááŸááºá áá áºááŸáá·áº á€áá±á¬áºááá¯áááẠááááºááá·áºá áᬠá¡á¬ážáá¯á¶ážááᯠSSH áá±á¬á·áá»á¬ážáá²á·ááá¯á· ááá¯áá±á¬ááºážáá±á¬ áá¯ááºááŸááºááŒááºážáá±á¬á·áá»á¬áž ááŒáá·áºáá±áá«áááºá"
WireGuard ááá±á¬áá»ááºááᯠ2015 áá¯ááŸá
áºááááºážá áá®ááœááºáá²á·ááŒá®ážá áááºážááᯠá
á
áºáá±ážááŒá®ážááŒá
áºáááºá
source: www.habr.com