RFC: Propuesta de red
pienso en el siguiente modelo primigenio de red, lo pongo acá para que discutamos y consensuemos:
-
nodos públicos: son los nodos que con criterio de confianza son capaces de recibir y habilitar llaves de nodos privados (con rap-inbox o manualmente), saben todas las ips, usan el parche de tinc para no filtrar ips de nodos privados y se conectan entre sí para hacer el "backbone" de la rap.
creo que esto es algo que podemos gestionar con servidores autonomos de compas. el comando
./rap init
se conecta automáticamente a estos. esto quiere decir que sus archivos de host están disponible públicamente (se pueden leer desde internet) -
nodos privados: son nodos personales que están probando la red y todavía no han consentido a que se exponga su direccion ip de internet hacia el resto de la red (tienen indirectdata habilitado). solo pueden enviar y recibir datos a traves de nodos publicos.
-
nodos semipublicos: son nodos que antes eran personales pero se han quitado el indirectdata y configurado su red para poder recibir conexiones directas (abriendo puertos). otros nodos pueden ponerlos en sus connectto directos pero al abrir puertos y quitar indirectdata la misma red informa donde estan y se arman conexiones directas. sus archivos de hosts no necesariamente están anunciados porque quizas no tienen el ancho de banda simétrico para poder hacer de intermediarios entre nodos privados, pero no está cancelado. quizás no quieran ser parte del backbone, con lo que el rap init no los recomienda directamente, pero están disponibles para poder recibir conexiones directas desde otros nodos.
acá podrían participar las experiencias de servidorxs feministas y locales usando rpi y computadoras huerfanas
la idea sería ir moviendo la red hacia que la mayoría de los nodos sean privados o semi públicos y eventualmente poder dar de baja el backbone. esto lo mediríamos graficando regularmente la red #2 y midiendo la circulación de datos dentro del backbone.
para poder lograr eso, hay que lograr que todos los nodos y no solo los publicos:
-
tener un repositorio actualizado de archivos de hosts que se mantengan al día. todos los nodos aceptan conexiones de todos los demas (esto es, el repositorio de llaves se coloca en /etc/tinc/rap/hosts para que tincd los pueda encontrar), para que el paso de habilitar a alguien no tenga que ser nodo por nodo y nunca suceda, sino que sea un consenso de la red entera.
-
poder abrir los puertos de tinc (manualmente configurando los routers, o con natpmp/upnp #8 )
-
tener una dirección pública (un nombre de dominio apuntando a la dirección pública, puede ser con dns dinamico). había pensado en una forma de evitar esto, que voy a documentar en otro issue.
no necesariamente hay que publicar en internet todos los archivos de hosts de los nodos, con uno solo que haga de bujía (!) ya es posible hacer la primera conexión a la red y a través de esa poner conectarse a todos los demás nodos.