En este artículo, lo guiaré, paso a paso, a través del proceso de configuración de una VPN WireGuard en un servidor Linux. Le permitirá acceder a recursos de Internet seguros desde lugares inseguros como cafeterías.
Pero, ¿por qué una VPN? ¿Y por qué WireGuard?
Cada vez que se conecta, por ejemplo, al sitio web de su banco desde una ubicación remota, corre el riesgo de exponer la contraseña y otra información confidencial a cualquiera que esté escuchando en la red.
Con suerte, por supuesto, el sitio web del banco estará encriptado, lo que significa que los datos clave que fluyen entre el banco y su PC o teléfono inteligente serán ilegibles para cualquiera que esté escuchando en el camino.
¿Y si se conecta desde su casa u oficina? Con una VPN, puede estar razonablemente seguro de que los elementos de datos que no están ocultos por el cifrado regular no serán vistos por las personas equivocadas.
Pero, ¿qué pasa si se conecta a través de un enrutador WiFi público en un aeropuerto o cafetería? ¿Estás seguro de que la red no se ha visto comprometida o de que no hay piratas informáticos mirando sin ser detectados?
Para contrarrestar esta amenaza muy real, puede abrir una conexión en su computadora portátil o teléfono a un servidor VPN. De esta manera, todas sus transferencias de datos se realizan a través de un túnel virtual. Cada parte de sus conexiones sensibles será invisible para cualquier persona en la red local desde la que se está conectando.
WireGuard es el más nuevo de los tres grandes jugadores en el mundo de las VPN de código abierto, y los otros dos son IPsec y OpenVPN.
WireGuard está diseñado para ser más simple, más rápido y más flexible que los demás. Es el chico nuevo de la cuadra, pero rápidamente se hizo con algunos amigos importantes. A instancias del propio creador de Linux Linus Torvalds, WireGuard se incorporó recientemente al kernel de Linux.
¿Dónde construir su servidor VPN?
Claro, siempre puede armar un servidor VPN en casa y configurar el reenvío de puertos a través del enrutador de su ISP. Pero a menudo tendrá más sentido ejecutarlo en la nube.
No se preocupe. Les aseguro que de esta manera estará mucho más cerca de una configuración rápida e indolora de "configúrelo y olvídese". Y es muy poco probable que lo que construya en casa sea tan confiable, o seguro, como la infraestructura proporcionada por los grandes proveedores de nube como AWS.
Sin embargo, si tiene un servidor de Internet seguro profesionalmente en la casa (o está dispuesto a arriesgarse con una Raspberry Pi de repuesto que tiene por ahí), funcionará casi de la misma manera.
Gracias a WireGuard, ya sea en la nube o en un servidor físico, crear su propia VPN doméstica nunca ha sido tan fácil. Toda la configuración se puede realizar en media hora.
Preparándose
Ponga en marcha su instancia de nube, quizás utilizando un tutorial de aquí.
Asegúrese de que el puerto 51820 esté abierto para su servidor. Esto se hace con grupos de seguridad en AWS y un firewall de red de VPC en Google Cloud.
Con las versiones modernas de Debian / Ubuntu, Wireguard está disponible para ser instalado desde los administradores de paquetes como este:
sudo apt install wireguard
O con yum, del repositorio de EPEL:
sudo yum install kmod-wireguard wireguard-tools
Paso uno: cree las claves de cifrado
En cualquier directorio del servidor donde desee crear archivos que contengan las claves pública y privada, use este comando:
umask 077; wg genkey | tee privatekey | wg pubkey > publickey
Haga lo mismo para el cliente en un directorio diferente o en su máquina local. Solo asegúrese de poder distinguir entre los diferentes conjuntos de claves más adelante.
Para una configuración rápida, puede utilizar un generador de claves en línea. Sin embargo, sugiero hacerlo manualmente la primera vez. Asegúrese de que los archivos se hayan creado con claves hash, ya que los utilizará en el siguiente paso.
Paso dos: cree la configuración del servidor
Necesita crear un archivo .conf en el directorio / etc / wireguard. Incluso puede tener varias VPN ejecutándose al mismo tiempo utilizando diferentes puertos.
Pegue el siguiente código en el nuevo archivo:
sudo nano /etc/wireguard/wg0.conf
[Interface] Address = 10.0.0.1/24 ListenPort = 51820 # use the server PrivateKey PrivateKey = GPAtRSECRETLONGPRIVATEKEYB0J/GDbNQg6V0s= # you can have as many peers as you wish # remember to replace the values below with the PublicKey of the peer [Peer] PublicKey = NwsVexamples4sBURwFl6HVchellou6o63r2B0s= AllowedIPs = 10.0.0.2/32 [Peer] PublicKey = NwsexampleNbw+s4sBnotFl6HrealxExu6o63r2B0s= AllowedIPs = 10.0.0.3/32
Inicie la VPN
sudo systemctl start wg-quick@wg0
Si no tiene systemd (lo que podría ser cierto si su instancia ejecuta Amazon Linux) puede usar sudo wg-quick up wg0
.
Paso tres: cree la configuración del cliente
Primero instale Wireguard en su máquina cliente, ya sea de la misma manera en Linux oa través de una tienda de aplicaciones si está usando Windows, macOS, Android o iPhone.
Si usó un generador de claves en línea o un script QR en el Paso uno, entonces puede conectar su teléfono tomando una foto del código QR.
Una vez que WireGuard esté instalado en el cliente, configúrelo con estos valores:
# Replace the PrivateKey value with the one from your client interface [Interface] Address = 10.0.0.2/24 ListenPort = 51820 PrivateKey = CNNjIexAmple4A6NMkrDt4iyKeYD1BxSstzer49b8EI= #use the VPN server's PublicKey and the Endpoint IP of the cloud instance [Peer] PublicKey = WbdIAnOTher1208Uwu9P17ckEYxI1OFAPZ8Ftu9kRQw= AllowedIPs = 0.0.0.0/0 Endpoint = 34.69.57.99:51820
Hay muchos complementos opcionales que puede que desee según su caso de uso, como especificar DNS o claves previamente compartidas para una capa adicional de seguridad.
Inicie el cliente de la misma manera que el servidor si está en Linux o a través de la propia aplicación en otros sistemas.
Prueba tu VPN
Type "my ip" in your browser to discover your public IP address. If the IP you get is different from the address your computer had before starting the VPN, then you were successful!
(And if you forgot what it was before, try sudo systemctl stop wg-quick@wg0
, checking and starting it again.)
Troubleshooting Guide
Make sure your server is configured for IP forwarding. Check the /etc/sysctl.conf file, or run:
echo 1 > /proc/sys/net/ipv4/ip_forward
Your connection dies often? Add this to the peer section of the client configuration:
PersistentKeepalive = 25
Not sure why it's not working? Try sudo tcpdump -i eth
on the server while trying to use the client.
Thanks for reading this guide.
If you want to dive deeper, consider taking my paid Manning course on WireGuard VPN.