Cómo hacer que dos nodos geth completos se comuniquen a través del túnel ssh

Tengo una VPN que separa dos nodos, uno que puede acceder a Internet en general y otro que no. Puedo VPN desde el nodo de acceso a Internet (aquí llamado nodoA) a través de un servidor intermediario (aquí llamado nodoB) al nodoC en el que me gustaría ejecutar otro nodo completo geth.

Actualmente puedo hacer cosas como el reenvío de VNC ejecutando un comando como:

ssh -v -N -L 5900:nodoC:5900 usuario@nodoB

Por lo que entiendo, esto se conecta desde el nodo A al nodo B y luego configura un relé entre 5900 en el nodo A dirigido al 5900 del nodo C, de modo que cuando ejecuto vnc en el nodo A y lo dirijo a localhost: 5900, obtengo una conexión.

¿Qué debo hacer para que nodeC pueda ejecutar un nodo geth que se comunique con el nodo completo operativo y en ejecución de nodeA?

Gracias.

Respuestas (2)

No tengo una solución exacta para SSH, pero hay una solución alternativa a su problema que me gustaría compartir con usted.

Nivel Cero

ZeroTier ofrece capacidades de VPN, SDN y SD-WAN con un solo sistema. Conecte en red casi cualquier tipo de dispositivo o aplicación como si todo el planeta fuera una sola región de nube.

Puede crear una SDN (red definida por software) e incluir todos sus hosts en ella. Compartirán la misma subred. Lo he hecho antes y funcionó bien.

Es una buena posibilidad, pero el problema es que el nodeC no puede hablar con Internet en general, lo que significa que no habrá acceso a los nodos raíz de nivel cero, lo que me deja donde empecé, lamentablemente.

El puerto predeterminado utilizado por geth para intercomunicarse entre nodos es 30303. Una vez que haya establecido el túnel usando ssh entre los nodos, debe informar a los nodos entre sí. Consulte la documentación en http://ethdocs.org/en/latest/network/connecting-to-the-network.html sobre cómo conectar nodos.

Los detalles del túnel requieren aclaración. Por ejemplo, no puedo tunelizar 30303:localhost:30303 porque 30303 ya está vinculado por el nodo geth que se ejecuta en el nodoA. del mismo modo, nodeC ni siquiera puede llegar a ningún lado para hablar con un nodo de arranque para que arranque la cadena de bloques.
Debe consultar la documentación de ssh para obtener la sintaxis correcta, pero debe asignar el puerto remoto 30303 a un puerto local diferente. Otra opción es utilizar diferentes puertos para cada nodo.
desafortunadamente, claramente no es tan simple, he intentado realizar un reenvío ssh para el puerto 30303 pero no logra nada. Parece que debo ejecutar mi propio nodo de arranque y apuntar el nodoC al nodoA, pero no puede alcanzarlo.
¿Intentó con -Ren lugar de -Len la línea de comando ssh?