
ZeroTier: cand ai nevoie de un switch Ethernet virtual, nu doar de rutare IP
Ai nevoie sa conectezi doua retele locale intre ele astfel incat un dispozitiv de pe una sa vada un altul prin discovery de retea locala (mDNS, UPnP, un NAS care se anunta prin broadcast), nu doar sa il poti pinga pe IP. Incerci cu un VPN clasic Layer 3 si descoperi ca protocoalele alea pur si simplu nu traverseaza un tunel IP obisnuit, pentru ca depind de faptul ca stau pe acelasi segment Ethernet. Aici incepe conversatia despre ZeroTier.
ZeroTier e o platforma de retea software-defined (SDN), open-source pentru partea de client si controller (licenta BSL 1.1), cu cod pe GitHub . Spre deosebire de WireGuard sau Tailscale, ZeroTier nu foloseste protocolul WireGuard: are propriul protocol criptat, construit de la zero cu un scop diferit: sa emuleze un switch Ethernet complet, nu doar un tunel IP punct-la-punct. Noi am evaluat-o ca alternativa pentru scenarii unde Layer 2 conteaza; in productie folosim WireGuard simplu.
Ce este, mai exact, ZeroTier
O retea ZeroTier (“network”) e identificata printr-un ID de 16 cifre hexazecimale si se comporta, din perspectiva dispozitivelor conectate, ca un singur segment Ethernet virtual, indiferent cate continente separa fizic membrii ei. Fiecare dispozitiv primeste o interfata virtuala care participa la acest segment, cu suport complet pentru broadcast si multicast, exact ca pe un switch fizic.
Descoperirea de peer-i se face prin servere root globale, numite “planets”, operate de ZeroTier ca infrastructura publica de bootstrap. Peste asta, poti adauga propriile tale “moons”, servere de relay/discovery auto-gazduite, pentru cazuri unde vrei mai mult control sau redundanta independenta de infrastructura ZeroTier. Controllerul de retea, cel care decide cine face parte din retea si ce reguli se aplica, poate fi de asemenea self-hostat.
De ce conteaza abordarea asta
Modelul Layer 3, pe care il au WireGuard si Tailscale, e simplu si eficient pentru majoritatea cazurilor: rutare IP intre retele distincte. Dar exista o clasa intreaga de aplicatii care presupun ca stau pe acelasi segment fizic de retea: discovery de dispozitive prin broadcast UDP, protocoale industriale legacy, jocuri LAN care cauta servere prin broadcast, sisteme de management care se bazeaza pe ARP si multicast pentru a se gasi reciproc. Toate astea pur si simplu nu functioneaza printr-un tunel Layer 3 pur, indiferent cat de bine e criptat.
ZeroTier rezolva exact problema asta: emuland Layer 2, orice protocol care ar functiona pe o retea locala functioneaza si pe reteaua virtuala ZeroTier, chiar daca membrii sunt raspanditi pe servere diferite, in tari diferite. E diferenta dintre “am o conexiune la acel server” si “acel server e, din toate punctele de vedere software, in aceeasi camera cu mine”.
Ce primesti din cutie
- Emulare completa Layer 2: broadcast si multicast functionale peste internet, nu doar rutare unicast.
- Network ID pe 16 cifre: o retea se identifica si se administreaza printr-un singur identificator, usor de distribuit catre membri noi.
- Rules engine / flow rules: un limbaj de reguli care filtreaza traficul in interiorul retelei virtuale (echivalent unui firewall intern pe segmentul emulat).
- Root servers globale (“planets”) + moons proprii: descoperire de peer-i fara sa depinzi 100% de infrastructura publica, daca alegi sa iti gazduiesti propriile relee.
- Controller de retea self-hostabil: poti rula propriul server care decide membership-ul, fara sa depinzi de consola SaaS ZeroTier Central.
- Clienti pe toate platformele majore, inclusiv routere si dispozitive embedded.
Instalare ZeroTier pe un VPS
Instalarea clientului standard e directa pe orice distributie Linux:
curl -s https://install.zerotier.com | sudo bash
sudo zerotier-cli join <network-id>
Dupa join, membru-ul apare in lista de administrare a retelei (fie in ZeroTier Central, fie in controllerul tau self-hostat) si trebuie autorizat manual inainte sa primeasca trafic real, un pas de securitate simplu dar esential.
Pentru un controller de retea self-hostat pe propriul VPS (in loc sa folosesti ZeroTier Central), rulezi serviciul ztncui sau un controller similar peste zerotier-one in modul controller:
docker run -d \
--name zerotier-controller \
--net=host \
--device=/dev/net/tun \
--cap-add NET_ADMIN --cap-add SYS_ADMIN \
-v zerotier-data:/var/lib/zerotier-one \
zyclonite/zerotier
Interfata de administrare (fie ztncui, fie API-ul local pe portul 9993) nu trebuie expusa public. Restrictioneaza-o:
ufw deny 9993/tcp
ufw allow from <ip-ul-tau> to any port 9993 proto tcp
ufw allow 9993/udp
Ai nevoie de un VPS cu suport TUN/TAP si acces la modulele de kernel necesare; vezi planurile noastre de servere virtuale pentru o baza curata pe care sa il rulezi.
Tipare de configurare care merita stiute
Autorizarea manuala nu e optionala
Nu lasa niciodata o retea ZeroTier pe auto-authorize in productie. Fiecare dispozitiv nou trebuie aprobat explicit in consola de administrare; altfel, oricine gaseste network ID-ul (care nu e un secret criptografic puternic) poate cere sa se alature.
Foloseste flow rules, nu doar membership
Faptul ca un dispozitiv e membru al retelei nu inseamna ca ar trebui sa vada tot traficul. Scrie reguli explicite (limbajul de flow rules al ZeroTier) pentru segmentare interna, exact cum ai face cu VLAN-uri intr-o retea fizica.
Self-hosteaza controller-ul daca securitatea o cere
Daca politica ta interna nu permite ca membership-ul retelei sa fie decis de un serviciu SaaS extern, ruleaza propriul controller. E documentat si sustinut oficial, nu un hack.
Moons proprii pentru latenta si independenta
Daca discovery-ul prin “planets” publice introduce latenta suplimentara sau vrei o cale de bootstrap independenta de infrastructura ZeroTier, gazduieste propriile “moons” pe servere pe care le controlezi.
Unde ZeroTier nu e raspunsul potrivit
Daca tot ce iti trebuie e rutare simpla intre doua servere sau acces de administrare punct-la-punct, complexitatea unei retele Layer 2 emulate e nejustificata: WireGuard face treaba mai simplu si mai rapid. La scara mare (mii de dispozitive), broadcast-ul si multicast-ul emulate peste internet pot deveni ele insele o sursa de trafic inutil daca aplicatiile de pe retea sunt “chatty” din fire, un compromis pe care il mosteneste orice retea de tip Layer 2, fizica sau virtuala.
Licenta BSL 1.1 e de asemenea altceva decat o licenta permisiva clasica; verific-o daca ai constrangeri stricte de compliance legate de tipul de licenta open-source acceptat in organizatia ta.
Alternative pe care le-am luat in calcul
- WireGuard : mai simplu, mai rapid, dar strict Layer 3; alegerea corecta cand nu ai nevoie de broadcast/multicast.
- Tailscale : aceeasi filozofie Layer 3 ca WireGuard, dar cu coordonare automata si SSO; nu rezolva insa nevoia de Layer 2.
- VLAN-uri fizice/VXLAN peste o retea privata dedicata: daca ai deja infrastructura proprie intre locatii, un tunel VXLAN clasic poate fi mai previzibil decat un SDN de tip overlay public.
Deci, sa-l rulezi?
Daca nevoia ta reala e “aceste dispozitive trebuie sa se comporte ca si cum ar fi pe acelasi cablu”, ZeroTier e una dintre putinele unelte care rezolva asta corect, cu suport nativ Layer 2 si un rules engine solid pentru segmentare interna. Daca nevoia ta e doar “aceste servere trebuie sa vorbeasca intre ele in siguranta”, verifica intai WireGuard, e mai simplu de operat si de inteles.
Vrei sa testezi un controller ZeroTier self-hostat sau un nod de retea stabil? Porneste de la un VPS la noi, sau lasa-ne sa il configuram prin administrare de servere .