Apretón de manos de red privada con grupos externos

Estoy tratando de ejecutar una red privada y lo hago al proporcionar un nodo de arranque para todos mis nodos. De vez en cuando noto en mis nodos que recibiré compañeros de fuera de la red. Tras una inspección más detallada admin.peers, me doy cuenta de que son apretones de manos con piscinas públicas. No entiendo cómo ocurre esto, ya que anulé los nodos de arranque predeterminados al proporcionar el --bootnodeindicador para que mis nodos no puedan encontrar otros nodos fuera de mi red con los que comunicarse.

¿Todos sus nodos privados tienen el mismo archivo networkid y genesis?
Sí, todos tienen la misma génesis y todos se conectan al mismo nodo de arranque. Todos se conectan entre sí muy bien. Sin embargo, a veces veo que el número de pares aumenta en 1 o 2 más que el máximo que debería tener un nodo. Al inspeccionar 'admin.peers', veo que se está produciendo un apretón de manos con un nodo que no está en mi red.
Me pregunto si esto es realmente algo malo... El protocols: {eth: "handshake"}protocolo es "apretón de manos" y normalmente no duran mucho. Mientras que los pares reales tienen más detalles en élprotocols: { eth: { difficulty: X, genesis: "0xX", head: "0xX", network: X } }

Respuestas (3)

Tengo un problema similar. No estoy anulando el nodo de arranque y, por lo tanto, no estoy usando la --nodiscoverbandera. Sin embargo, tengo 2 nodos: comparten el mismo archivo de génesis y la identificación de red, se ejecutan en 2 máquinas virtuales diferentes, pero no se reconocen entre sí como pares. El protocolsnodo de admin.nodeInfola consola geth es el mismo en ambos nodos:

protocols: {
      eth: {
        difficulty: X,
        genesis: "0xX",
        head: "0xX",
        network: X
      }
}

Sin embargo, aunque no se reconocen entre sí, dependiendo de cuándo corro admin.peersnormalmente obtengo

> admin.peers
[]

pero a veces aparece un nuevo nodo aleatorio:

[{
    caps: ["eth/62", "eth/63", "par/1", "par/2"],
    id: "X",
    name: "Parity/v1.5.11-stable-f067f12-20170314/x86_64-linux-gnu/rustc1.15.1",
    network: {
      localAddress: "172.17.0.2:55516",
      remoteAddress: "X"
    },
    protocols: {
      eth: "handshake"
    }
}]

He estado ejecutando nodos en ID de red elegidos al azar para encontrar uno en el que no haya pares desconocidos, pero no importa cuán grande sea el número, siempre parece haber un nodo aleatorio que aparece en algún momento y no siempre con la misma configuración.

Tengo el mismo archivo de génesis en todos mis nodos. Todos mis nodos están configurados para usar mi bootnode usando el --bootnodescomando. ¿No estoy usando la no-discoverbandera como mis nodos para descubrir los otros nodos en la red desde el nodo de arranque? Los míos también son todos los apretones de manos que son rechazados.
Debido a que está utilizando un nodo de arranque, puede usarlo a lo largo del --nodiscovery se supone que su nodo de arranque debe realizar el descubrimiento. Se supone que agregar la bandera aísla su cadena de bloques y la hace privada. Asegúrese de agregar el indicador cuando inicie un nodo y de que cada nodo haga referencia al nodo de arranque con --bootnodeo con un static-nodes.jsonarchivo en los nodos. Pruebe esta configuración y vea si sus nodos están siendo descubiertos. Déjame saber si funcionó
He intentado usarlo --nodiscoverantes, pero esto hace que mis nodos y el nodo de arranque no se conecten entre sí, aunque defino explícitamente un nodo de arranque al que conectarse.
sí, en realidad la --nodiscoverbandera no es muy útil para esto. En su lugar, intente usar una identificación de red más pequeña y consulte esta publicación para ver si ayuda.
He probado tanto una identificación de red pequeña (5 dígitos) como una grande (10 dígitos). Desafortunadamente, el problema aún persiste.
Es cierto, sigo con el mismo problema. Tuve problemas con el descubrimiento de nodos (bootnode) y solo conseguí que funcionara usando un nodo normal como bootnode. Sin embargo, como mencionas, todavía veo apretones de manos aleatorios y no sé por qué.

El uso de la opción --nodiscover al iniciar la consola geth evitará los apretones de manos con nodos externos. He probado esto y funciona. Desafortunadamente para mí, todavía no puedo establecer un protocolo de enlace entre los dos nodos de mi cadena de bloques privada en AWS.

Sí, esta ha sido mi experiencia usando --nodiscover
Intente con un ID de red diferente (digamos un valor de 5 dígitos) y luego vea si vuelve a ocurrir.
Probé una identificación de red de 5 dígitos y una más larga. El problema aún persiste.

Si se conectó recientemente a la red principal o redes de prueba, es posible que los nodos de arranque y los pares de esas redes aún tengan su dirección IP en sus bases de datos. Intentarán conectarse automáticamente. Un cortafuegos debería detener eso. Cambiar el puerto de escucha de su red privada puede ayudar. Además, si alguno de sus nodos privados de Geth se inicia sin un nodo de arranque privado en ejecución y la opción bootnode y la opción nodiscover, el nodo se conectará automáticamente a los nodos de arranque públicos codificados y comenzará a probar pares de la red principal y las redes de prueba. Guardará estas direcciones IP en su directorio de datos, las compartirá con otros nodos privados en su red e intentará conectarse a ellos continuamente incluso después de reiniciar y luego usar un nodo de arranque privado. Debe eliminar la carpeta de nodos datadir en cada nodo para solucionarlo. Sin embargo, la opción nodiscover es más importante, o puede agregar pares manualmente en lugar de usar un nodo de arranque privado. También edité el archivo params bootnode.go antes de compilar el binario geth. Cambie todos los nodos de arranque en ese archivo a la dirección de enodo de su nodo de arranque privado. Eso resolvió el problema para mí.