-
Notifications
You must be signed in to change notification settings - Fork 0
Wireguard
En esta WIKI obtendras información técnica de como conectar desde diferentes tipos de clientes (Linux, Windows, Mikrotik Router u otros) hasta nuestros servicios de IP Publica fija mediante una conexión VPN cifrada con el software Wireguard.
Este pagina indica los pasos para conectar a nuestro servicio de IP Publica Fija via cliente Wireguard desde una maquina con Debian 11 Bullseye
En primer lugar iniciar como root o ejecutar con sudo los siguientes comandos para actualizar el repo e instalar wireguard
apt-get update
apt-get install wireguard
Posteriormente, Ingresar al directorio
/etc/wireguard
en este momento se va a crear la llave privada con el siguiente comando (preferentemente como usuario root)
wg genkey | tee /etc/wireguard/private.key
chmod go= /etc/wireguard/private.key
El comando anterior elimina cualquier permiso en el archivo para usuarios y grupos que no sean el usuario raíz para garantizar que solo él pueda acceder a la clave privada.
Luego ya existiendo la clave privada se procede a crear la clave publica
cat /etc/wireguard/private.key | wg pubkey | tee /etc/wireguard/public.key
A continuación para revisar los archivos creados hacer un ls -la en el directorio /etc/wireguard
cd /etc/wireguard ls -al
-rw------- 1 root root 45 jun 19 20:54 private
-rw------- 1 root root 45 jun 19 20:54 public
Posteriormente crear un archivo con este nombre en el siguiente directorio
/etc/wireguard
con el siguiente contenido
[Interface]
PrivateKey = el_contenido_del_archivo_private
Address = 10.X.Y.Z/24
DNS = 8.8.8.8
[Peer]
PublicKey = 4MknZteup+Q9NC27mYQIBkYYxyX6aNDtOvVnm2vDUws=
AllowedIPs = 0.0.0.0/0
Endpoint = IP_DEL_GATEWAY:PUERTO
PersistentKeepalive = 30
Con respecto a la seccion, [Interface]
En el campo , PrivateKey = - debe especificar la clave privada que se genero en el paso previo y que se encuentra en el archivo
/etc/wireguard/private
En el campo, Address = - esta dirección sera asignada al momento de la contratación como tambien se requerira el contenido del archivo
/etc/wireguard/public.key
que fue creado previamente y se enviara la IP Pública fija con la fecha de expiración del plan contratado para que lo registremos como usuario.
En la seccion [Peer] todo lo que aparece es de produccion por lo tanto puede ser usando tal como se muestra
Por ultimo iniciar el servicio con el siguiente comando
wg-quick up wg0
y verificar de que la nueva intefaz wg0 se encuentra activa y conectada a la red, ejecute este comando
wg
y compare la información que aparecera por pantalla con esta salida
peer: 4MknZteup+Q9NC27mYQIBkYYxyX6aNDtOvVnm2vDUws=
endpoint: 190.97.171.10:52962
allowed ips: 0.0.0.0/0
latest handshake: 4 seconds ago
transfer: 15.23 KiB received, 23.57 KiB sent
persistent keepalive: every 30 seconds
Lo cual es indicativo de que la interfaz esta arriba conectada y de que existe trafico bi-direccional (fluctuacion en aumento de transfer y received)
Con este comando
wg-quick down wg0
detiene el servicio wireguard junto con la interface
Recuerde que una vez conectado a alguno de nuestros gateways VPN (Wireguard), todos los puertos TCP y UDP que ud tenga listando como servicio en el equipo que va a levantar el tunel estaran sirviendo directamente a Internet por lo que se aconseja tomar todas los resguardos necesarios para evitar problemas de seguridad
La siguiente configuracion adicional es para habilitar que solo el trafico que va hacia la IP publica fija via tunel sea procesado por la interfaz vpn wireguard y todo lo demas siga utilizando el gateway original de la red.
[Interface]
PrivateKey = XXXX...
Address = 172.X.Y.Z/30
DNS = 8.8.8.8
Table = 64111
PostUp = ip -4 rule add from 172.X.Y.Z table 64111
PostUp = iptables -I OUTPUT -s 172.X.Y.Z ! -o %i -j DROP
PostDown = ip -4 rule del from 172.X.Y.Z table 64111
PostDown = iptables -D OUTPUT -s 172.X.Y.Z ! -o %i -j DROP
[Peer]
PublicKey = XXXX...
AllowedIPs = 0.0.0.0/0
Endpoint = IP_DEL_GW_Wireguard:53241
PersistentKeepalive = 30
De esta manera por ej. si desde la maquina donde se esta levantando el tunel quisiera navegar a algun sitio de Internet entonces va a salir con su IP original la cual fue provista por el actual ISP (ip dinamica), PERO si por ejemplo esta misma maquina lista un servicio web u otro servicio el trafico de vuelta se enrutara por el tunel saliendo con la IP publica fija que le hemos asignado.
Este setup funciona en ROS7.X, la idea es que solo el trafico hacia la interfaz con la ip publica ingrese y se devuelva por el tunel wireguard y que todo el demas trafico siga por el actual acceso a Internet, en el ejemplo
- interfaz wireguard: wg1
- direccion IP de interface wg1=172.16.1.2/30
- direccion IP gateway tunel 172.16.1.1
- /routing/table/add name=via_wireguard fib
- /ip/firewall/mangle/add chain=prerouting in-interface=wg1 action=mark-connection new-connection-mark=wg_conn passthrough=yes
- /ip/firewall/mangle/add chain=output connection-mark=wg_conn action=mark-routing new-routing-mark=via_wireguard passthrough=no
- /ip/route/add dst-address=0.0.0.0/0 gateway=172.16.1.1 routing-table=via_wireguard distance=10
- /interface/wireguard/peers/set allowed-address="0.0.0.0/0" interface=wg1
Compatibilidad Windows 7, 8.1, 10, 11, 2008R2, 2012R2, 2016, 2019, 2022
Configurar el paquete de software VPN Wireguard en Windows requiere del siguiente instalador el cual puede descagar desde aqui
Una vez descargado e instalado siga las instrucciones del wizard
En esta sección se realizaran configuraciones para conectar con nuestro servicio VPN Wireguard mediante un Router Mikrotik con ROS7.X, para ello es necesario contar con acceso via winbox o via ssh al equipo a configurar, suponiendo que el router Mikrotik posee:
- IP via DHCP en el segmento 192.168.1.0/24
- IP gateway de la red interna 192.168.1.1
- IP asignada luego de la contratacion de algun plan: ej. 10.128.1.15/24
Ingresar al CLI de ROS Mikrotik (New Terminal) y ejecutar
/interface/wireguard/add
el comando anterior va a crear una nueva interface con el nombre wireguard1 con su correspondiente clave pública y privada ademas del puerto escucha de manera automatica
Luego ejecutar
/interface/wireguard/peers
add endpoint-address=190.97.171.10 endpoint-port=52962 interface=wireguard1 public-key="4MknZteup+Q9NC27mYQIBkYYxyX6aNDtOvVnm2vDUws="
este comando agrega nuestro gateway endpoint VPN wireguard, indica el puerto , la interface y la clave publica del endpoint (el comando va todo en una sola linea, se muestra cortado aqui dado el ancho fijo que provee la pagina del wiki)
A continuacion corresponde asignar la direccion IP de la interface wireguard1 y que fue asignada al principio de esta sección:
/ip/address
add address=10.128.1.15/24 interface=wireguard1
Por ultimo se debe crear una ruta estatica para enviar todo el trafico por la ip del gw que soporta la interface wireguard
/ip/route
add dst-address=0.0.0.0/0 gateway=10.128.1.1
y asignarle una distancia 2 al gateway por default que asigno el dhcp-client
/ip/dhcp-client
set default-route-distance=2
Para finalizar agregar esta ruta estatica para asegurar que el EndPoint wireguard sea alcanzado por la default de la red interna
/ip/route
add dst-address=190.97.171.10 gateway=192.168.1.1
En Desarrollo
Instalar el paquete wireguard desde
System / Package Manager / Available Packages
luego ir al menu de VPN-->Wireguard, click boton verde "Add Tunnel", click boton azul "Generate" New Keys, una vez generadas las nuevas keys hacer click en "Public key for this tunnel. (Copy)" Copy y enviar esta llave publica por email (hostmaster [at] redlibre.cl)
Luego en "Interface addresses" escribir la direccion IP asignada al tunel que sera enviada via email. finalmente "save tunnel"
Posteriormente ir a
VPN / WireGuard / Peers
click en boton verde "Add Peer", en el combo box "Tunnel" seleccionar el tunel recientemente creado, luego DES-Seleccionar "Dynamic Endpoint", en "Endpoint" colocar la IP de nuestro GW: 190.97.171.100, Keep Alive :30 , publick key escribir la llave publica que sera enviada por email, por ultimo en "Allowed IPs" escribir
0.0.0.0/0
Click boton azul "Save Peer"
En el menu:
Interfaces / Interface Assignments
Asignar la interface del nuevo tuneel a OPT1, click en "save"
Finalmente ir a:
System / Routing / Gateways
Gateways boton verde "Add"
Interface "OPT1"
Gateway: la ip del gw que sera enviada por email
click en boton celeste "Display Advanced" y DES-seleccionar "Use non-local gateway", Save
Redlibre VPN