mirrors/docs/technical/specs/resolucion-dnslink.rst
Rénich Bon Ćirić de27d6f65e
refactor(structure): consolidate operator tools and configs into nodo/ and clean mirror root
- Move bin/ and config/ (etc/, systemd/) into nodo/ for clean mirror encapsulation
- Provide root symlinks bin and config pointing to nodo/ for CLI convenience
- Update script headers across all 15 bash utilities with robust REPO_ROOT resolution
- Clean raw developer artifacts (README.rst, logo.svg, guardianes.json) from IPFS root
- Update mirror root tree diagrams and documentation references to reflect clean structure
- Point Documentation URLs and RST source references to README.html and GitLab repo

Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
Co-authored-by: Antigravity <antigravity@google.com>
2026-10-09 16:04:39 -06:00

3.3 KiB

Resolución Inmutable con DNSLink

Identificador Técnico: [TECH-003]

Fundamento

El direccionamiento directo por CID (ejemplo: /ipfs/bafy...) es inmutable; cualquier cambio en un paquete genera un nuevo CID raíz. Por su parte, el Sistema de Nombres Interplanetario tradicional (IPNS) basado en DHT experimenta una latencia de resolución prohibitiva para las consultas rápidas de metadatos de DNF.

Para solventar esta limitación, el proyecto utiliza DNSLink. DNSLink asocia un registro TXT en el sistema de nombres de dominio convencional con el CID raíz activo de IPFS.

Topología de Registros DNS

En los servidores de nombres autoritativos para el dominio mx-os.mx, se definen los siguientes registros:

; Registro raíz del portal de espejos
_dnslink.mirrors.mx-os.mx.      300 IN TXT "dnslink=/ipfs/bafyrei..."

; Registros complementarios para pasarelas públicas
_dnslink.ipfs.mx-os.mx.         300 IN TXT "dnslink=/ipfs/bafyrei..."
_dnslink.gateway.mx-os.mx.      300 IN TXT "dnslink=/ipfs/bafyrei..."

; Subdominios dedicados opcionales para granularidad independiente
_dnslink.fedora.mirrors.mx-os.mx. 300 IN TXT "dnslink=/ipfs/bafyfed..."
_dnslink.centos.mirrors.mx-os.mx. 300 IN TXT "dnslink=/ipfs/bafycen..."

Mecánica de Resolución en Kubo

  1. Un cliente solicita un recurso bajo la ruta /ipns/mirrors.mx-os.mx/fedora/iso o accede directamente a https://ipfs.mx-os.mx/.

  2. Kubo extrae el nombre de dominio y consulta el registro TXT de _dnslink.mirrors.mx-os.mx (o _dnslink.ipfs.mx-os.mx). Por defecto, Kubo utiliza los resolutores del sistema operativo (que a su vez dependen de servidores DNS locales o de enrutadores LAN con cachés independientes).

  3. Para eliminar el desfase de caché y garantizar resolución inmediata tras cada publicación, se configura un resolvedor DNS sobre HTTPS (DoH) directo en la configuración de Kubo para el dominio mx-os.mx. Es indispensable incluir el punto final (FQDN estricto):

    ipfs config --json DNS.Resolvers '{"mx-os.mx.": "https://cloudflare-dns.com/dns-query", ".": "auto"}'
  4. El registro TXT devuelve el prefijo canónico dnslink=/ipfs/<CID_RAÍZ>.

  5. Kubo reemplaza internamente la ruta por /ipfs/<CID_RAÍZ>/fedora/iso y procede a recuperar los bloques vía Bitswap o desde la memoria local.

  6. El tiempo de vida (TTL) del registro se fija en 300 segundos (5 minutos) en la zona autoritativa gestionada mediante el script de automatización nodo/bin/mxos-dnslink-update.bash.

Para preservar la resiliencia en escenarios de fallas de DNS, censura o entornos desconectados de internet, el catálogo mantiene dos mecanismos equivalentes de direccionamiento:

  1. Resolución nominal con DNSLink: Ruta amigable /ipns/mirrors.mx-os.mx respaldada por el registro TXT en Cloudflare.

  2. Resolución criptográfica autónoma con IPNS: Ruta inmutable e independiente de DNS bajo /ipns/k51qzi5uqu5di6ed3qtnwrdlvpmfil07ib6qfzb1t259nux49jenn8my4dtg0v, firmada con la llave Ed25519 de Fundación MxOS y publicada periódicamente en la DHT de libp2p.