如何讓我的 enode URL 使用/顯示外部 IP
當我從命令行在我的 mac 上執行(自定義開發和測試網路)奇偶校驗節點時,它會啟動並將我的 enode 顯示為
enode://c2f9c6a...85b1d@192.168.0.241:99999
IP 地址是我的路由器分配的 ip192.168.0.241
。這意味著雖然我可以連接到已設置的 bootnode 對等節點(我在 VPS 上有一個遠端節點),並且 bootnode 對等節點記錄我的節點已連接,但沒有其他遠端節點能夠使用我的節點擁有的 enode URL。
例如,當其他遠端同事啟動他們的節點時,他們也可以連接到引導節點,但無法發現我的節點,我也無法發現它們,因為它們也在路由器後面,並且存在同樣的問題。因此,這不是一個點對點網路,它集中在引導節點周圍,因為節點發現似乎不起作用。
所以我的問題實際上是兩個相關的問題,“如何讓我的 enode URL 使用/顯示外部 IP,我怎樣才能被發現?”,如果這不可能,那麼“如何在公共乙太坊鏈,我可以將它應用到我的自定義鏈嗎?”。
這裡有幾個問題,我在發布問題時沒有概述。
- 首先是您可能有其他節點在您的 LAN 中執行,您可能知道也可能不知道 - 所有這些節點的外部 IP 都是相同的。
- 第二個是您應該考慮在需要時將流量路由到您的節點的路由器後面。
- 第三是問題或多或少是關於在網路上被發現的。
因此,問題在於您是否要託管永久節點。
永久節點
託管永久節點的一個原因是,如果您想為網路託管一個引導節點,該網路可以由 LAN 外的任何人連接。因此,您需要一個外部 IP 地址,並且您需要確保沒有其他節點在您的路由器後面執行,即使不是直接或間接地也將使用外部 IP 地址。
Parity 中的這個解決方案需要
--nat extip:<your_external_ip>
在命令行啟動節點時設置參數。這將強制您的節點啟動並enode
使用您的外部 IP 和埠創建一個。然後
enode
可以將其包含在您的genesis.json
文件中,並被其他節點用於同步到區塊鍊和其他內容。非永久節點
這意味著您可以隨時啟動和停止節點,並且您不太關心網路是否可用。
在這裡你必須考慮你的路由器在做什麼。在這種情況下,您需要將您的路由器配置為
30303
打開埠(對於乙太坊或您自己的私有網路的其他值),並且port forwarding enabled
此埠對於TCP
和UDP
.這使您的節點既可以與網路通信又可以被發現(UDP)。