こんにちは、いつもお読みいただきありがとうございます。
Ken(@gootablog)です。
EthereumクライアントのGethの最新バージョン(2018/03/27現在 v1.8.2)を使ってRPCの接続を試みたところ「Invalid host specified」というエラーが返ってきて接続ができないことがありました。
その解消法を書いていきます。
Gethについては他にも記事を書いているのでよかったら参考にしてみてください。
Ethereumクライアント「Geth」の環境構築方法
Ethereum(Geth)でプライベートネットを作成
Gethコンソールでよく使うコマンドをまとめました
Ethereum(Geth)でテストネット(Ropsten)に接続してみる
Ethereum(Geth)でJSON RPCを使って外部からアクセスする
Ethereum(Geth)をlivenetに接続してみる
Ethereum(Geth)をバックグラウンドで起動する&バックグラウンドからコンソールを起動する
Invalid host spesifiedとでたらどうすればいいのか
Geth起動時に--rpcvhosts
というオプションをを追加することで解決します。
コマンドはライブネットで使っているものです。
// --rpcvhosts [host name]を追加
$ nohup geth -datadir ~/.ethereum --fast --cache 2048 --rpc --rpcaddr "hostname" --rpcport 8545 --rpcapi "web3,eth,net,personal" 2 >> ~/log &
--rpcvhosts
というオプションにGethへアクセスする際のホスト名を指定しなければいけなくなりました。
The HTTP/WS RPC endpoint was extended with DNS rebind protection. If you are running an RPC endpoint addressed by name rather than IP, run with –rpcvhosts=your.domain to continue accepting remote requests.
ドメインを当てて使ってもいいし、AWS EC2のパブリックDNSやプライベートDNSでも大丈夫です。
これを指定して起動するとホスト名宛にリクエストを送るのでレスポンスがちゃんと返ってくるようになります。
参考になれば幸いです