WireGuard é a gran VPN do futuro?

WireGuard é a gran VPN do futuro?

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.
  • Alto rendemento.
  • Claro e elaborado especificación.

Atopouse unha bala de prata? É hora de enterrar OpenVPN e IPSec? Decidín tratar con isto, e ao mesmo tempo fixémolo script para instalar automaticamente un servidor VPN persoal.

Principios de traballo

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.

Resultados de referencia con web oficial:

WireGuard é a gran VPN do futuro?

A miña experiencia de uso

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.

Proceso de instalación descrito en detalle no sitio web oficial, gustaríame destacar por separado o excelente Soporte OpenWRT.

As claves de cifrado son xeradas pola utilidade wg:

SERVER_PRIVKEY=$( wg genkey )
SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey )
CLIENT_PRIVKEY=$( wg genkey )
CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )

A continuación, cómpre crear unha configuración do servidor /etc/wireguard/wg0.conf co seguinte contido:

[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32

e subir o túnel cun guión wg-quick:

sudo wg-quick up /etc/wireguard/wg0.conf

Nos sistemas con systemd podes usar isto no seu lugar sudo systemctl start [email protected].

Na máquina cliente, cree unha configuración /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = $CLIENT_PRIVKEY
Address = 10.9.0.2/24
[Peer]
PublicKey = $SERVER_PUBKEY
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:51820 # Внешний IP сервера
PersistentKeepalive = 25 

E levanta o túnel do mesmo xeito:

sudo wg-quick up /etc/wireguard/wg0.conf

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.

Fonte: www.habr.com

Engadir un comentario