Network
執行乙太坊客戶端需要哪些 TCP 和 UDP 埠?
geth CLI 選項建議預設情況下客戶端偵聽 TCP 埠 30303。此頁面還建議使用 UDP 埠 30301 進行節點發現。
這是所有必需的還是有任何額外的埠在使用?
乙太坊客戶端使用偵聽器 (TCP)埠和發現 (UDP ) 埠,預設情況下都在30303上。
如果您需要執行JSON-RPC,還需要TCP埠8545。請注意,JSON-RPC 埠不應向外界開放,因為您可以從那裡進行管理操作。
所有客戶端的埠都可以從預設值進行自定義。
如果您希望 geth/eth 找到 UPnP,您還需要在路由器上啟用它。這只是為了它可以偵聽埠,如果您已經手動打開/路由它們,則沒有必要。
關於您連結的 wiki 頁面,它實際上只是一個範例:
如果 TCP 和 UDP(發現)埠不同,則將 UDP 埠指定為查詢參數discport。
在以下範例中,節點 URL 描述了一個 IP 地址為 10.3.58.6、TCP 偵聽埠為 30303 和 UDP 發現埠為 30301 的節點。
我認為這種誤解也在傳播,因為bootnode util 的行為。事實上,它使用 30301 作為預設的 UDP 發現埠。
注意:如果 IPv6 可用,geth 將優先使用 IPv6,如果您假設它正在偵聽 IPv4 地址,則可能會導致問題。