【发布时间】:2016-07-09 18:26:55
【问题描述】:
我正在使用新的 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 在获取(/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) 在 emitTwo (events.js:87:13) 在 Request.emit (events.js:172:7) 在请求。 (/Users/ekkis/Development/Test/www/node_modules/request/request.js:1067:10) 在 emitOne (events.js:82:20) 在 Request.emit (events.js:169:7) 在传入消息。 (/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 从之前的事件: 在 Client.command (/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) 在对象。 (/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 地址,以便将其列入白名单?
【问题讨论】: