TincVPN - Tu VPN descentralizada
¿Qué es TincVPN?
Es una VPN de código abierto y descentralizada, que proporciona tanto tunneling como el cifrado de los datos.Una de las características más importantes es que no necesita un servidor central donde todos los clientes se conectarán.Gracias a Full mesh routing cada cliente también hace él mismo de servidor.
Puedes visitar su página web en el siguiente enlace
Instalación
En primer lugar tendremos que descargar e instalar tinc en todas aquellas máquinas que quieran conectarse a esta VPN.
apt update && apt -y upgradeapt -y install tinc
Configuración
En cada una de las máquinas de la VPN, vamos a tener la siguiente estructura dentro del directorio /etc/tinc/:
- Carpeta vpn
- Archivo tinc.conf
- Archivo rsa_key.priv
- Archivo tinc-up
- Archivo tinc-down
- Carpeta hosts
- Archivo nodo01
- Archivo nodo02
- …
- tinc.conf Define el nombre de red, el dispositivo de red a través del cual funcionará la VPN y otras opciones de la VPN.
- rsa_key.priv Clave pública, la privada se inserta en el archivo de configuración dentro del directorio hosts.
- tinc-up Comandos que activan el dispositivo de red definido en el archivo tinc.conf.
- tinc-down Comandos que desactivan el dispositivo de red.
- host Cada máquina tendrá su propio archivo de configuración y el del resto de equipos de la red.
Nodo01 (servidor)
Archivo tinc.conf
$ nano /etc/tinc/vpn/tinc.conf
# Copiamos y pegamos:
Name = nodo01
AddressFamily = ipv4
Interface = tun0
mkdir -p /etc/tinc/vpn/hosts
Archivo nodo01
$ nano /etc/tinc/vpn/hosts/nodo01
# Copiamos y pegamos:
Address = <ip_del_nodo01>
Subnet = 10.0.0.1/32
Dentro de /etc/tinc/vpn/ generamos las claves pública y privada
tincd -n vpn -K4096
Archivo tinc-up
$ nano /etc/tinc/vpn/tinc-up
# Copiamos y pegamos:
#!/bin/sh
ip link set $INTERFACE up
ip addr add 10.0.0.1/32 dev $INTERFACE
ip route add 10.0.0.0/24 dev $INTERFACE
Archivo tinc-down
$ nano /etc/tinc/vpn/tinc-down
# Copiamos y pegamos:
#!/bin/sh
ip route del 10.0.0.0/24 dev $INTERFACE
ip addr del 10.0.0.1/32 dev $INTERFACE
ip link set $INTERFACE down
Damos permisos a todos los ficheros del directorio vpn.
chmod 755 /etc/tinc/vpn/tinc-*
Activamos el puerto 655 en el cortafuegos
ufw allow 655
Nodo02 (cliente)
Archivo tinc.conf
$ nano /etc/tinc/vpn/tinc.conf
# Copiamos y pegamos:
Name = nodo02
AddressFamily = ipv4
Interface = tun0
ConnectTo = nodo01
Directorio hosts
mkdir -p /etc/tinc/vpn/hosts
Archivo nodo02
$ nano /etc/tinc/vpn/hosts/nodo02
# Copiamos y pegamos:
Subnet = 10.0.0.2/32
Dentro de /etc/tinc/vpn/ generamos las claves pública y privada.
tincd -n vpn -K4096
Archivo tinc-up
$ nano /etc/tinc/vpn/tinc-up
# Copiamos y pegamos:
#!/bin/sh
ip link set $INTERFACE up
ip addr add 10.0.0.2/32 dev $INTERFACE
ip route add 10.0.0.0/24 dev $INTERFACE
Archivo tinc-down
$ nano /etc/tinc/vpn/tinc-down
# Copiamos y pegamos:
#!/bin/sh
ip route del 10.0.0.0/24 dev $INTERFACE
ip addr del 10.0.0.2/32 dev $INTERFACE
ip link set $INTERFACE down
Damos permisos a todos los ficheros del directorio vpn.
chmod 755 /etc/tinc/vpn/tinc-*
Activamos el puerto 655 en el cortafuegos.
ufw allow 655
Intercambio de claves entre cliente y servidor
En el cliente
Copiamos /etc/tinc/vpn/hosts/nodo02 en el directorio /etc/tinc/vpn/hosts/ del servidor.
scp /etc/tinc/vpn/hosts/nodo02 root@<ip nodo01>:/etc/tinc/vpn/hosts/
En el servidor
Realizamos el mismo procedimiento con el fichero /etc/tinc/vpn/hosts/nodo01 que debemos copiar en el directorio /etc/tinc/vpn/hosts/ del cliente.
scp /etc/tinc/vpn/hosts/nodo01 root@<ip nodo02>:/etc/tinc/vpn/hosts/
Iniciar la VPN
En modo depuración
tincd -n vpn -D -d3
Podemos ver la nueva red tun0 con el siguiente comando:
ip a
Comprobamos que la VPN funciona, realizando un ping desde el cliente al servidor
ping 10.0.0.1
pkill tuncd
Como servicio
systemctl enable tinc@vpnsystemctl start tinc@vpn