Systems

My private network with Tailscale

How I have imac, fxserver, hpserver and mobile devices connected in a private network

3 min read

Fa anys que treballo amb serveis repartits entre diverses màquines: un servidor amb les meves webs i projectes, una altra màquina a casa per a emmagatzematge i proves, l'iMac de treball i els mòbils. La pregunta delicada sempre era la mateixa: com accedeixo a tot això quan no sóc a davant de la màquina?

Durant molt de temps la resposta era obrir ports al router (les portes per on entra i surt la informació), i amb ells la porta a qualsevol escàner automàtic de bots. Vaig provar VPN clàssiques (túnels privats entre xarxes) i túnels manuals, però totes acabaven sent feixugues de mantenir. Des que vaig muntar Tailscale, aquest problema simplement va desaparèixer.

Què és exactament

Tailscale crea una xarxa privada entre els teus equips. Per sota fa servir WireGuard, un sistema de xifratge modern i ràpid; per davant, tu només veus que els teus dispositius es comuniquen com si fossin a la mateixa xarxa local, estiguin on estiguin. Sense obrir ni un sol port. Cada màquina té una adreça estable dins la xarxa i, amb MagicDNS —el servei que posa noms fàcils a les màquines—, un nom fàcil de recordar.

Els meus equips

Tinc una mitja dotzena de dispositius a la xarxa; aquests són els que hi fan vida cada dia:

  • imac: l'ordinador de treball, on escric, disseny i coordino.
  • fxserver: el servidor on viuen les meves webs i la majoria de projectes.
  • hpserver: la màquina de casa, per a emmagatzematge i proves.
  • ipad171 i iphone-12-pro: per entrar-hi des de qualsevol lloc.

Quan fa ssh fxserver (SSH és entrar a un ordenador remot com si estiguessis davant), no m'acord d'adreces IP: el nom ja resol dins la xarxa.

Per a què el faig servir cada dia

  • SSH cap a qualsevol servidor, des de l'iMac o des del mòbil si fa falta.
  • Muntar sistemes de fitxers remots (fer que fitxers d'una altra màquina es vegin com una carpeta més) per treballar-hi com si fossin locals.
  • Panells i APIs interns (les APIs són punts de comunicació entre programes) que només existeixen dins la xarxa: no estan exposats a internet i això és exactament el que vull.
  • Agents i automatitzacions que treballen contra els servidors —com el vigilant de disc amb cron que explico en una altra nota—: la connexió va xifrada i no obre res al món exterior.

Detalls que m'importen

  • Zero ports oberts al router. La superfície d'atac cap a dins (allò que veuria algú que ens escaneja des d'internet) és pràcticament nul·la.
  • Cada dispositiu té la seva clau (la seva identitat dins la xarxa): si un es perd, l'invalido i prou.
  • tailscale ping (una trucada ràpida per veure si respon) em permet saber si una màquina està morta o només fora de la xarxa, cosa que m'ha estalviat més d'un mal de cap. Distingir mort i fora de xarxa té nota pròpia: Servidor mort o fora de xarxa?

De les decisions d'infraestructura que he pres, aquesta és de les que més pau em donen. Res brillant de mostrar, però tot funciona i ningú no pot tocar el que no ha de tocar.