VPN Tinc · 13 min read · Dec 21, 2025
Instalando un VPN con Tinc en Ubuntu 16.04 LTS
Una Red Privada Virtual (VPN) es una red privada segura que opera sobre una red pública más grande como Internet. Las VPN se han vuelto cada vez más populares en los últimos años, en gran parte porque ofrecen mayor seguridad y privacidad sin la necesidad de configurar hardware nuevo costoso y complejo. También ofrecen varias otras ventajas, incluyendo la reducción de costos de red y soporte.
Las VPN funcionan creando un túnel cifrado a través de una red pública, y utilizando esto para enviar datos de forma segura entre servidores y terminales. Estas conexiones pueden ser cifradas de varias maneras, y hay muchos clientes y demonios VPN diferentes para adaptarse a su arquitectura, presupuesto y nivel de experiencia.
Tinc es una de estas soluciones (1). Un demonio VPN de código abierto, ahora está disponible para una amplia gama de plataformas, y tiene varias ventajas sobre clientes VPN similares. Ofrece cifrado seguro y confiable, compresión opcional, y es fácilmente expandible a medida que su red crece. El enrutamiento automático de malla completa significa que el tráfico VPN siempre se envía directamente a la máquina de destino (siempre que sea posible), sin pasar por transferencias intermedias, y esto mejora enormemente la seguridad al limitar la posibilidad de robo de datos (3). Además, dado que el VPN Tinc aparece para el código de red a nivel IP como un dispositivo de red normal, después de configurar un VPN Tinc no hay necesidad de adaptar el software existente. Esto hace que el VPN Tinc sea inherentemente escalable.
El único problema menor con Tinc es que algunas personas lo han encontrado un poco complicado de configurar. Si eso suena como tú, no temas: hoy te guiaré a través de una forma (más o menos) sin complicaciones de poner en marcha un VPN Tinc en tus servidores.
Requisitos Previos
Para seguir este tutorial completamente, necesitarás al menos tres servidores Ubuntu 16.04, y acceso root en cada máquina. Si no tienes esto o no estás seguro de lo que significa, este tutorial no es para ti: primero deberías consultar cómo configurar un servidor usando Ubuntu (2).
Si estás construyendo un sistema de servidor desde cero, primero necesitas pensar en cómo se van a comunicar tus máquinas entre sí. En este tutorial, voy a usar los nombres de variables que creo que la mayoría de la gente elegiría, pero ten en cuenta que podrías necesitar adaptar algunos de los nombres de variables para adaptarlos a tu propia configuración.
Si deseas seguir este tutorial exactamente, primero necesitarás configurar dos VPS en el mismo centro de datos, y luego hacer un tercer VPS en un segundo centro de datos. Mis centros de datos se llaman NYC2, que tiene los dos VPS, y AMS2, que tiene el tercero. Estos VPS se llaman de la siguiente manera:
externalnyc – Todos nuestros nodos VPN se van a conectar a este servidor, lo que significa que debe permanecer conectado y disponible para asegurar que la red funcione correctamente. Si eventualmente deseas agregar servidores adicionales a tu configuración, deberán configurarse de la misma manera que externalnyc.
internalnyc – Este VPS se conecta al nodo VPN externalnyc usando una interfaz de red privada.
ams1 – Esta es nuestra conexión VPN pública. Se conecta a externalnyc usando Internet público.
Objetivo
Lo que queremos lograr es lo siguiente:

