Servidor VPN - GNU/Linux
Instalación
Para instalar WIREGUARD solo se debe ejecutar el siguiente comando en Debian o derivadas:
apt install wireguard
Es necesario que la versión del kernel sea superior a la 5.4.
Configuración
Las configuraciones se realizaran dentro del directorio /etc/wireguard.
cd /etc/wireguard/
mkdir servidor
cd servidor
Generar Clave Publica y Privada.
wg genkey > privatekey
cat privatekey | wg pubkey > publickey
Generar archivo de configuración.
chmod 600 -R ../wireguard/
cd ..
touch wg0.conf
cat servidor/privatekey > wg0.conf
El archivo debe contener el siguiente contenido:
[Interface]
Address = direccion de red y mascara de red.
PrivateKey = clave privada.
ListenPort = puerto que usara wireguard.
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT;iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT;iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Habilitar e iniciar el servicio de WIREGUARD.
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0
systemctl status wg-quick@wg0
Encender ip forward
sysctl -w net.ipv4.ip_forward=1
Contenido del directorio WIREGUARD.
Cliente
Dentro del cliente Linux se debe realizar los mismos pasos que en el servidor.
cd /etc/wireguard/
mkdir servidor
cd servidor
Generar Clave Publica y Privada.
wg genkey > privatekey
cat privatekey | wg pubkey > publickey
Generar archivo de configuración.
chmod 600 -R ../wireguard/
cd ..
touch wg0.conf
cat servidor/privatekey > wg0.conf
El archivo debe contener el siguiente contenido:
[Interface]
Address = dirección ip y mascara de red
PrivateKey = CLAVE PRIVADA CLIENTE LINUX
[Peer]
Publickey = CLAVE PÚBLICA DEL SERVIDOR
AllowedIPs = 0.0.0.0/0
EndPoint= IP PÚBLICA:PUERTO.
Mi archivo de configuración.
Contenido del directorio WIREGUARD
Servidor
Dentro del archivo de configuración se debe agregar nuevo cliente.
nvim /etc/wireguard/wg0.conf
El contenido debe quedar de la siguiente manera:
[Interface]
Address = Dirección ip y mascara de red.
PrivateKey = clave privada
ListenPort = puerto
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT;iptables -t nat -D POSTROUTING -o eth0 -j MASQUERAD
[Peer]
PublicKey = CLAVE PÚBLICA CLIENTE LINUX
AllowedIPs = dirección ip y mascarara de red
PersistentKeepAlive = 25
Mi archivo de configuración.
Una vez echo esto, solo queda reiniciar el servicio de WIREGUARD para que tome los cambios.
systemctl restart wg-quick@wg0
Cliente
Para conectar al cliente al VPN se debe habilitar el servicio y luego activarlo.
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0
Como se puede observar en la imagen, la conexión se estableció correctamente.