Knoten aus zwei verschiedenen Netzwerken, die nicht auf einer privaten Blockchain betrieben werden können

So sieht meine Einstellung aus:

Geben Sie hier die Bildbeschreibung ein

H2 und H4 befinden sich in getrennten Netzwerken. Sie haben private IPs und können nicht von außerhalb des Netzwerks geroutet werden. Wie mache ich diese beiden Systeme zu Peers, sodass sie im selben privaten Blockchain-Netzwerk arbeiten? Ich habe versucht, öffentliche IP in der enode URImit der addPeer()Funktion zu verwenden, aber die Verbindung war nicht erfolgreich.

Bearbeiten:

Wie @Badr vorgeschlagen hat, --natmit extipfunktioniert, aber dies kann nicht zum Verbinden zweier Systeme mit derselben öffentlichen IP verwendet werden, dh die öffentliche IP kann nicht in zwei private IPs übersetzt werden. Ich habe versucht, eine andere Portnummer zu verwenden, aber die Verbindung war nicht erfolgreich. Gibt es dafür eine Lösung?

Unterstützt der Router Upnp?
@Badr Ja, es unterstützt Upnp.
Ich habe nicht verstanden, dass Sie separate Netzwerke (wie in der Abbildung) mit derselben öffentlichen IP haben?
Wie fügt man Knoten hinzu? Haben Sie die Informationen mit admin.nodeInfo erhalten, um die IP zu überprüfen? hast du versucht --nat upnp oder irgendwelche
@Badr Die beiden separaten Netzwerke haben unterschiedliche öffentliche IPs. Mein Problem ist, dass ich NAT machen und diese öffentliche IP nur einem der Systeme in diesem Netzwerk zuweisen kann.
Wenn ich verstanden habe, dass --nat extip für Sie funktioniert hat, um die 2 Knoten in verschiedenen Netzwerken zu verbinden, aber das Problem tritt auf, wenn Sie einen zusätzlichen Knoten aus den vorherigen Netzwerken hinzufügen möchten?
@ Badr Ja. Genau das ist mein Problem.
Was ist das Ergebnis von admin.nodeInfo in H3, H4
nachdem Sie sie mit --nat any oder upnp gestartet haben?

Antworten (2)

Ethereum-Clients verwenden einen Listener-Port (TCP) und einen Discovery-Port (UDP), beide standardmäßig auf 30303.

Welche TCP- und UDP-Ports sind erforderlich, um einen Ethereum-Client auszuführen?

Verwenden Sie als ersten Versuch die Option

  --nat value       NAT port mapping mechanism (any|none|upnp|pmp|extip:<IP>) (default: "any")

https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options

als zweite Wahl: Ich denke, Sie sollten eine NAT-Umleitung auf Router-Ebene vornehmen. Sie müssen die Ports (Standard) 30303 und 8545 (RPC) an die Hx-Maschinen weiterleiten

auf R1

128.195.4.119:30303=>10.0.1.3:30303

128.195.4.119:8545=>10.0.1.3:8545

auf R2

128.143.7.21:30303 =>192.168.1.1:30303

128.143.7.21:8545=>192.168.1.1:8545

Verwenden Sie dann einfach die öffentliche Adresse, wenn Sie Peers zu den Ethereum-Clients hinzufügen, z. B. enode://*******:128.143.7.21:30303

Zusätzliche Informationen im offiziellen Dokument , das wir gefunden haben:

Im folgenden Beispiel beschreibt die Knoten-URL einen Knoten mit der IP-Adresse 10.3.58.6, dem TCP-Listening-Port 30303 und dem UDP-Discovery-Port 30301.

ENODE: //6F8A80D14311C39F35F516FA664DEAAAAA13E85B2F7493F37F6144D86991EC012937307647BD3B9A82ABE29774E1407241D59BBBBBB39333131407241D5947BBBBBBB39393131407241D5947BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAGEGEGEGEGEGENGEGELUNG:

Ziehen Sie in diesem Fall in Betracht, auch den Port 30301 weiterzuleiten.

--natmit extipfunktioniert, aber dies kann nicht verwendet werden, um zwei Systeme mit derselben öffentlichen IP zu verbinden. Ich habe versucht, eine andere Portnummer zu verwenden, aber die Verbindung war nicht erfolgreich. Gibt es dafür eine Lösung?

Wie haben Sie den H5-Knoten erstellt? Insbesondere sollten Sie darauf achten, das Ethereum nicht massenhaft zu kopieren. Näher an der Sache:

  • die nodekeyDatei identifiziert Ihren Knoten eindeutig.
  • es verhindert, dass sich ein Knoten wieder mit sich selbst verbindet.
  • Wenn derselbe Schlüssel in 2 verschiedenen Knoten platziert wird, werden diese Knoten nicht miteinander verbunden, da sie glauben, dass es sich um dieselbe Maschine handelt.

Ein Test aus H2:

  • Stopp Geth
  • nodekeyDatei löschen
  • Geth starten
  • addPeer(H5)