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

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