#

yggdrasil

(1 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