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
, 30303
y ) 30301:30301
o 30301:30301/udp
fuera de él, si ejecuto telnet <VM-BOOTNODE-IP> 30301
obtengo una telnet: Unable to connect to remote host: Connection refused
respuesta. Si creo el bootnode NO en un contenedor docker sudo netstat -tulpn | grep 30301
responde con
udp6 0 0 :::30301 :::* */bootnode
Sin embargo, cuando creo en el mapeo de contenedores, los puertos sudo netstat -tulpn | grep 30301
responden 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 networkId
y GEN_NONCE
en 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í .
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> 30301
lugar.