Crea tu VPN con Wireguard
Publish date: Aug 4, 2020
¿Qué es Wireguard?
Instalación en el servidor y el cliente
- Actualizamos los repositorios e instalamos el paquete de Wireguard
apt update && apt -y upgradeapt -y install wireguard
- Nos situamos en el directorio de instalación de WireGuard /etc/wireguard/
cd /etc/wireguard
- Generar el par de claves pública / privada necesarias para la conexión VPN.
wg genkey | tee privatekey | wg pubkey > publickey
- Ahora procederemos a proteger los ficheros que hemos generado, el resto de usuarios no ha de tener acceso.
chmod 600 /etc/wireguard/{privatekey,wg0.conf}
Dentro de este directorio se nos genera dos archivos privatekey / publickey.
Configuración
En el servidor
- Primero de todo cambiamos el ip_forward a 1 para permitir NAT.
nano /proc/sys/net/ipv4/ip_forward
- En el directorio /etc/wireguard vamos a crear nuestro fichero de configuración que en mi caso se llamara tun0
cd /etc/wireguardnano tun0.conf
- Copiamos y pegamos el siguiente contenido:
[Interface]
Address = 10.4.4.1/24
PrivateKey = (Aqui va la clave privada del servidor)
ListenPort = 51820
# Reglas de iptables para permitir el tráfico a la red interna ¡Debemos cambiar el nombre de la interfaz!
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s3 -j MASQUERADE
# Cada [Peer] es un cliente
[Peer]
PublicKey = (Aqui va la clave publica del cliente)
AllowedIPs = 10.4.4.2/32
- Address: Esta es la ip virtual que tendrá nuestro servidor cuando la VPN este activa.
- PrivateKey: Es la clave privada de nuestro servidor, que podemos visualizarla con el comando cat /etc/wireguard/privatekey
- ListenPort: Puerto por defecto que usa WireGuard (se puede cambiar por otro).
- [Peer]: Aqui ira la configuración de cada uno de los cliente que quieran conectarse a la VPN.
- Publickey: Clave pública de nuestro cliente.
- AllowedIPs: Es la ip virtual que asignaremos a este cliente cuando se conecte a la VPN.
En el cliente
Primero abrimos una terminal en nuestro portátil.
En el directorio /etc/wireguard vamos a crear nuestro fichero de configuración que en mi caso se llamara tun0
cd /etc/wireguardnano tun0.conf
Copiamos y pegamos el siguiente contenido:
[Interface]
Address = 10.4.4.2/32
PrivateKey = (Clave privada de nuestro cliente)
[Peer]
PublicKey = (Clave publica de nuestro servidor VPN)
Endpoint = <ip publica del servidor>:51820
AllowedIPs = 0.0.0.0/0
- Address: Esta es la ip virtual que tendrá nuestro cliente cuando se conecte a la VPN (debe estar en el mismo rango que el servidor).
- PrivateKey: Es la clave privada de nuestro cliente, que podemos visualizarla con el comando cat /etc/wireguard/privatekey
- [Peer]:
- PublicKey: Clave pública de nuestro servidor.
- Endpoint: Pondremos la ip de nuestro servidor VPS y el puerto de wireguard.
- AllowedIPs: Dejamos por defecto que permita todas las conexiones.
Activar o desactivar la VPN
- Activar
wg-quick up tun0
- Desactivar
wg-quick down tun0