αžαžΊαžŽαŸ‚αž› NetBSD αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ VPN WireGuard

αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž‚αž˜αŸ’αžšαŸ„αž„ NetBSD αž”αžΆαž“αžšαžΆαž™αž€αžΆαžšαžŽαŸ ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π² основной состав ядра NetBSD Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° wg с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° WireGuard. NetBSD стала Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ОБ послС Linux ΠΈ OpenBSD с ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ WireGuard. Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для настройки VPN β€” wg-keygen ΠΈ wgconfig. Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ядра ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (GENERIC) Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΏΠΎΠΊΠ° Π½Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ явного указания Π² настройках Β«pseudo-device wgΒ».

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αžαžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹ αž€αžΆαžšαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ обновлСния ΠΏΠ°ΠΊΠ΅Ρ‚Π° wireguard-tools 1.0.20200820, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ wg ΠΈ wg-quick. Π’ Π½ΠΎΠ²ΠΎΠΌ выпускС ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° IPC ΠΊ прСдстоящСй ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ WireGuard Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС FreeBSD. ΠžΡΡƒΡ‰Π΅ΡΡ‚Π²Π»Π΅Π½ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ спСцифичного для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΊΠΎΠ΄Π°. Π’ unit-Ρ„Π°ΠΉΠ» для systemd Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«reloadΒ», Ρ‡Ρ‚ΠΎ позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ конструкции Π²ΠΈΠ΄Π° Β«systemctl reload wg-quick at wgnet0Β».

αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αžšαŸ†αž›αžΉαž€αž’αŸ’αž“αž€αžαžΆ VPN WireGuard αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž‘αŸ†αž“αžΎαž” αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αž–αžŸαŸ‹ αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ’αžšαžΎ αž‚αŸ’αž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰ αž“αž·αž„αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž±αŸ’αž™αžƒαžΎαž‰αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž’αŸ†αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αžšαž·αž˜αžΆαžŽαžŠαŸαž’αŸ†αž“αŸƒαž…αžšαžΆαž…αžšαžŽαŸαŸ” αž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž—αž·αžœαžŒαŸ’αžαžαžΆαŸ†αž„αž–αžΈαž†αŸ’αž“αžΆαŸ† 2015 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŸαžœαž“αž€αž˜αŸ’αž˜ αž“αž·αž„ αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž‡αžΆαž•αŸ’αž›αžΌαžœαž€αžΆαžš αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžΎαŸ” αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš WireGuard αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„ NetworkManager αž“αž·αž„ systemd αžšαž½αž…αž αžΎαž™ αž αžΎαž™αž”αŸ†αžŽαŸ‡αžαžΊαžŽαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αžŠαŸαž”αŸ€αž“αž˜αž·αž“αžŸαŸ’αžαž·αžαžŸαŸ’αžαŸαžš, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, αž•αŸ’αž“αŸ‚αž€αžšαž„αŸ” ΠΈ ALT.

WireGuard αž”αŸ’αžšαžΎαž‚αŸ„αž›αž‚αŸ†αž“αž·αžαž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž•αŸ’αž›αžΌαžœαžŸαŸ„αžšαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž” αžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αžŸαŸ„αž―αž€αž‡αž“αž‘αŸ…αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž”αžŽαŸ’αžαžΆαž‰αž“αžΈαž˜αž½αž™αŸ— αž αžΎαž™αž”αŸ’αžšαžΎαžœαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž…αž„αžŸαŸ„αžŸαžΆαž’αžΆαžšαžŽαŸˆαŸ” αžŸαŸ„αžŸαžΆαž’αžΆαžšαžŽαŸˆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αžαžΆαž˜αžšαž”αŸ€αž”αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž‘αŸ…αž“αžΉαž„ SSH αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž…αžšαž…αžΆαžšαžŸαŸ„ αž“αž·αž„αž—αŸ’αž‡αžΆαž”αŸ‹αžŠαŸ„αž™αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸαž˜αž·αž“αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž“αŸ’αž›αŸ‚αž„αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž™αž“αŸ’αžαž€αžΆαžš Noise_IK αž˜αž€αž–αžΈ αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž–αž·αž’αžΈαž€αžΆαžšαžŸαŸ†αž‘αŸαž„αžšαŸ†αžαžΆαž“αžŸαŸ’αžšαžŠαŸ€αž„β€‹αž“αžΉαž„β€‹αž€αžΆαžšβ€‹αžšαž€αŸ’αžŸαžΆβ€‹αž‘αž»αž€ authorized_keys αž€αŸ’αž“αž»αž„ SSHαŸ” αž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžαžΆαž˜αžšαž™αŸˆαž€αžΆαžš encapsulation αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž‰αŸ’αž…αž”αŸ‹ UDP αŸ” αžœαžΆαž‚αžΆαŸ†αž‘αŸ’αžšαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ VPN (αžšαŸ‰αžΌαž˜αžΈαž„) αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž•αŸ’αžαžΆαž…αŸ‹αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž” αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎ αžŸαŸ’αž‘αŸ’αžšαžΈαž˜ cipher ChaCha20 αž“αž·αž„αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αžŸαžΆαžš (MAC) Poly1305αžšαž…αž“αžΆαžŠαŸ„αž™ Daniel Bernstein (αžŠαžΆαž“αžΈαž™αŸ‰αŸ‚αž› J. Bernstein), Tanya Lange
(Tanja Lange) αž“αž·αž„ Peter Schwabe αŸ” ChaCha20 αž“αž·αž„ Poly1305 αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž‡αžΆ analogues αž›αžΏαž“ αž“αž·αž„αž˜αžΆαž“αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž‡αžΆαž„αž“αŸƒ AES-256-CTR αž“αž·αž„ HMAC αžŠαŸ‚αž›αž‡αžΆαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αžΌαžœαž–αŸαž›αžœαŸαž›αžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžαŸαžšαžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αŸ’αžšαžΎαž‡αŸ†αž“αž½αž™αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αž–αž·αžŸαŸαžŸαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαžŸαŸ„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€ αž–αž·αž’αžΈαž€αžΆαžš Diffie-Hellman αžαŸ’αžŸαŸ‚αž€αŸ„αž„αžšαžΆαž„αž’αŸαž›αžΈαž”αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž Curve25519αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž“αžΎαž‘αžΎαž„αžŠαŸ„αž™ Daniel Bernstein αž•αž„αžŠαŸ‚αžšαŸ” αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ hashing αž‚αžΊ BLAKE2s (RFC7693).

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