#

dns

(9 articles)

Meshname como uma alternativa permanente e eficiente em termos de energia ao DNS

![image](https://image.nostr.build/9a596f5f42ae610894940f411fc641ca00c37edc764d5e50cf9a26b503407a3c.jpg) O **Meshname** é um sistema de nomenclatura universal projetado para redes mesh baseadas em IPv6, como a **Yggdrasil** e a CJDNS. Ele funciona como uma alternativa descentralizada, permanente e leve ao DNS tradicional, permitindo que usuários resolvam domínios sem depender de autoridades centrais ou de sistemas baseados em blockchain. Abaixo estão os detalhes fundamentais do seu funcionamento: ### 1. Filosofia e Diferenciais Diferente de sistemas como o Alfis, o Meshname não utiliza blockchain, o que elimina a necessidade de mineração para proloongação de domínios ou o alto consumo de CPU e tráfego P2P para sincronização. Ele se assemelha em conceito aos serviços `.onion` da rede Tor ou aos túneis `.b32.i2p` da rede I2P, focando na conversão direta entre endereços e nomes. ### 2. Formatos de Protocolo O Meshname opera através de duas implementações distintas: * **`.meship`**: Realiza uma conversão matemática direta de um endereço IPv6 para o formato binário e depois para **base32**. Para que isso funcione, o usuário só precisa de um servidor local `meshnamed` rodando para realizar a tradução reversa e permitir a navegação. Por exemplo, um endereço IP bruto da rede Yggdrasil pode ser convertido em um domínio como `aibgruhq2w4i2hi2kvpc62zrja.meship`. * **`.meshname`**: Este formato é mais avançado e exige que o servidor `meshnamed` esteja presente no nó de destino. Ele é utilizado quando há necessidade de registros adicionais (como registros NS para servidores XMPP), sendo que esses dados são armazenados no servidor em formato **JSON**. ### 3. Uso Prático e Implementação Como os nomes Meshname são derivados diretamente de endereços criptográficos, eles costumam ser longas sequências de caracteres (descritos pelos desenvolvedores como "feios"), mas garantem que o nome seja único e intrinsecamente ligado à identidade do nó. * **Software:** O servidor original foi escrito em **Go**, mas também possui implementações em **C++** e extensões em **Ruby**. * **Comandos:** Um usuário pode descobrir o domínio correspondente a qualquer IP através do comando `meshnamed -getname <endereço_ip>`. * **Integração:** O sistema pode ser configurado para trabalhar em conjunto com o `dnsmasq` ou o `systemd-resolved` no Linux, permitindo que o navegador resolva domínios `.meship` ou `.meshname` automaticamente. Em resumo, o Meshname converte a complexidade dos endereços IPv6 de redes mesh em nomes resolvíveis localmente, priorizando a **estabilidade e a economia de recursos** sobre a legibilidade humana dos domínios. ## Qual a diferença entre meship e meshname A diferença fundamental entre os nomes **.meship** e **.meshname** reside na forma como o endereço é resolvido e nos requisitos técnicos de onde o software servidor deve estar rodando. Ambos fazem parte do sistema **Meshname**, que converte endereços IPv6 de redes mesh (como Yggdrasil) em domínios resolvíveis. Abaixo estão as distinções detalhadas: ### 1. Nomes .meship Este formato é uma conversão matemática direta do endereço IP. * **Funcionamento:** O endereço IPv6 é convertido para um formato binário e depois codificado em **base32**. Por exemplo, um IP específico pode se tornar algo como `aibgruhq2w4i2hi2kvpc62zrja.meship`. * **Requisito de Software:** Exige apenas que o usuário tenha o servidor **`meshnamed` rodando localmente** (como um *stub resolver*) para realizar a tradução inversa e permitir que o navegador encontre o site. * **Uso:** É ideal para navegação simples onde o objetivo é apenas substituir o uso do IP bruto por um nome fixo. ### 2. Nomes .meshname Este formato é mais avançado e funciona de forma semelhante ao DNS tradicional, permitindo registros de dados. * **Funcionamento:** Permite a inclusão de informações adicionais além do simples mapeamento de IP. Os registros são armazenados no servidor em formato **JSON**. * **Requisito de Software:** Diferente do `.meship`, o uso de `.meshname` **exige que o servidor `meshnamed` esteja presente no nó de destino** (o servidor que hospeda o site ou serviço). * **Recursos Adicionais:** Suporta tipos de registros extras, como registros **NS (Name Server)**, que são necessários para configurar serviços mais complexos, como servidores **XMPP**. ### Resumo Comparativo | Característica | .meship | .meshname | | :--- | :--- | :--- | | **Base do nome** | Conversão direta (IP -> Base32) | Registros definidos no servidor | | **Instalação local** | Necessária (para resolução) | Necessária (para resolução) | | **Instalação no destino** | Não necessária | **Obrigatória** | | **Suporte a registros extras** | Não (apenas mapeamento de IP) | Sim (ex: registros NS para XMPP) | | **Formato de armazenamento** | Matemático/Algorítmico | Arquivos JSON no destino | ## Instalação ### Compilação ```bash git clone https://github.com/zhoreeq/meshname.git cd meshname make sudo install meshnamed /usr/local/bin ``` ### Systemd ```ini /etc/systemd/system/meshnamed.service [Unit] Description=Distributed naming system for IPv6 mesh networks Wants=network.target After=network.target [Service] User=nobody Group=nogroup ProtectHome=true ProtectSystem=true SyslogIdentifier=meshnamed ExecStart=/usr/local/bin/meshnamed -listenaddr [::1]:53535 Restart=always TimeoutStopSec=5 [Install] WantedBy=multi-user.target ``` - https://github.com/zhoreeq/meshname/blob/master/meshnamed.service ### Configurando o DNS Escolha uma das opções abaixo, DNS Mask ou Resolved #### Resolved ```ini /etc/systemd/resolved.conf [Resolve] DNS=[::1]:53535 Domains=~meshname ~meship ``` ```bash sudo systemctl restart systemd-resolved ``` #### DNS Mask (Opcional ao Resolved) ```ini /etc/dnsmasq.conf port=53 domain-needed bogus-priv server=/meshname/::1#53535 server=8.8.8.8 ``` - https://github.com/zhoreeq/meshname/blob/master/USAGE.md#configure-dnsmasq-as-a-primary-dns-resolver-with-meshname-support ### Uso Você pode obter o domínio de qualquer endereço IP usando o comando: ```bash $ meshnamed -getname 202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148 aibgruhq2w4i2hi2kvpc62zrja ``` Assim, com um servidor local ativo meshnamed, em vez de: http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148] Você pode acessar o site em: http://aibgruhq2w4i2hi2kvpc62zrja.meship

Services without DNS: an identity-first model using Nostr - Now with punch-able Proof of Concept

![image](https://image.nostr.build/75966e88f99debffe0bd09a67eddf60caa94ce58b4654f88097a810f7d08c60d.png) ## Services without DNS: an identity-first model using NCC This project demonstrates a working proof of concept for running and discovering services without relying on DNS. Instead of names and registrars, services are anchored to cryptographic identities and published over Nostr using signed, immutable records. The result is a system where ownership, reachability, and trust are decoupled, verifiable, and client-resolved. DNS becomes optional, not foundational. > *This work is a proof of concept and reference implementation. The specifications, libraries, and sidecar are under active development and should not yet be considered production-hardened. The goal is to validate the model, explore client and relay behaviour, and provide a concrete basis for further review and iteration.* Although this project is demonstrated using Nostr relays, the model is **service-agnostic**. NCC-02 and NCC-05 apply to any networked service, including APIs, web services, media endpoints, **and full web applications**. Relays provide the discovery and distribution backbone. The service itself does not need to be a relay, or even Nostr-aware, to participate. This includes standard web apps. A web application can be discovered, resolved, and reached via NCC records, with clients resolving identity and endpoints independently of DNS. --- ### The components #### NCC-02 – Identity-bound service ownership NCC-02 defines how a Nostr identity asserts ownership of a service. An NCC-02 record is a signed Nostr event that binds: * a service identifier using the `d` tag, * to a controlling npub, * with optional descriptive metadata. This record answers a single question: **who owns this service?** Because the event is signed by the service key, ownership is cryptographically verifiable. Any client can confirm that the service belongs to that identity without relying on DNS, registries, or central authorities. Key properties: * Services exist as identities, not hostnames * Only the private key holder can update or revoke the record * Multiple services can exist under one identity, distinguished by `d` * Updates are expressed as new signed events, not mutable records NCC-02 does not describe where a service runs or how to reach it. It is purely the ownership anchor. --- #### Service record attestations Service record attestations extend NCC-02 by allowing **other identities** to make signed statements *about* a service, without changing ownership. An attestation is a separate Nostr event that references an NCC-02 service record and asserts some claim about it. Critically: * The attester does not control the service * The attestation does not modify or replace the NCC-02 record * The claim stands on the reputation of the signer Ownership remains singular. Claims about the service can be plural. Attestations are intentionally generic and client-interpreted. They can represent: * operational responsibility * observed availability * validation or compliance checks * authorisation assertions The NCC system does not interpret or enforce these claims. Clients decide: * which attesters they trust * how many attestations matter * how to handle conflicting or missing attestations Attestations provide **evidence**, not authority. They replace central trust anchors with explicit, signed statements evaluated client-side. --- #### NCC-05 – Cryptographic location resolution NCC-05 defines how a service publishes **where it can be reached**, independently of DNS. An NCC-05 record is associated with an NCC-02 service and contains one or more **locators**, each describing a concrete endpoint: * IPv4 * IPv6 * Tor onion services Locators may be public or encrypted using NIP-44, allowing private endpoints to be published safely. Key properties: * Endpoints are cryptographically bound to the service identity * Multiple locators can coexist in parallel * Endpoints can rotate without changing identity * Clients resolve locations by following identities, not names NCC-05 does not proxy traffic, establish tunnels, or provide anonymity by itself. It is strictly a location description and resolution mechanism. --- ### Potential service patterns NCC-05 enables a range of service models beyond simple dynamic IP resolution: * **Private and invite-only services** Encrypted locators allow endpoints to be shared only with authorised pubkeys. * **Paid or subscription services** Access to locators can be gated behind one-off payments or ongoing zap-based subscriptions, with npubs removed from records or endpoints rotated as needed for easy user management. * **Ephemeral services** Short-lived APIs, temporary collaboration endpoints, or time-boxed access using tight TTLs. * **Peer-to-peer rendezvous** Two peers discover each other’s endpoints without public signalling, registrars, or coordination servers. * **Agent and automation backchannels** Bots or agents briefly exposing private control or callback endpoints. * **Web apps without DNS** Standard web applications reachable via IP or onion, discovered and resolved through identity-bound records instead of hostnames. * **Onion-only and censorship-resistant services** Services that never publish a public endpoint and rely entirely on private resolution. * **Infrastructure mobility and failover** Moving services between hosts or networks, or publishing multiple locators with deterministic priority. Relays act only as the distribution backbone. The services themselves can be arbitrary protocols and do not need to be Nostr-aware. --- ![image](https://image.nostr.build/c5e8bff6098c3911966e026e5433512101bf3aae68075c9cb917a029782bd7e3.png) #### NCC-06 – Sidecar and operational control plane NCC-06 operationalises NCC-02 and NCC-05. The sidecar is a local daemon that: * monitors services across IPv4, IPv6, and Tor * detects meaningful changes in endpoints, certificates, or metadata * publishes updated NCC-02 and NCC-05 records when required * sends encrypted admin notifications using NIP-44 * supports secure remote administration via NIP-46 The sidecar does **not** forward traffic and is **not** a proxy. It acts as a publisher, monitor, and control plane that keeps service records accurate and current. Because service identity is decoupled from network location, the sidecar enables rapid **endpoint and metadata rotation** under a stable identity. Services can move hosts, rotate IPs or onion addresses, update TLS fingerprints, or change publication relays and have the new state published within minutes. Changing the service’s npub creates a new identity and is treated as a distinct service. ![image](https://image.nostr.build/d793df163b2112a9576675909fe67c59ad9fded025f28a4ed1699fa3b1d18ccc.png) --- ### The client’s role This model only works because the client is an active participant rather than a passive resolver. The reference client shows how a client discovers NCC-02 service records, verifies ownership, and then resolves NCC-05 locator records to determine where a service can actually be reached. When locators are private, the client handles decryption using NIP-44 and decides which endpoints it is authorised to see. The client is also responsible for correlating service records, locator records, and any attestations into a single, coherent view of a service. Trust is not implicit. Each client applies its own policy about which attestations to accept, which identities to trust, and when to fail closed. Endpoint selection is likewise a client decision. The client chooses between multiple locators deterministically, respecting priority, expiry, and freshness, and automatically follows changes as new records are published. When endpoints rotate or infrastructure moves, the client converges on the new state without manual reconfiguration. Connections are made directly to the resolved service endpoints. Where required, the client can route traffic to onion services using a local bridge, allowing standard web applications and browsers to participate without special network configuration. In this architecture, relays act purely as the distribution layer and the sidecar keeps service records accurate over time. The client is where meaning is enforced. What to trust, where to connect, and how to react to change are all resolved locally, without any global authority. ![image](https://image.nostr.build/7ab4475701d776d2dc1648dc93935d0ae469af7129929f5172b2f2f2f87c766e.png) --- ### How it fits together * **NCC-02** answers: Who owns this service? * **Attestations** answer: What do others claim about it? * **NCC-05** answers: Where can it be reached? * **NCC-06** keeps all of the above accurate over time All components use: * immutable, signed Nostr events * client-side resolution * no DNS, PKI, or naming authorities --- ### Why this matters DNS-based service discovery couples identity, location, and trust into a brittle hierarchy. NCC separates these concerns: * identity is cryptographic * location is declarative and rotatable * trust is explicit and plural * resolution is client-driven This makes services more portable, harder to censor, easier to migrate, and independently verifiable. DNS becomes optional, not foundational. --- ### Code and references * Proof-of-concept client [https://github.com/imattau/ncc-client](https://github.com/imattau/ncc-client) * NCC-06 sidecar and library [https://github.com/imattau/ncc-06](https://github.com/imattau/ncc-06) * NCC-02 spec and library [https://github.com/imattau/ncc-02](https://github.com/imattau/ncc-02) * NCC-05 spec and library [https://github.com/imattau/ncc-05](https://github.com/imattau/ncc-05) NPM Libraries used: `ncc-02-js`, `ncc-05-js` #nostr #builders #privacy #p2p #tor #dns #decentralization #nostrdevs #ncc #npm #js