Hola,
Ahora mismo no hay muchos enlaces físicos dentro LaOtraRed, y mientras los miembros que mantenemos un nodo LOR vayamos conectándonos por Wi-Fi, estamos usando una VPN para estar en contacto, usar servicios y mantener una tabla de enrutamiento completa. En la actualidad son 4 miembros dentro el VPN: Mi nodo en Alto Sopocachi, el nodo Chersky de @strysg, el nodo r00thouse y el servidor Galileo, del Hacklab.
Tenemos planes para Meshnet: esperamos que más gente (en La Paz o quizás afuera) pueda unirse a LaOtraRed, y necesitamos arreglar todos los detalles.
El nombre en código del sistema VPN actual es Meshnet, utiliza el protocolo VPN de tinc, y dentro el túnel los nodos ejecutan sesiones Babel.
Ventajas actuales:
- Puede agujerear NATs
- Es un protocolo 100% mesh: si A, B, C se conectan inicialmente a Z, nodos no directos como A y B pueden hablar directamente.
- Permite cifrado y verificación hash de los paquetes que circulan dentro la VPN.
- El protocolo provee una red de capa 2, asi que protocolos como babeld, EIGRP y etc. pueden funcionar.
Desventajas
- tinc funciona en el espacio de usuario, y utiliza tun/tap para comunicarse con el kernel. Eso es muy ineficiente y lastra el rendimiento dentro el túnel, además de utilizar mucho CPU. Los efectos son aún más notorios cuando el software se ejecuta en routers.
- Al igual que en LOR via Wi-Fi, babeld no provee ninguna medida de seguridad ante una mala configuración accidental, o ataques muy básicos (suplantación o anuncio de rutas sin asignar). Antes un atacante necesita acercarse a un router y saber ciertas claves para atacar LOR, ahora podría hacerlo sin salir de su cuarto.
- La versión 1.0 de tinc (super estable) tiene algunos problemas de seguridad propios del diseño (los creadores, en ese entonces hicieron sus propios métodos caseros de autenticación y negociación). La versión 1.1 (beta) mejora eso, pero tiene algunas características que lo hacen negativo para LOR (como forzar AES-256 y SHA256, en routers eso es catastrófico)
Recientemente he estado probando Wireguard, y tiene las siguientes ventajas:
- La implementación principal es un módulo de kernel, y es muy eficiente. En mis pruebas, llega a 8192Kbps usando 35% de CPU de un router Atheros a 400MHz. Tinc solo llega a 6900Kbps al 100% de CPU en el mismo router.
- Utiliza protocolos y estándares modernos, que van muy bien en sistemas embebidos.
- La configuración es sencilla.
- Wireguard te permite asociar un a clave pública a direcciones IPv4 e IPv6: no es posible suplantar direcciones dentro.
- La red es de capa 3 – La configuración se simplifica, y no es necesario preocuparse de broadcast o algo así.
Desventajas:
- La red de capa 3 no permite IPv6 multicast – es decir, babeld no funcionará. Quizás con anuncios unicast, pero eso le quitaría ventajas.
- No es 100% mesh: si A,B,C están conectados a X, los paquetes de A a C pasarán por X.
- Wireguard es sólo-UDP. Líneas de Internet desde red móvil (4G) o ISPs como Tigo (HFC) podrían tener mala conexión a Meshnet, o quizas ni se puedan unir.
- Si usamos otro protocolo, entonces no podríamos tener roaming completo entre Meshnet y LOR. Es decir, un nodo Meshnet que se conecta a LOR físicamente, requeriría configuración adicional.
En la actualidad, no sabemos qué camino tomar. También acá se ha filtrado algo de la discusión sobre el routing en LOR (que quizás merezca otro hilo).