Chegou o momento no que a VPN xa non é unha ferramenta exótica de administradores de sistemas barbudos. Os usuarios teñen tarefas diferentes, pero o certo é que todos necesitan unha VPN.
O problema das solucións VPN actuais é que son difíciles de configurar correctamente, son caros de manter e están cheos de códigos heredados de calidade cuestionable.
Hai varios anos, o especialista canadense en seguridade da información Jason A. Donenfeld decidiu que xa tiña farto e comezou a traballar WireGuard. WireGuard está a prepararse para a súa inclusión no núcleo de Linux e mesmo recibiu eloxios de Linus Torvalds e Senado dos EUA.
Vantaxes reivindicadas de WireGuard sobre outras solucións VPN:
Doado de usar.
Usa criptografía moderna: marco de protocolo de ruído, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, etc.
Código compacto e lexible, máis fácil de investigar para detectar vulnerabilidades.
Os principios de funcionamento pódense describir algo así:
Créase unha interface WireGuard e asígnaselle unha clave privada e un enderezo IP. Cargan a configuración doutros pares: as súas chaves públicas, enderezos IP, etc.
Todos os paquetes IP que chegan á interface WireGuard están encapsulados en UDP e entregado con seguridade outros compañeiros.
Os clientes especifican o enderezo IP público do servidor na configuración. O servidor recoñece automaticamente os enderezos externos dos clientes cando se reciben datos correctamente autenticados deles.
O servidor pode cambiar o enderezo IP público sen interromper o seu traballo. Ao mesmo tempo, enviará unha alerta aos clientes conectados e actualizarán a súa configuración sobre a marcha.
Emprégase o concepto de encamiñamento Enrutamento de Cryptokey. WireGuard acepta e envía paquetes baseados na clave pública do mesmo. Cando o servidor descifra un paquete correctamente autenticado, compróbase o seu campo src. Se coincide coa configuración allowed-ips igual autenticado, o paquete é recibido pola interface WireGuard. Cando se envía un paquete saínte prodúcese o procedemento correspondente: tómase o campo dst do paquete e, en función del, selecciónase o peer correspondente, asínase o paquete coa súa clave, cífrase coa clave do mesmo e envíase ao punto final remoto. .
Toda a lóxica principal de WireGuard ocupa menos de 4 mil liñas de código, mentres que OpenVPN e IPSec teñen centos de miles de liñas. Para soportar algoritmos criptográficos modernos, proponse incluír unha nova API criptográfica no núcleo de Linux cinco. Actualmente hai unha discusión sobre se esta é unha boa idea.
Produtividade
A vantaxe máxima de rendemento (en comparación con OpenVPN e IPSec) notarase nos sistemas Linux, xa que WireGuard está implementado alí como módulo do núcleo. Ademais, son compatibles con macOS, Android, iOS, FreeBSD e OpenBSD, pero neles WireGuard execútase no espazo de usuario con todas as consecuencias de rendemento conseguintes. Espérase que o soporte de Windows se engada nun futuro próximo.
Non son un experto en VPN. Unha vez configurei OpenVPN manualmente e foi moi tedioso e nin sequera probei IPSec. Hai demasiadas decisións que tomar, é moi doado dispararse no pé. Polo tanto, sempre usei scripts preparados para configurar o servidor.
Entón, WireGuard, desde o meu punto de vista, é xeralmente ideal para o usuario. Todas as decisións de baixo nivel tómanse na especificación, polo que o proceso de preparación dunha infraestrutura VPN típica leva só uns minutos. É case imposible facer trampas na configuración.
Só queda configurar NAT no servidor para que os clientes poidan acceder a Internet, e xa está!
Esta facilidade de uso e compacidade da base de código conseguiuse eliminando a funcionalidade de distribución de claves. Non hai un sistema de certificados complexo e todo este horror corporativo; as claves de cifrado curtas distribúense como as claves SSH. Pero isto supón un problema: WireGuard non será tan fácil de implementar nalgunhas redes existentes.
Entre as desvantaxes, cabe destacar que WireGuard non funcionará a través dun proxy HTTP, xa que só o protocolo UDP está dispoñible como transporte. Xorde a pregunta: será posible ofuscar o protocolo? Por suposto, esta non é a tarefa directa dunha VPN, pero para OpenVPN, por exemplo, hai formas de disfrazarse de HTTPS, o que axuda aos residentes de países totalitarios a utilizar Internet por completo.
Descubrimentos
En resumo, este é un proxecto moi interesante e prometedor, xa podes utilizalo en servidores persoais. Cal é o beneficio? Alto rendemento en sistemas Linux, facilidade de configuración e soporte, base de código compacta e lexible. Non obstante, é demasiado cedo para apresurarse a transferir unha infraestrutura complexa a WireGuard; paga a pena esperar a súa inclusión no núcleo de Linux.
Para aforrar o meu (e o teu) tempo, desenvolvín Instalador automático WireGuard. Coa súa axuda, podes configurar unha VPN persoal para ti e os teus amigos sen sequera entender nada ao respecto.