Go-Ethereum

將主機上的乙太坊節點連接到 VM 中的 docker 集群

  • October 13, 2016

我的設置如下:使用虛擬機執行 Ubuntu VM 的 Windows 主機。在 Ubuntu VM 上,我正在使用 docker 執行私有乙太坊集群。這工作正常。我正在使用引導節點連接它們,這可以立即工作。不需要添加對等體。

我現在要做的是將我的 Windows 機器上的本地節點連接到集群。我想在本地執行 Mist 以進行展示,但還要設置一些易於使用的本地部署環境。

在 virtualbox 中,我可以使用橋接網路或 nat。如果我使用橋接網路,它就可以工作。我可以將我的 Windows 託管節點和 Mist 連接到集群。但我需要使用nat讓它工作。

我基本上已經嘗試了一切,但沒有任何效果。最新嘗試包括使用 –nat extip:

$$ ubuntu_vm_ip $$. 也沒有工作。 然後我決定在 Ubuntu VM 本身上執行一個節點(所以不使用 docker)。這沒有自動同步,但通過使用 addpeer 我實際上可以讓它從我的主機連接。碼頭節點不是那麼多。我發現這篇關於連接不同網路上的節點的文章,但在我的情況下設置有些不同。我不確定需要為哪些節點提供 –nat extip 標誌(以及要使用的地址)。看起來與引導節點的連接和與節點的直接連接根本不起作用。

提供一些詳細資訊:我的 docker bootnode 正在使用埠 30301,並將其暴露給 ubuntu 主機,包括 tcp 和 udp。我的 docker ethereum 節點暴露了 30303/udp 和 8545 tcp。在 virtualbox nat 網路設置中,我正在轉發所有這些埠。

ubuntu 節點上已連接的對等點

我想知道,看看上圖,網路設置下本地節點/遠端節點上的隨機埠號是什麼。

所以我知道這有點牽強,並且有類似的問題,但非常歡迎任何提示、想法或經驗。我已經為此工作了好幾天,非常令人沮喪。

順便說一句,我計劃在 github 上分享所有內容,供那些感興趣的人使用。

**編輯:**使用僅主機網路我也可以使用 addPeer 連接節點而沒有任何問題,但對等點發現將不起作用。順便說一句:我已經禁用了 Windows 主機上的防火牆。

所以問題歸結為:為什麼對等發現在橋接網路上工作,而不是在僅主機或 NAT 上工作,我需要在哪裡應用網路更改?在我的節點容器上公開更多埠(我嘗試了所有常見的嫌疑人並配置了埠轉發)。使用 –nat extip 啟動 geth:

$$ someurl $$

好的,這樣就解決了。結果,當然,我犯了一個愚蠢的錯誤。

使用 NAT 時,我讓來賓機器在 127.0.0.1 上可用,並在 VirtualBox NAT 網路設置中使用埠轉發。轉發埠 30303 - 我的 docker 節點正在使用的埠 - 基本上佔用了我本地機器上的這個埠。因為我也在這個埠上執行了我的 windows 節點,所以發現永遠不會起作用。(儘管 addPeer 仍然有效)

我將本地節點切換為在不同的埠上執行,它立即工作……

引用自:https://ethereum.stackexchange.com/questions/9165