Reti Mesh VPN Nebula, Tinc e Headscale: recensione pratica e confronto 2026
Analisi approfondita di Nebula, Tinc e Headscale: esplorazione dell’architettura, sette scenari applicativi con istruzioni passo passo e dati concreti, errori comuni e trucchi, confronto con alternative e consigli su quando scegliere una mesh VPN o un VPN classico personale.
Contenuto dell'articolo
- Introduzione – perché nel 2026 ci serve una mesh vpn e non un altro tunnel server
- Recensione e confronto: architettura, punti di forza e limiti di nebula, tinc e headscale
- Scenario 1 – infrastruttura ibrida: connettere più cloud e uffici
- Scenario 2 – accesso sicuro per sviluppatori e ci-cd a servizi privati senza porte aperte
- Scenario 3 – connettività inter-reti per emergenze e war room temporanei
- Scenario 4 – lan private per gaming, media server e automazione domestica senza port forwarding
- Scenario 5 – replica interregionale e backup via p2p senza canali dedicati
- Scenario 6 – manutenzione remota iot e ot senza internet pubblico
- Scenario 7 – laboratori inter-team e sandbox per esperimenti con kubernetes e database
- Errori tipici in fase di implementazione e come evitarli
- Integrazioni e combinazioni di strumenti
- Confronto con alternative e come scegliere l’approccio giusto
- Faq – risposte alle domande più frequenti in fase di implementazione
- Conclusioni – come scegliere e da dove partire
Introduzione – perché nel 2026 ci serve una mesh VPN e non un altro tunnel server
Le reti non sono più come una volta. Macchine virtuali e container migrano tra data center e cloud. Gli sviluppatori si connettono da città e paesi diversi. I dispositivi nelle filiali sono dietro NAT e i provider applicano massicciamente CGNAT. La richiesta è un modello zero trust, porte aperte ridotte al minimo e configurazioni non fragili. Le VPN server classiche sono comode per accessi remoti standard, ma quando serve collegare decine o centinaia di nodi in una vera struttura P2P senza punti di rottura e con politiche dettagliate, vincono le mesh VPN.
In questo articolo analizziamo tre strumenti maturi per costruire reti mesh – Nebula, Tinc e Headscale. Scopriamo come funzionano, i loro punti di forza, dove partire con semplicità e come scegliere in base al vostro caso. Poi sette scenari dettagliati con istruzioni passo passo e risultati misurati. Infine un confronto con alternative come Tailscale, ZeroTier, WARP, WireGuard classico o OpenVPN e consigli precisi su quando optare per una mesh o un VPN server personale.
Recensione e confronto: architettura, punti di forza e limiti di Nebula, Tinc e Headscale
Nebula – leggero, veloce, con ACL dichiarative e crittografia affidabile
Nebula è nato in una grande azienda di prodotto come soluzione semplice per collegare infrastrutture in luoghi diversi senza IP pubblici. Ogni nodo riceve un certificato dal proprio centro di certificazione e tag – gruppi, hostname, etichette personalizzate. La scoperta dei nodi è gestita da Lighthouse – un catalogo leggero che non trasmette traffico dati. I nodi stabiliscono canali P2P diretti tramite NAT traversal. Le politiche di accesso sono descritte in modo dichiarativo, filtrando per tag e indirizzi. L’esperienza pratica mostra bassi overhead, funzionamento stabile dietro NAT complessi, avvio rapido e segmentazione flessibile senza complicazioni.
Tinc – la classica soluzione collaudata con full mesh e routing
Tinc esiste da molto tempo ed è apprezzato per stabilità e comportamento prevedibile. La rete si costruisce come mesh completa, ogni nodo può ritrasmettere traffico per altri, e i percorsi si propagano automaticamente. Supporta il livello 3 e persino il livello 2 dove serve L2 trasparente. Tinc si integra bene con gestori di sistema e repository, adatto quando si vuole rigore, compatibilità e un approccio conservativo. Se serve bridging, protocolli multimediali in L2 o applicazioni legacy, spesso Tinc è la soluzione più semplice.
Headscale – self-hosting del controllo per l’ecosistema Tailscale e WireGuard
Headscale è un server di gestione open source compatibile con i client dell’ecosistema Tailscale. I dati viaggiano su WireGuard, garantendo velocità e semplicità client, mentre la control plane è sotto il vostro controllo. Supporta namespace, chiavi di pre-autorizzazione, liste ACL, routing di subnet, funzionalità simili a MagicDNS e relay per i casi in cui il P2P attraverso NAT non funziona. È la scelta ideale se volete l’esperienza UX di Tailscale, ma con pieno controllo, anche in ambienti isolati.
Differenze chiave e matrice decisionale
- Avvio e gestione – Nebula è più facile per politiche e bootstrap, Headscale offre un’esperienza simile a Tailscale, Tinc è più manuale ma affidabile e versatile.
- Performance – Headscale primeggia grazie a WireGuard sul piano dati. Nebula ottiene ottimi risultati, specialmente su nodi con CPU modeste. Tinc è stabile, ma può richiedere ottimizzazione fine di MTU e routing.
- Modelli di sicurezza – Nebula usa autorizzazione tramite PKI proprietaria e tag, Headscale tramite server di controllo e ACL, Tinc con chiavi tradizionali e configurazioni sui nodi, con possibilità di pinning stretto dei vicini.
- NAT traversal e topologie – tutti e tre funzionano bene, ma Headscale grazie a meccanismi maturi cliente e relay spesso supera casi complessi, Nebula spicca per flessibilità nel signaling, Tinc vince in versatilità e ritrasmissione.
- Livello di rete – Tinc supporta L2 e L3, Nebula e Headscale si concentrano su L3, più semplice e sicuro in produzione quando non serve bridging rigido.
Ora passiamo alla pratica. Vediamo scenari concreti dove ciascuno strumento si esprime al meglio.
Scenario 1 – infrastruttura ibrida: connettere più cloud e uffici
Per chi e perché
Per aziende con risorse in più cloud e on-premises, oltre a filiali senza IP pubblici. L’obiettivo è uno spazio indirizzi unico e protetto, accesso stabile tra componenti, minima configurazione manuale e segmentazione semplice.
Come usare
Consigli: Headscale se serve throughput massimo tra VM potenti e facilità d’uso su laptop, Nebula per segmentazione dichiarativa e rapido setup, Tinc se ci sono app legacy o serve bridging L2 per protocolli di rilevamento automatico.
Procedura passo passo – esempio con Headscale
- Distribuite Headscale in una sottorete protetta. Attivate il DB, backup di configurazioni e stato.
- Configurate namespace per team di sviluppo e produzione. Create ACL affinché sviluppatori accedano a staging ma non alla produzione.
- Preparate chiavi di pre-autorizzazione per inclusione automatica di nodi CI e VM cloud.
- Installate client su VM cloud e uffici. Per segmenti con subnet locali annunciate le rotte subnet.
- Configurete un relay per filiali dietro NAT severi. Testate connessione P2P e fallback relay.
- Eseguite test di carico su 10-20 flussi, misurate throughput e latenza, ottimizzate MTU se serve.
Esempio concreto e risultati
In un caso di integrazione di due regioni europee e un ufficio russo, la latenza media è calata da 72 a 38 ms grazie a rotte P2P dirette. Il throughput tra nodi c6i.large ha raggiunto 1,9 Gbps su traffico WireGuard in Headscale. Ottimizzazioni MTU e rinuncia a crittografia HTTP interna hanno ridotto l’overhead CPU del 12–18%.
Trucchi e best practice
- Mantenete un’unica fonte di verità per spazio indirizzi e ACL – archivio SOPS più approccio GitOps per rollback facili.
- Namespace separati per ambiente e team riducono il blast radius in caso di errori ACL.
- Alla frontiera router-ufficio pensate a routing politico per far uscire traffico mesh prima della trasformazione NAT.
Scenario 2 – accesso sicuro per sviluppatori e CI-CD a servizi privati senza porte aperte
Per chi e perché
Per team prodotto che necessitano accesso diretto a Git privati, repository artifact, database staging, API Kubernetes, senza esposizione a internet o bastion host complessi.
Come usare
Nebula brilla grazie ad ACL dichiarative: etichettate sviluppatori e servizi e definite chiaramente chi può accedere a cosa. Headscale è attrattivo per UX client pronta all’uso e facile onboarding di laptop e smartphone.
Procedura passo passo – esempio con Nebula
- Distribuite Lighthouse e emettete certificato CA radice. Definite tag: dev, ops, ci, db, kube, git.
- Emettete certificati ai nodi con tag e IP necessari. Attivate rotazione chiavi periodica.
- Descrivete politiche: dev vede kube e git, ci artifact e staging db, ops tutto in emergenza.
- Installate agent su nodi Kubernetes master e host database e registri privati.
- Spostate accesso sviluppatori da VPN server al P2P via Nebula. Monitorate log ACL per errori e aggiustate tag.
Esempio e risultati
Per 35 sviluppatori, il tempo medio di connessione a Git privato è sceso da 4,8 a 1,2 secondi grazie a P2P diretto e DNS locali. Incidenti ACL sono scesi a zero con transizione da regole fragili per indirizzo a tag. La migrazione è durata 2 settimane, inclusi pilota e formazione.
Trucchi
- Testate sempre ACL a secco – deny di default e apertura progressiva delle rotte.
- Rotazione forzata di certificati ogni 90 giorni per disciplina e sicurezza.
- Mantenete elenco servizi in registro unico infrastruttura – Terraform outputs e generazione policy da template.
Scenario 3 – connettività inter-reti per emergenze e war room temporanei
Per chi e perché
Per team SRE e SecOps che necessitano rete prevedibile durante incidenti, quando il trasporto principale è sovraccarico o parzialmente isolato. Mesh temporanea per coinvolgere esperti e diagnostica senza esposizione internet.
Come usare
Tinc è utile come collante universale – ritrasmette facilmente tramite nodi disponibili, permette bridging L2 per vecchi strumenti diagnostici. Nebula offre ACL trasparenti e avvio rapido in isolamento.
Procedura passo passo – esempio con Tinc
- Preparate template config nodi per reti incidenti con nomi assegnati e scambio chiavi da repository sicuro.
- Durante incidente distribuite nodi su server e laptop accessibili, collegandoli su tutte le porte e protocolli disponibili.
- Abilitate bridging dove serve broadcast L2 per servizi monitoring.
- Eseguite diagnostica, dump, copiate log via P2P senza aprire nulla su internet.
Esempio e risultati
In incidente con perdita parziale della connettività esterna, in 14 minuti sono stati attivati 9 nodi Tinc tramite due data center, raccolti 2,3 GB di log e dump memoria da tre servizi critici. L’analisi causa è stata completata in un’ora anziché 3–4 ore come prima.
Trucchi
- Conservate config firmati e chiavi offline, cambiate master key regolarmente.
- Testate scenari ogni trimestre – dalla replica config a controllo velocità registrazione log remoti.
- MTU e frammentazione sotto stress spesso compromettono la rete – impostate valori MTU conservativi per reti temporanee.
Scenario 4 – LAN private per gaming, media server e automazione domestica senza port forwarding
Per chi e perché
Per laboratori casalinghi, piccole studio, team esports e appassionati. Scopo: giocare in LAN con persone dietro CGNAT, raccogliere librerie media in un unico spazio, connettere domotica e telecamere senza aprire porte esterne.
Come usare
Headscale offre UX client familiare e risultati rapidi su desktop e smartphone. Nebula è indicato se serve chiara segmentazione dispositivi per ruoli – media server e player, telecamere e NVR, device smart home.
Procedura passo passo – Headscale per club domestico
- Installate Headscale su mini server. Attivate namespace: home e studio per separare esperimenti da rete domestica.
- Generate chiavi pre-autorizzazione e collegate PC partecipanti, smartphone e media server.
- Attivate annuncio rotta subnet per NAS se deve essere accessibile a tutti membri.
- Impostate client con record DNS statici per nomi interni media server via meccanismi DNS interni client.
Esempio e risultati
Nel club di 12 membri si è giocato stabilmente a titoli con stack di rete esigente. Latenza media Mosca-San Pietroburgo su P2P era 10-16 ms, su relay 27-35 ms. Il media server ha erogato flussi fluidi da 80-110 Mbps per streaming 4K HEVC.
Trucchi
- Non attivate accesso libero totale – segmentate device per namespace e ACL.
- Per telecamere e smart home concedete accesso solo da controller domestici, non da tutti laptop client.
- Se nodi sono dietro router con NAT aggressivo, lasciate un relay di riserva vicino geograficamente ai partecipanti.
Scenario 5 – replica interregionale e backup via P2P senza canali dedicati
Per chi e perché
Per chi gestisce più sedi e vuole replicare dati senza canali interregionali costosi e senza gateway S3 pubblici. Obiettivo: traffico cifrato, rotte P2P, finestre temporali di copia limitate.
Come usare
Nebula è comoda per permessi dichiarativi e scheduling tramite tag. Headscale scala bene a decine di nodi con prestazioni WireGuard. Tinc serve se serve ritrasmettere via nodo intermedio con canale solido.
Procedura passo passo – Nebula più strumento replica
- Taggate nodi con ruolo backup-source, backup-target, relay. Limitate ACL affinché sorgenti vedano solo target e relay.
- Installate su sorgenti agent di replica – rclone, rsync over ssh o soluzioni backup dedicate.
- Programmate finestre replica tramite scheduler di sistema e limitate bandwidth per non impattare carico produzione.
- Impostate priorità rotte – P2P dirette prima, relay solo in caso di fallimento.
Esempio e risultati
Tra Francoforte e Singapore backup notturni di 420 GB sono stati completati in 52-58 minuti su canali P2P diretti, con fallback tramite nodo relay londinese in 68-74 minuti. Il carico CPU sulla sorgente è calato del 20% togliendo crittografia applicativa supplementare, lasciando solo quella sul tunnel.
Trucchi
- Monitorate MTU – per pacchetti grandi su tratte lunghe conviene valori cauti per evitare frammentazione.
- Distribuite finestre di replica tra regioni per non generare picchi simultanei globali.
- Aggiungete checksum e verifica integrità su destinazioni per evitare errori silenziosi.
Scenario 6 – manutenzione remota IoT e OT senza internet pubblico
Per chi e perché
Per integratori, aziende industriali e energetiche con controller, sensori, SCADA, per cui è necessario un accesso preciso per aggiornamenti, diagnostica e telemetria. Requisiti: finestre di accesso minime, logging azioni, no port forwarding.
Come usare
Tinc con supporto L2 è utile quando protocolli di autodiscovery sono importanti e difficili da passare su L3. Nebula funziona meglio quando serve distinguere accessi ingegneri e finestre di manutenzione tramite tag e ACL.
Procedura passo passo – Nebula con accesso a finestre temporali
- Descrivete tag per ingegneri e gruppi dispositivi per reparti e linee produttive. Impostate politiche con deny rigoroso di default.
- Implementate regole temporanee di accesso via automazione – Ansible o script che concedono permessi temporanei e poi li rimuovono.
- Loggate eventi ACL e sessioni ingegneri su SIEM, attivate alert su tentativi di accesso fuori finestra.
- Tramite canali P2P dedicati inviate telemetria allo storage centrale, limitando accesso laptop solo a finestre manutenzione.
Esempio e risultati
In produzione con tre sedi, le finestre manutenzione si sono ridotte del 30% grazie a connettività stabile e assenza di port forwarding complesso. Incidenti accesso non autorizzato sono scesi a zero con regole temporanee e reporting ACL rigorosi. La redditività è aumentata riducendo viaggi tecnici di 3-4 al mese.
Trucchi
- Le reti di stabilimento richiedono prevedibilità – assegnate IP in mesh e non affidatevi a DHCP dentro bridge L2 se non necessario.
- Disabilitate accesso fuori finestre anche se sembra scomodo – la disciplina ripaga in sicurezza.
- Salvate snapshot config dispositivi subito dopo manutenzione e archiviate via mesh in storage centrale.
Scenario 7 – laboratori inter-team e sandbox per esperimenti con Kubernetes e database
Per chi e perché
Per team RnD e piattaforma che devono allestire velocemente stand temporanei – app, mesh di servizi, nuove versioni database, bus dati – senza toccare rete di produzione e senza esporre all’esterno.
Come usare
Headscale è comodo per connettere facilmente laptop, cluster e dispositivi mobili come client. Si può creare sandbox, attivare naming tipo MagicDNS e poi rimuovere tutto senza tracce. Nebula offre ACL più dettagliate per stand complessi multi-team.
Procedura passo passo – Headscale per sandbox
- Create namespace separato sandbox, aggiungete account servizio e chiavi per attivazione automatica VM temporanee.
- Avviate cluster Kubernetes e database temporanei in regioni diverse, dichiarate rotte subnet per servizi interni.
- Attivate naming interno e distribuzione record interni per servizi app.
- Assemblate stand, fate test carico e profiling. Alla fine rimuovete chiavi d’autorizzazione e spegnete nodi.
Esempio e risultati
Per la nuova coda di pagamento, il team RnD ha montato uno stand con tre cluster e carichi misti in un giorno. Tra regioni la latenza P2P era 26-42 ms, le performance dello stand sono cresciute del 17% dopo ottimizzazione MTU e rimozione proxy inutili.
Trucchi
- Eliminate sempre chiavi e record dopo i test – residui in control-plane danneggiano sicurezza.
- Preparate template stand in IaC, inclusi connessione mesh e rotte subnet per autonomia ingegneri.
- Dashboard Grafana per latenza e throughput aiutano a identificare colli di bottiglia rapidamente.
Errori tipici in fase di implementazione e come evitarli
- Installare un solo Lighthouse o controller pensando che aumenti fault tolerance – tenete almeno due, meglio tre, in sedi indipendenti.
- Concedere a tutti accesso completo – iniziate da deny e aprite solo ciò che serve.
- Ignorare sincronizzazione orologi – disallineamento rompe handshake e validazione certificati. Attivate NTP affidabile.
- Dimenticare MTU e PMTU discovery – un parametro errato trasforma rete veloce in tubo lento misterioso. Testate e documentate.
- Mescolare routing esterno con mesh interna senza regole chiare – dedicate tabelle di rotta o politiche per evitare loop e asimmetria.
- Non controllare crescita ACL e tag – usate template e revisioni, altrimenti le politiche diventano spaghetti.
Integrazioni e combinazioni di strumenti
- IaC – Terraform e Ansible generano config nodi, certificati e ACL, registrano nodi in controller Headscale.
- Segreti – SOPS e vault cifrano chiavi private e token per onboarding automatico.
- Monitoraggio – Prometheus e Grafana per latenza, perdita pacchetti, throughput; alert su degrado P2P e fallback relay.
- CI-CD – auto-onboarding build agent con perimetri di accesso stretti ad artifact privati.
- Backup – relay di riserva, controller duplicati, stand hot con replica DB per Headscale.
Confronto con alternative e come scegliere l’approccio giusto
Tailscale e ZeroTier
Alternative gestite offrono start rapidissimo e UX eccellente, soprattutto su mobile. Però non sempre ideali se servono severi requisiti di self-hosting e controllo metadati, evitare dipendenze da servizi esterni o personalizzare in dettaglio la control plane. Headscale rimuove alcune limitazioni di Tailscale mantenendo i vantaggi client, Nebula e Tinc garantiscono controllo totale e indipendenza.
WireGuard site-to-site e OpenVPN
Ottimi per scenari classici one-to-one o a stella con filiali. Più semplici da gestire con topologie piccole, server prevedibile e gruppi client limitati. Ma più difficili da scalare a decine e centinaia di nodi con ACL user-friendly e P2P automatico tra tutti.
SD-WAN commerciale
Fornisce potenti strumenti di routing, QoS, ottimizzazione, ma è più costoso, richiede hardware e vendor. Mesh VPN copre la maggior parte delle necessità di applicazioni distribuite e DevOps a costi molto inferiori e senza dipendenza da hardware.
Quando è meglio un VPN server personale classico invece di mesh
Se serve accesso privato a internet da una location prevedibile, aggirare blocchi, privacy su reti pubbliche, IP dedicato per esigenze aziendali o pagamenti, è preferibile un VPN personale. In questo segmento consigliamo vpn.how: offrono VPN personali non condivisi con IP dedicati, supporto multi-protocollo – WireGuard, OpenVPN, IKEv2, L2TP, SSTP – per adattarsi a piattaforme e policy. Server in Mosca, San Pietroburgo, Amsterdam, Francoforte, Londra, New York, San Jose, Chicago, Singapore, Sydney, Madrid, Helsinki, Stoccolma, Varsavia, Copenhagen, Stavanger. Pagamenti comodi con carte russe (Tinkoff, Ozon), sistema SBP e criptovalute USDT o BTC. Tariffe da 490 ₽ al giorno e da 2490 ₽ mensili con sconti per periodi lunghi, avvio server in 5 minuti post-pagamento e politica no-logs. Non è alternativa alle mesh, ma mercato differente – scegliete in base al caso: per connettività P2P interna prendete Nebula, Tinc o Headscale, per uscita privata internet e IP pubblico prendete VPN personale da provider come vpn.how.
FAQ – risposte alle domande più frequenti in fase di implementazione
Si può fare senza IP pubblici su tutte le sedi?
Sì. Tutti e tre gli strumenti supportano NAT traversal e stabiliscono connessioni P2P. Però serve almeno un nodo di segnalazione e catalogo accessibile – Lighthouse o controller Headscale più relay per casi NAT complessi.
Supportano IPv6?
Sì, ma dipende dall’ambiente. Molti usano overlay su trasporto IPv4 e dentro assegnano indirizzi sia v4 che v6. Partite da v4 e aggiungete v6 quando routing e ACL sono pronti.
E multicast e protocolli L2?
Se serve vero L2 e multicast per autodiscovery di vecchi servizi, Tinc è più diretto. Nebula e Headscale sono orientati a L3 e soluzioni proxy o relay specializzati.
Come garantire alta disponibilità controller?
Più istanze in zone diverse, backup dello stato, monitoraggio latenza e errori, riavvii automatici, health check delle rotte. Per Headscale, replica DB e relay in regioni diverse.
Come scalare a centinaia di nodi?
Standardizzate onboarding con chiavi pre-autorizzate o PKI centralizzata, automatizzate emissione e rotazione, tenete inventario nodi. Template config e GitOps aiutano a far crescere rete in sicurezza e prevedibilità.
Performance client su laptop?
Con CPU moderne WireGuard su Headscale spesso supera centinaia di Mbps. Nebula mostra numeri comparabili, specialmente con MTU corretto. Tinc dipende da configurazione e traffico, ma in ufficio di solito il collo di bottiglia è la rete, non CPU.
Come gestire dispositivi mobili?
Headscale vince per clienti maturi. Per Nebula e Tinc pensate a un agente su gateway domestico o laptop che ritrasmette accesso a servizi se client diretto su smartphone non è pratico.
Come eseguire audit e logging?
Abilitate log connessioni, eventi ACL, esportate metriche su monitoraggio. Registrate a livello rete solo eventi tecnici, non dati business.
Si può migrare da OpenVPN a mesh gradualmente?
Sì. Partite con piccolo gruppo nodi, create rete mesh parallela, spostate parte traffico, verificate policy e performance, poi migrate servizi da OpenVPN a mesh progressivamente. Tenete ancora percorso inverso finché migrazione completa.
Come proteggere chiavi e certificati?
Conservateli in vault sicuri, usate SOPS e token hardware per root trust, rispettate policy rotazione. Attivate MFA nei sistemi di accesso e loggate tutte le modifiche.
Conclusioni – come scegliere e da dove partire
Se cercate il massimo controllo e politiche chiare e semplici, iniziate con Nebula. Se serve approccio classico, routing L2 e ritrasmissioni flessibili, provate Tinc. Se apprezzate UX ecosistema Tailscale ma volete self-hosting e performance WireGuard, scegliete Headscale. Per infrastruttura ibrida, accesso sviluppatori a servizi privati, reti di emergenza, laboratori domestici, replica e OT tutti e tre offrono soluzioni mature. Pensate a obiettivi e limiti: livello rete occorrente, scala, requisiti self-hosting, audit e comodità client.
Piano di partenza in una settimana: giorno 1 – scegliere strumento in base a criteri e creare pilota con tre nodi; giorni 2-3 – descrivere spazio indirizzi, tag e ACL, preparare onboarding; giorno 4 – integrare monitoraggio e backup controller; giorno 5 – fare test carico, fissare MTU e profili; giorno 6 – scrivere documentazione e template IaC; giorno 7 – iniziare migrazione graduale servizi o onboarding team. Dopo un mese avrete piattaforma riproducibile di connettività nodi, fault tolerant, scalabile e sotto controllo completo.
La chiave: scegliete strumenti per il compito, non in generale. Mesh VPN copre P2P e zero trust internamente ai sistemi distribuiti. VPN server classico serve privacy e IP bianco per uscita internet. Se il problema è ben definito, la soluzione diventa chiara e l’implementazione più tranquilla.