Syncthing over Tailscale

fidelramos2 pts1 comments

blog.fidelramos.net<br>– Tailscale autoalojado, Parte 3: Syncthing sobre Tailscale

Fidel Ramos

Llevo años usando Syncthing para sincronizar archivos entre mi portátil, ordenador de sobremesa, teléfono, tablet y servidor. Es un programa fabuloso y ha sido muy fiable, con solo algún conflicto ocasional, pero nunca he perdido ningún dato.<br>Al contrario, el control de versiones de Syncthing me ha salvado el pellejo más de una vez.

Syncthing tiene sus propias soluciones para descubrimiento y NAT traversal, para que los dispositivos que están detrás de un cortafuegos puedan verse entre sí y seguir conectándose.<br>Sin embargo, eso depende de servidores externos para gestionar las conexiones, y podrían guardar metadatos. Incluso si no lo hacen, pueden degradar el rendimiento.

Ahora que tengo una tailnet interconectando todos mis dispositivos, no hay razón para seguir lidiando con nada de eso.<br>Cada dispositivo ya tiene una dirección estable accesible desde cualquier otro dispositivo.<br>Syncthing puede simplemente usarla, solo necesita algo de configuración.

Este artículo explica la reconfiguración de Syncthing para que use la tailnet en exclusiva, desactivando toda la maquinaria que ya no necesita.

Índice de contenidos<br>Objetivos

Por qué hacer esto

Reconfiguración de Syncthing<br>Acerca de las direcciones de escucha

Configurar pares por dirección de tailnet

Cortafuegos

Router

Verificación

Dificultades encontradas<br>Sintaxis de la dirección de escucha %tailscale0

Los pares no se encuentran después de deshabilitar el descubrimiento

MagicDNS falla al inicio en un cliente lento

Syncthing usando contenedores

Caché de anuncios de descubrimiento

Siguientes pasos

Objetivos

Los pares de Syncthing se comunican entre sí exclusivamente a través de la tailnet.

No depender de los servidores de descubrimiento global de Syncthing.

No depender de la red de retransmisión de Syncthing.

No hay necesidad de NAT traversal, lo gestiona Tailscale.

No hay puertos abiertos en el router, no hay necesidad de UPnP.

Todo sigue funcionando igual cuando estoy fuera de casa.

Por qué hacer esto

Hay varias pequeñas victorias que van sumando:

Privacidad. El descubrimiento global de Syncthing se comunica con un servidor central para anunciar (ID de dispositivo → IP pública). Con la tailnet, esa difusión es inútil y se puede desactivar.

Fiabilidad. Los relés son lentos y ocasionalmente inestables. Las conexiones directas a la tailnet son rápidas y consistentes, y el DERP de Tailscale ya proporciona un respaldo en la capa de red si no se puede establecer una ruta directa.

Simplicidad. La dirección de cada par se convierte en una IP de tailnet fija (o nombre MagicDNS). Dejo de ver problemas de conexión entre dispositivos.

Seguridad. Syncthing escucha en TCP/UDP 22000 y UDP 21027 por defecto. Si esos puertos están expuestos en la WAN, son un servicio expuesto a Internet. Desactivar todo excepto la ruta de la tailnet cierra esa puerta, reduciendo la superficie de ataque.

Reconfiguración de Syncthing

Syncthing viene con un montón de características para que funcione a través de Internet sin configuración:

Configuración<br>Predeterminado<br>Propósito<br>En tailnet

Sync Protocol Listen Addresses<br>default<br>Dónde aceptar conexiones entrantes<br>La IP tailnet del dispositivo

Permitir NAT traversal<br>Habilitado<br>UPnP / NAT-PMP to open ports in router<br>Deshabilitado

Descubrimiento global<br>Habilitado<br>Announce device ID → IP on public discovery servers<br>Deshabilitado

Descubrimiento local<br>Habilitado<br>LAN multicast to find peers<br>Deshabilitado

Habilitar retransmisión<br>Habilitado<br>Fallback traffic via public relay servers<br>Deshabilitado

El descubrimiento global y local, el NAT traversal y la retransmisión son innecesarios entre pares que están ya conectados por Tailscale.

Cambié la configuración en cada ordenador a través de la interfaz web de Syncthing (Acciones → Configuración → Conexiones ):

Configuración web de Syncthing

Y en los dispositivos Android en la configuración de la aplicación Syncthing (dentro de Opciones de Syncthing ):

Configuración de Syncthing en Android

Es posible que necesites reiniciar Syncthing después de guardar.

Acerca de las direcciones de escucha

Lamentablemente, Syncthing no admite vincularse a una interfaz específica, es decir, esto no funcionará:

tcp://%tailscale0:22000, quic://%tailscale0:22000

Hay que vincular a la IP de la tailnet:

tcp://100.64.0.1:22000, quic://100.64.0.1:22000

Si el dispositivo se vuelve a registrar en la tailnet y cambia su IP se romperá esta configuración, pero eso será lo suficientemente raro en mi caso como para que sea un compromiso razonable.

Una alternativa menos segura sería dejar esta configuración como default, lo que se vinculará a todas las interfaces, y luego confiar en el cortafuegos del dispositivo para bloquear las conexiones que no sean a través de la tailnet.

Configurar pares por dirección de tailnet

Con el descubrimiento global desactivado, los pares ya no pueden encontrarse...

syncthing tailnet para configuraci descubrimiento tailscale

Related Articles