DEV Community

Aleets Vaaz
Aleets Vaaz

Posted on • Edited on

1

Wireguard | Instalación & Configuración en Linux| VPN

¿Que es WireGuard?

WireGuard es una solución de red privada virtual (VPN) que tiene como objetivo ser simple, rápida y segura. Se utiliza para establecer túneles VPN entre dispositivos, lo que permite conexiones seguras a través de redes no confiables, como Internet. A diferencia de otras soluciones VPN tradicionales, WireGuard está diseñado con un enfoque en la simplicidad y eficiencia.

Características de WireGuard:

  1. Simplicidad: WireGuard tiene un diseño minimalista con un código fuente reducido en comparación con otros protocolos VPN. Esto facilita su revisión de seguridad y mantenimiento.
  2. Seguridad moderna: Utiliza criptografía de última generación, como ChaCha20 para cifrado, Poly1305 para autenticación, Curve25519 para intercambio de claves y BLAKE2s para hashing.
  3. Rendimiento: Es extremadamente rápido y eficiente, logrando mejores velocidades y menor latencia que VPNs tradicionales como OpenVPN o IPSec.
  4. Cross-platform: Es compatible con una amplia variedad de sistemas operativos, como Linux, macOS, Windows, Android y iOS.
  5. Configuración sencilla: WireGuard utiliza una interfaz de red virtual simple y no requiere configuración compleja para funcionar correctamente.
  6. Conexión persistente: Puede mantener una conexión persistente, aunque los dispositivos cambien de red o dirección IP.
  7. Portabilidad: Su diseño eficiente lo hace ideal para dispositivos de bajo consumo o embebidos.

Ventajas de WireGuard:

  • Fácil de usar y configurar: Comparado con otras VPN, la configuración es mucho más simple.
  • Rápido y eficiente: Reduce el uso de CPU y mejora la velocidad de conexión.
  • Mayor seguridad: Utiliza criptografía moderna y segura.
  • Menor consumo de batería: Esto es especialmente útil en dispositivos móviles.
  • Bajo overhead: Menos datos adicionales en cada paquete, lo que optimiza el tráfico de red.

Cómo instalar WireGuard en Linux:
WireGuard es una solución VPN moderna que ofrece simplicidad, velocidad y seguridad. A continuación, te guiaré paso a paso sobre cómo instalar y configurar WireGuard en Linux.

  • Paso 1: Actualizar el sistema Lo primero que debemos hacer es asegurarnos de que nuestro sistema esté actualizado. Ejecuta el siguiente comando en la terminal:
sudo apt update && sudo apt upgrade -y
Enter fullscreen mode Exit fullscreen mode
  • Paso 2: Instalar WireGuard Para distribuciones basadas en Debian/Ubuntu, WireGuard está disponible en los repositorios oficiales. Instálalo con el siguiente comando:
sudo apt install wireguard

Enter fullscreen mode Exit fullscreen mode

Cómo configurar WireGuard en Linux:

  • Paso 1: Acceder al directorio de configuración Navega al directorio de configuración de WireGuard con:
cd /etc/wireguard/
Enter fullscreen mode Exit fullscreen mode

Aquí crearemos el par de calves para el servidor y para el cliente

Para mayor seguridad, configuramos los permisos para que solo el administrador pueda ver las claves generadas:

umask 077
Enter fullscreen mode Exit fullscreen mode
  • Paso 2: Crear el par de claves

Genera las claves para el servidor y el cliente:

  • Clave del servidor:
wg genkey | tee serverprivatekey | wg pubkey > serverpublickey

Enter fullscreen mode Exit fullscreen mode
  • Clave del cliente:
wg genkey | tee clienteprivatekey01 | wg pubkey > clientepublickey01

Enter fullscreen mode Exit fullscreen mode
  • Si se requiere mas clientes repetir el comando anterior pero cambiando el nombre de las llaves para identificarlas facialmente por ejemplo:
wg genkey | tee clienteprivatekey02 | wg pubkey > clientepublickey02

Enter fullscreen mode Exit fullscreen mode
  • Paso 3: Puedes verificar las claves generadas con:
ls -lh
Enter fullscreen mode Exit fullscreen mode

Esto nos mostrara todas las claves generadas

  • Paso 4: Podemos ver el contenido de las claves con sus nombres correspondientes de cada una y las copiamos en un lugar visible:
cat serverprivatekey clientpublickey01

Enter fullscreen mode Exit fullscreen mode

O también puedes usar:

cat 0*
Enter fullscreen mode Exit fullscreen mode
  • Paso 5: Ver nuestra ip de red con el siguiente comando:
ip a 
Enter fullscreen mode Exit fullscreen mode

Recordamos o guardamos nuestra IP para usarlo mas adelante.

  • Paso 6: Crear el archivo de configuración Ahora creamos el archivo de configuración principal del servidor (/etc/wireguard/wg0.conf), usando el editor nano:
sudo nano wg0.conf
Enter fullscreen mode Exit fullscreen mode

El contenido básico del archivo será el siguiente:

