以太坊客户端-Go RPC 响应 403“指定的主机无效”

问题描述 投票:0回答:3

我正在运行 ethereum/client-go docker 镜像,带有以下标志:

docker run -p 8545:8545 ethereum/client-go --rpcapi personal,db,eth,net,web3 --rpc --rpcaddr 0.0.0.0 --rpccorsdomain * --rinkeby

这个镜像运行在机器A上,我可以查询其中的RPC。但是当我尝试从机器 B 查询它时,我收到以下响应:

要求:

curl -X POST http://<machine_A_address>:8545 -H "Content-Type: application/json" --data '{"jsonrpc":"2÷.0","method":"eth_coinbase","params":[],"id":64}' --verbose

回应:

< HTTP/1.1 403 Forbidden
< Content-Type: text/plain; charset=utf-8
< X-Content-Type-Options: nosniff
< Date: Wed, 18 Apr 2018 14:58:44 GMT
< Content-Length: 23
< 
invalid host specified
* Connection #0 to host ... left intact

如何从机器B查询机器A上托管的以太坊客户端?我在哪里可以找到以太坊客户端日志以便调试它?

ethereum go-ethereum
3个回答
6
投票

添加

--rpcvhosts=*
此标志解决了问题


1
投票

由于

--rpcvhosts
已弃用,您需要指定标志
--http.vhosts=<YOUR_DOMAIN>

如果您需要简单的解决方法,可以设置

--http.vhosts=*
,但此解决方案是一种不好的安全做法。


0
投票

或者当

--http.vhosts=*
不受支持时使用
--rpcvhosts=*

如果您正在运行私有节点,那么您需要关闭此设置,但如果您要分叉主网节点,那么您需要打开此选项。此外,如果您想限制节点上的对等点,请使用

--netrestrict=CIDR netmask
。 CIDR 网络掩码的格式为 12.168.1.0/24

使用带有隧道和 VLan 的 VPN 创建一个新的 GETH 子网,并将 --netrestrict 设置为 VLAN 子网。

© www.soinside.com 2019 - 2024. All rights reserved.