Nuestra red privada está representada por la línea verde, y conecta los tres servidores. La naranja es nuestra red privada, que une los dos servidores NYC2. Los tres servidores pueden conectarse a través de la VPN, aunque la red privada no es accesible para AMS1.
Para hacer esto, sigue estos pasos:
Instalar Tinc
Primero, necesitamos instalar Tinc. Como siempre, asegúrate de que todos tus repositorios apt estén actualizados ejecutando:
sudo apt-get updateLuego instala Tinc de la manera estándar a través de apt:
sudo apt-get install tinc¡Y eso es todo! Tu máquina ahora descargará Tinc, además de cualquier requisito previo que necesites. Ahora necesitamos echar un vistazo a la configuración.
Configuración
Configurar Tinc puede ser un poco diferente de otras VPN a las que estás acostumbrado. Utiliza un “netname” para distinguir una VPN de otra. Esto se vuelve muy útil cuando tienes múltiples VPN funcionando a través de Tinc, pero es un poco contraintuitivo al principio. Dado que esta es nuestra primera red Tinc, mantengámoslo simple y llamemos a nuestra VPN “netname”.
Ahora para cada uno de nuestros servidores. Cada uno necesitará tres componentes de configuración:
Los archivos de configuración: tinc.conf, tinc-up, tinc-down, y un número opcional de otros archivos.
Pares de claves públicas y privadas: estas son para cifrado y autenticación.
Archivos de configuración de host: Estos contienen claves públicas y otros elementos de configuración de VPN.
Ahora configuremos cada uno de nuestros servidores por turno. Primero, externalnyc.
Configurar externalnyc
Bien, ahora a lo importante. En externalnyc, comienza creando la estructura de directorios de configuración para la VPN netname. Ejecuta:
sudo mkdir -p /etc/tinc/netname/hostsAhora abre tinc.conf en tu editor de texto elegido:
sudo vi /etc/tinc/netname/tinc.confUna vez que tengas el archivo frente a ti, agrega lo siguiente al final del archivo:
Name = externalnyc
AddressFamily = ipv4
Interface = tun0Todo lo que estás haciendo aquí es configurar un nodo llamado externalnyc, y decirle al servidor que su interfaz de red usará ipv4 y se llamará “tun0”. Guarda el archivo y ciérralo.
A continuación, necesitamos crear un archivo de configuración de host para externalnyc. Para hacer esto, abre el archivo de configuración de hosts en un editor de texto:
sudo vi /etc/tinc/netname/hosts/externalnycNuevamente, agrega algunas líneas al final de este archivo, sustituyendo la dirección IP pública de tu VPS en la primera línea:
Address = externalnyc_public_IP
Subnet = 10.0.0.1/32Este es el archivo que otros servidores usarán para conectarse a externalnyc. La dirección le dice a otros nodos cómo y dónde conectarse a este servidor, y la dirección de subred es la subred en la que este demonio operará. Nuevamente, guarda tus cambios en este archivo y ciérralo.
Ahora necesitamos generar el par de claves públicas / privadas para este host. Esto es bastante fácil, solo ejecuta:
sudo tincd -n netname -K4096Esto crea una clave RSA privada y agrega un par de claves públicas al final del archivo de configuración que acabamos de crear. Puedes abrirlo nuevamente para ver que esto se ha hecho, si lo deseas.
Ahora, necesitamos hacer tinc-up, un pequeño script que se ejecutará cuando nuestra VPN se inicie. Abre el siguiente archivo para editar:
sudo vi /etc/tinc/netname/tinc-upY agrega:
#!/bin/sh
ifconfig $INTERFACE 10.0.0.1 netmask 255.255.255.0Cada vez que se inicie la VPN netname, este script se ejecutará. Creará una interfaz de red que será utilizada por nuestra VPN, y en esta VPN externalnyc tendrá una IP de 10.0.0.1.
Pero cuando se detenga la VPN, queremos que esta interfaz de red desaparezca, así que necesitamos un script más. Esto debe ser añadido a tinc-down. Abre:
sudo vi /etc/tinc/netname/tinc-downY luego agrega:
#!/bin/sh
ifconfig $INTERFACE downY nuevamente guarda y cierra. Ahora tenemos nuestros scripts, pero para que funcionen necesitan ser marcados como ejecutables. Esto es bastante fácil, usando la línea de comandos:
sudo chmod 755 /etc/tinc/netname/tinc-*Guarda y cierra, y has terminado de configurar este servidor. A continuación, internalnyc y ams1.
Configurar internalnyc y ams1
Para configurar los dos servidores restantes, necesitas ejecutar los mismos comandos en cada máquina. Hay algunas variaciones menores, que señalaré, pero el proceso es básicamente el mismo.
Como hicimos con externalnyc arriba, primero necesitamos hacer la estructura de directorios para nuestros archivos de configuración. En cada servidor, ejecuta lo siguiente, y luego abre el archivo de configuración de Tinc para editar:
sudo mkdir -p /etc/tinc/netname/hosts
sudo vi /etc/tinc/netname/tinc.confLuego agrega algunas líneas al final de este archivo, sustituyendo “node_name” con el nombre de cada nodo:
Name = node_name
AddressFamily = ipv4
Interface = tun0
ConnectTo = externalnycPuedes ver que ambos de nuestros servidores ahora están configurados para intentar conectarse a externalnyc. Guarda este archivo y ciérralo.
Ahora necesitamos hacer el archivo de configuración de hosts. Ejecuta:
sudo vi /etc/tinc/netname/hosts/node_nameLuego para internalnyc, agrega esta línea:
Subnet = 10.0.0.2/32Y para ams1, agrega esta línea:
Subnet = 10.0.0.3/32La única diferencia aquí es que las direcciones difieren, para que podamos distinguir nuestros servidores. Guarda este archivo y ciérralo.
Ahora, al igual que antes, necesitamos generar nuestros pares de claves públicas / privadas, y crear el script de inicio de la interfaz de red. En cada servidor, ejecuta:
sudo tincd -n netname -K4096Y luego:
sudo vi /etc/tinc/netname/tinc-upAhora. Para cada servidor, necesitamos usar las direcciones que especificamos anteriormente. Si me estás siguiendo precisamente, para internalnyc necesitas agregar:
ifconfig $INTERFACE 10.0.0.2 netmask 255.255.255.0Y para ams1:
ifconfig $INTERFACE 10.0.0.3 netmask 255.255.255.0Pero, si especificaste direcciones diferentes arriba, cámbialas aquí también. Guarda estos archivos y cierra. Estamos casi allí.
Solo necesitamos hacer el script de detención de la interfaz de red, como antes:
sudo vi /etc/tinc/netname/tinc-downY luego agrega esta línea en ambos servidores:
ifconfig $INTERFACE downY la última parte de la configuración es hacer que nuestros nuevos scripts sean ejecutables:
sudo chmod 755 /etc/tinc/netname/tinc-*Guarda y cierra. Uf. Si todo salió bien, los tres servidores ahora están configurados. Ahora para implementar la criptografía.
Distribuyendo Claves
Si ya estás usando un sistema de gestión de configuración, tienes suerte. En un mundo ideal, cada nodo que hemos creado ahora necesita poder comunicarse directamente con otro nodo usando una interfaz de clave pública / privada. Las claves, como vimos arriba, ahora están en los archivos de configuración de hosts para cada servidor. En la red simple que estamos creando aquí, en realidad solo externalnyc necesita intercambiar claves con los otros nodos.
Y así, la forma más fácil de hacer esto es simplemente copiar cada clave pública a todos los miembros de los varios nodos. Esto es en realidad bastante fácil, solo ten cuidado de cambiar el valor de “address” en el archivo de configuración de externalnyc a su propia dirección IP privada cuando lo copies. De esa manera, la conexión se establecerá a través de la red privada.
Si me seguiste y llamaste a tu VPN “netname”, los archivos de configuración de hosts están aquí: /etc/tinc/netname/hosts
Intercambiar Claves Entre externalnyc e internalnyc
Esto es sencillo. En internalnyc, encuentra el archivo de configuración de hosts y cópialo a externalnyc:
scp /etc/tinc/netname/hosts/internalnyc user@externalnyc_private_IP:/tmpLuego, en externalnyc, copia el mismo archivo a la ubicación correcta:
cd /etc/tinc/netname/hosts; sudo cp /tmp/internalnyc .Ahora hacemos el procedimiento opuesto. En externalnyc, copia el archivo de configuración de hosts a internalnyc:
scp /etc/tinc/netname/hosts/externalnyc user@internalnyc_private_IP:/tmpY luego en internalnyc copia el archivo para que esté en el lugar correcto:
cd /etc/tinc/netname/hosts; sudo cp /tmp/externalnyc .Ahora necesitamos editar el archivo de configuración de hosts de externalnyc en internalnyc para que la dirección sea correcta. Esto es para que los nodos se conecten a la VPN a través de la red privada. Así que, en internalnyc, abre el archivo de configuración de hosts para externalnyc:
sudo vi /etc/tinc/netname/hosts/externalnycY cambia el valor de dirección a la dirección IP privada de externalnyc, así:
Address = externalnyc_private_IPGuarda el archivo y cierra. Eso es todo con estas dos claves. Ahora solo necesitamos intercambiar claves con nuestro único nodo restante.
Intercambiar Claves Entre externalnyc y ams1
El proceso aquí es bastante similar. Usando ams1, copia el archivo de configuración de hosts a externalnyc:
scp /etc/tinc/netname/hosts/ams1 user@externalnyc_public_IP:/tmpY luego nuevamente cópialo al lugar correcto, usando externalnyc:
cd /etc/tinc/netname/hosts; sudo cp /tmp/ams1 .Permaneciendo en externalnyc, copia el archivo en la otra dirección, hacia ams1:
scp /etc/tinc/netname/hosts/externalnyc user@ams1_public_IP:/tmpY una vez más, en ams1, copia este archivo para que esté en el lugar correcto:
cd /etc/tinc/netname/hosts; sudo cp /tmp/externalnyc .Y has terminado con el intercambio de claves. En teoría, ahora tienes un VPN encriptado y funcional a través de Tinc. Si has seguido este tutorial al pie de la letra, puedes pasar a probar tu configuración. Si, sin embargo, también has aprovechado la oportunidad para agregar nodos adicionales, ahora es un buen momento para intercambiar todas las claves que necesitarás.
Recuerda que si estás usando un nodo central, como estoy haciendo aquí, no necesitas copiar todas las claves a todos los servidores. Sin embargo, si deseas que los nodos puedan hablar entre sí directamente, necesitarán intercambiar claves. El proceso para hacer esto es el mismo que he descrito arriba: simplemente haz tantas iteraciones como necesites para lograr la conectividad deseada.
Pruebas
Ahora deberías estar listo para probar. Para hacer esto, es una buena idea iniciar Tinc en modo de depuración, para que podamos detectar cualquier error y obtener más información si algo sale mal. Recuerda que una VPN mal configurada puede ser un riesgo de seguridad, así que asegúrate de que todo funcione correctamente antes de comenzar a usar tu VPN para algo importante.
Para iniciar Tinc en modo de depuración, en cada nodo, comenzando con externalnyc, ejecuta:
sudo tincd -n netname -D -d3Si has llamado a tu VPN algo diferente, por supuesto, cambia la variable “netname” al nombre apropiado.
Después de que el demonio se inicie en cada nodo, debería devolver una salida que te dé el nombre de cada nodo a medida que se conectan. Si esto no sucede, has cometido un error en algún lugar.
Ahora, podemos probar la VPN. En una nueva ventana en ams1, haz ping a internalnyc usando su dirección IP. Le asignamos esto a 10.0.0.2 anteriormente, así que escribe:
ping 10.0.0.2Con suerte, tu ping funcionará. También deberías ver alguna salida de depuración en las otras ventanas, describiendo las conexiones que acabas de hacer. Ams1 ahora está conectado, a través de tu nueva VPN, a externalnyc, y puede conectarse a internalnyc a través de ella. Presiona CTRL-C y el ping se detendrá.
Ahora que tienes una conexión VPN segura, puedes usarla para cualquier otro tipo de comunicación de red: conexiones de aplicaciones, copiar archivos, SSH, o cualquier otra cosa que desees.
Si tu ping no funcionó, pero crees que hiciste todo bien, podría ser que un firewall se interpuso. Verifica la configuración de tu firewall y vuelve a intentarlo.
Tinc Al Iniciar
Solo una cosa más. Si ahora vas a usar tu VPN Tinc para toda tu red, querrás configurarla para que se inicie al arrancar. Necesitarás hacer esto en cada nodo, editando el archivo de configuración nets.boot. Abre el archivo usando:
sudo vi /etc/tinc/nets.bootY luego agrega el nombre de tu nueva VPN a este archivo. Si elegiste “netname” como yo, esto se verá como lo siguiente:
# Este archivo contiene todos los nombres de las redes que se iniciarán al arrancar el sistema.
netnameGuarda y cierra, y has terminado. Tinc ahora está funcionando y se iniciará al arrancar. Bien hecho.
Si necesitas controlar Tinc, ahora puedes ejecutar el comando “service” para hacerlo. En cada nodo, simplemente ejecuta:
sudo service tinc startY juega un poco. La mayoría del control básico se puede lograr a través de este comando.
Conclusión
Ahora deberías tener una conexión VPN segura funcionando a través de Tinc en todas tus máquinas. Esta VPN puede ser utilizada como base para construir más funcionalidad de red.
Si deseas agregar nodos adicionales en el futuro, o combinar Tinc con otras VPN, Tinc te permitirá hacerlo. El proceso para cada nodo adicional es el mismo que he descrito arriba, y deberías poder ver fácilmente qué variables y direcciones necesitan cambiar. Solo recuerda que si deseas que los nodos puedan conectarse entre sí directamente, necesitarás intercambiar claves entre ellos directamente. De esta manera, Tinc opera como una VPN de malla, que es un poco más segura que mi enfoque. De lo contrario, puedes simplemente configurar tu red como lo he hecho, y hacer que todo pase a través de un nodo central.
De cualquier manera, ahora eres libre de experimentar. ¡Buena suerte!
Recursos
(2) https://www.howtoforge.com/tutorial/ubuntu-lts-minimal-server/
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.