[Interface]
PrivateKey = (serverprivatekey)
Address = 10.0.0.1/24 (Direccion privada del servidor)
PostUp = iptables -A FORWARD -1 wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 (<-- Cambiarlo por el identificador de nuestra red)  -j MASQUERADE 
PostDown = iptables -D FORWARD -1 wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ethO0 (<-- Cambiarlo por el identificador de nuestra red) -j MASQUERADE
ListenPort = 51820 (Dejarlo por defecto)

[Peer]
PublicKey = <clientepublickey01>
AllowedIPs = 10.0.0.2/32 (<-- Ip privada que tiene el usuario/cliente)

#------------------Si se agregan otros clientes---------------------#
PublicKey = <clientepublickey02>
AllowedIPs = 10.0.0.3/32 (<-- Ip privada que tiene el usuario/cliente)
Enter fullscreen mode Exit fullscreen mode

Un ejemplo listo, sin comentarios y terminado se vería asi:

[Interface]
PrivateKey = YFXqpAmxjEYUfAv9x11b5U2neIONO1jVBLUSdYROzZWk=
Address = 10.0.0.1/24

PostUp = iptables -A FORWARD -1 wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
PostDown = iptables -D FORWARD -1 wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ethO0 -j MASQUERADE 
ListenPort = 51820

[Peer]
PublicKey = AUB3C1xHT4roVyQpTse/UA5M6/v+DoMn ipdeEWi75Qc=
AllowedIPs = 10.0.0.2/32
Enter fullscreen mode Exit fullscreen mode
  • Paso 7: Activar WireGuard

Inicia la interfaz de WireGuard con el siguiente comando:

sudo wg-quick up wg0

Enter fullscreen mode Exit fullscreen mode

-Paso 8: Octavo Para que la interfaz se inicie automáticamente en el arranque del sistema, habilítala con:

sudo systemctl enable wg-quick@wg0

Enter fullscreen mode Exit fullscreen mode
  • Paso 9: Habilitar el reenvío de paquetes Es necesario activar el reenvío de paquetes para que el tráfico pueda fluir entre el cliente y el servidor. Para hacerlo temporalmente, ejecuta:
sudo sysctl -w net. 1ipv4.1p_forward=1
Enter fullscreen mode Exit fullscreen mode
  • Paso 10: Para hacerlo permanente, edita el archivo /etc/sysctl.conf:
sudo nano /etc/sysctl.conf
Enter fullscreen mode Exit fullscreen mode

Descomenta la siguiente línea:

net.ipv4.ip_forward=1
Enter fullscreen mode Exit fullscreen mode

Configuración del cliente en Windows

Para configurar WireGuard en Windows, sigue estos pasos:

  • Paso 1: Descargar e instala wireguard y sigue el asistente de instalación.

  • Paso 2: Abre la aplicación, selecciona la opción para agregar un nuevo túnel en la parte inferior izquierda y configura los siguientes parámetros:

[Interface]
PrivateKey = clave privada cliente 
Address = 10.0.0.2/32
DNS = 8.8.8.8

[Peer]
PublicKey = clave publica servidor 
AllowedIPs = 0.0.0.0/0
Endpoint = IP servidor:51820
Enter fullscreen mode Exit fullscreen mode

Ya listo quedaría algo asi:

[Interface] 
PrivateKey = GPCW-+PHaS0QZMOYZMYI2XCaTC19TANKGHAQEAZPT31= 
Address = 10.0.0.2/32 
DNS = 8.8.8.8

[Peer] 
PublicKey = NgZKUME+DIFwy11eGO/GvubTIGHECVOR2tF 
AllowedIPs = 0.0.0.0/0
Endpoint = 94.237.80.228:51820
Enter fullscreen mode Exit fullscreen mode
  • Finalmente le asignaremos un nombre, guarda la configuración y activa el túnel.

Conclusión

WireGuard es una opción VPN moderna y eficiente, perfecta para quienes buscan simplicidad y seguridad en sus conexiones. Este tutorial cubre los pasos esenciales para instalar y configurar WireGuard en Linux y Windows.

Image of AssemblyAI tool

Transforming Interviews into Publishable Stories with AssemblyAI

Insightview is a modern web application that streamlines the interview workflow for journalists. By leveraging AssemblyAI's LeMUR and Universal-2 technology, it transforms raw interview recordings into structured, actionable content, dramatically reducing the time from recording to publication.

Key Features:
🎥 Audio/video file upload with real-time preview
🗣️ Advanced transcription with speaker identification
⭐ Automatic highlight extraction of key moments
✍️ AI-powered article draft generation
📤 Export interview's subtitles in VTT format

Read full post

Top comments (0)

Heroku

This site is powered by Heroku

Heroku was created by developers, for developers. Get started today and find out why Heroku has been the platform of choice for brands like DEV for over a decade.

Sign Up

👋 Kindness is contagious

Dive into an ocean of knowledge with this thought-provoking post, revered deeply within the supportive DEV Community. Developers of all levels are welcome to join and enhance our collective intelligence.

Saying a simple "thank you" can brighten someone's day. Share your gratitude in the comments below!

On DEV, sharing ideas eases our path and fortifies our community connections. Found this helpful? Sending a quick thanks to the author can be profoundly valued.

Okay