Detección de nodos: nodo de arranque inalcanzable en una red distribuida privada

Estoy tratando de crear una red distribuida privada utilizando contenedores Docker en máquinas virtuales que ejecutan ubuntu.

Cuando corro:

bootnode --genkey $KEY_FILE --writeaddress
bootnode --nodekey $KEY_FILE --addr :30301 --nat extip:$MY_IP

ya sea en el contenedor de la ventana acoplable (exponiendo puertos 8454, 30303y ) 30301:30301o 30301:30301/udpfuera de él, si ejecuto telnet <VM-BOOTNODE-IP> 30301obtengo una telnet: Unable to connect to remote host: Connection refusedrespuesta. Si creo el bootnode NO en un contenedor docker sudo netstat -tulpn | grep 30301responde con

udp6       0      0 :::30301          :::*                      */bootnode   

Sin embargo, cuando creo en el mapeo de contenedores, los puertos sudo netstat -tulpn | grep 30301responden con

tcp6       0      0 :::30301          :::*          LISTEN      */docker-proxy 
udp6       0      0 :::30301          :::*                      */docker-proxy

De cualquier manera, obtengo el mismo error "No se puede conectar al host remoto" con telnet. Creo que es porque la dirección del bootnode es inalcanzable que los otros nodos no pueden ser descubiertos.

Para que quede claro: estoy usando el mismo archivo de génesis con una máquina virtual en particular networkIdy GEN_NONCEen todas. Mis nodos están usando --nodiscover(puerto de descubrimiento = 0) y están escuchando en 30303. El uso del nivel detallado 9 en el contenedor de bootnode no muestra ping/pong como se sugiere aquí .

Respuestas (1)

Bueno, aparentemente la razón por la que se rechaza la conexión es que " 'Conexión rechazada' está bien para el nodo de arranque de Go. [ya] que no acepta conexiones TCP ", como sugiere fjl en el número 380 de go-ethereum

Discovery utiliza UDP como protocolo. Si desea probar si funciona correctamente, utilícelo en su netcat -u -z -v <PUB-IP> 30301lugar.