我正在使用新的 Docker-for-Mac 来运行守护进程,如下所示:
$docker run -d --name bitcoind -e BITCOIN_DATA=/data \
-v ${PWD}/bitcoind:/data -p 8332:8332 seegno/bitcoind:latest \
-server -rpcuser=test -rpcpassword=nopass -rpcallowip=192.168.1.67 \
-printtoconsole -debug=rpc
我允许的 IP 地址是我的默认值:
$ ifconfig |grep inet |grep -v inet6
inet 127.0.0.1 nitmask 0xff000000
inet 192.168.1.67 netmask 0xffffff00 broadcast 192.168.1.255
然后我运行我的应用程序:
var BTC = require('bitcoin-core');
var opts = {
host: 'localhost',
port: 8332,
username: 'test',
password: 'nopass'
};
btc = new BTC(opts);
btc.getNewAddress().then(function(s) {
console.log(s);
});
并得到:
未处理的拒绝 RpcError: 403 Forbidden at get (/Users/ekkis/Development/Test/www/node_modules/bitcoin-core/dist/src/parser.js:34:11) 在 Client.rpc (/Users/ekkis/Development/ Test/www/node_modules/bitcoin-core/dist/src/parser.js:81:14) 在 Request.self.callback (/Users/ekkis/Development/Test/www/node_modules/request/request.js:200: 22) 在 Request.emit (events.js:172:7) 在 Request.emitTwo (events.js:87:13)。(/Users/ekkis/Development/Test/www/node_modules/request/request.js:1067:10) 在emitOne (events.js:82:20) 在 Request.emit (events.js:169:7) 在 IncomingMessage . (/Users/ekkis/Development/Test/www/node_modules/request/request.js:988:12)来自上一个事件:在 /Users/ekkis/Development/Test/www/node_modules/bitcoin-core/dist/src/ index.js:163:21 来自上一个事件:在客户端。命令 (/Users/ekkis/Development/Test/www/node_modules/bitcoin-core/dist/src/index.js:152:34) 在应用 (/Users/ekkis/Development/Test/www/node_modules/lodash/lodash .js:409:27) 在 Client.wrapper [as getNewAddress] (/Users/ekkis/Development/Test/www/node_modules/lodash/lodash.js:4837:16) 在 Object. (/Users/ekkis/Development/Test/www/t:12:5) 在 Module._compile (module.js:425:26) 在 Object.Module._extensions..js (module.js:432:10) 在Module.load (module.js:356:32) 在 Function.Module._load (module.js:311:12) 在 Function.Module.runMain (module.js:457:10) 在启动时 (node.js:136 :18) 在 node.js:972:3 包装器 [as getNewAddress] (/Users/ekkis/Development/Test/www/node_modules/lodash/lodash.js:4837:16) 在 Object. (/Users/ekkis/Development/Test/www/t:12:5) 在 Module._compile (module.js:425:26) 在 Object.Module._extensions..js (module.js:432:10) 在Module.load (module.js:356:32) 在 Function.Module._load (module.js:311:12) 在 Function.Module.runMain (module.js:457:10) 在启动时 (node.js:136 :18) 在 node.js:972:3 包装器 [as getNewAddress] (/Users/ekkis/Development/Test/www/node_modules/lodash/lodash.js:4837:16) 在 Object. (/Users/ekkis/Development/Test/www/t:12:5) 在 Module._compile (module.js:425:26) 在 Object.Module._extensions..js (module.js:432:10) 在Module.load (module.js:356:32) 在 Function.Module._load (module.js:311:12) 在 Function.Module.runMain (module.js:457:10) 在启动时 (node.js:136 :18) 在 node.js:972:3
虽然我似乎能够连接到服务器:
$ telnet localhost 8332
Trying ::1...
Connected to localhost.
Escape character is '^]'.
它不会因为连接错误而挂断我……我错过了什么?
*编辑我*
好吧......如果我运行守护程序-logips
并进行尝试,我会看到:
2016-07-09 18:32:26 收到来自 172.17.0.1:50262 的 POST 请求
而不是我预期的IP地址。我收集它是 Docker 运行的 VM 的 IP 地址,它以某种方式被路由到容器。所以现在的问题是:如何从我的节点应用程序中发现该 IP 地址,以便将其列入白名单?