我无法从另一台计算机连接到我的 BSC 完全同步节点

I can't connect to my BSC full synced node from another computer

我已经使用此处提供的步骤在 Ubuntu 20.04 bsc 的 hetzner 服务器上的主网上设置了 BSC 全节点:https://www.quicknode.com/guides/infrastructure/how-to-run-a-binance-smart-chain-node

但是我既不能用我的 Metamask 连接到节点,也不能通过 ws.我在两者上都收到 'an error has occurred',我还尝试通过 python 中的脚本进行连接,但我无法使用这两种协议连接到节点。我认为问题是我的服务器不允许其他人连接到该节点。如果我 运行 'geth attach http://127.0.0.1:8545' 在服务器上我得到:

instance: Geth/v1.1.8-859186f2-20220128/linux-amd64/go1.18
at block: 16566352 (Fri Apr 01 2022 14:40:07 GMT+0200 (CEST))
modules: eth:1.0 net:1.0 parlia:1.0 rpc:1.0 txpool:1.0 web3:1.0

如果我执行 'eth.syncing' 我会得到 'false',这应该没问题,因为节点已经同步了。

这是我来自 geth 的日志:

根据 Whosebug 上提供的一些答案,我还尝试 运行 使用以下参数获取 geth 但没有成功:geth --config ./config.toml --datadir ./node --cache 18000 --rpc.allow-unprotected-txs --txlookuplimit 0 --http --http.addr "0.0.0.0" --http.corsdomain "\*" --http.port "8545"

我发现了这个问题,如果有人偶然发现或接近相同的情况,您可能想尝试一下。

问题出在我 config.toml 的 RPC http 请求上,默认情况下,我在 config.toml 文件中有以下字段 HTTPHost = "localhost" 和 HTTPVirtualHosts = ["localhost"],我已经用我服务器的外部 IP 替换了 localhost,它工作得很好。您也可以将其替换为 0.0.0.0.

然后我使用以下参数执行了 geth:--config ./config.toml --datadir ./node --ws --ws.origins=* --rpcvhosts=* --cache 18000 --rpc.allow-unprotected-txs --txlookuplimit 0

--ws --ws.origins=* 参数使我也可以使用 websocket 协议连接到节点。