Bitcoin-Core
比特幣 RPC 無法訪問:無法將 RPC 伺服器綁定到 IPV6
我嘗試了 bitcoin.conf 中的所有不同組合,以使我的比特幣節點(託管在受 VPN 保護的 AWS 中)可訪問,但似乎沒有任何效果……
只是為了清除它,我在機器上打開了埠 8332。
這是我的 bitcoin.conf:
txindex=1 server=1 rest=1 # Auth Credentials For JSON-RPC server rpcuser=your_username rpcpassword=your_password #chain=test testnet=1 #rpcallowip=0.0.0.0/0 [test] rest=1 rpcallowip=0.0.0.0/0 rpcallowip=::/0 rpcbind=0.0.0.0:8332 # Listen for JSON-RPC connections on this port #rpcport=8332
這是網路統計:
ubuntu@blahblah:~$ sudo ss -ltpn State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:18333 0.0.0.0:* users:(("bitcoind",pid=14485,fd=29)) LISTEN 0 128 0.0.0.0:8332 0.0.0.0:* users:(("bitcoind",pid=14485,fd=9)) LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=644,fd=13)) LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=760,fd=3)) LISTEN 0 128 [::]:18333 [::]:* users:(("bitcoind",pid=14485,fd=28)) LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=760,fd=4))
我無法通過以下 RPC 呼叫到達我的節點:(在本地我可以)
curl --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getblockchaininfo","params":[]}' -H 'content-type:text/plain;' http://your_username:your_password@my_machine_ip:8332
我得到超時:
curl: (28) Failed to connect to my_machine_ip port 8332: Connection timed out
但是當我執行時:
docker run --name mynginx1 -p 8332:80 -d nginx
我可以從我自己的電腦上 curl 到 8332 並得到響應。
我的 docker 執行的 netstat:
ubuntu@blahblah:~$ sudo ss -ltpn State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 4096 0.0.0.0:8332 0.0.0.0:* users:(("docker-proxy",pid=13131,fd=4)) LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=644,fd=13)) LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=760,fd=3)) LISTEN 0 4096 [::]:8332 [::]:* users:(("docker-proxy",pid=13139,fd=4)) LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=760,fd=4))
是什麼讓我得出結論,我的問題是我沒有與比特幣節點綁定的 IPv6 RPC。
我去了手冊並閱讀了以下內容:
-rpcbind=[:port] 綁定到給定地址以偵聽 JSON-RPC 連接。不要將 RPC 伺服器暴露給不受信任的網路,例如公共網際網路!除非還傳遞了 -rpcallowip,否則將忽略此選項。埠是可選的並覆蓋 -rpcport。對 IPv6 使用 [host]:port 表示法。此選項可以指定多次(預設值:127.0.0.1 和 ::1 即 localhost)
但是我試圖在 rpcbind 中指定 IPv6 的每一種方法都沒有幫助。
至少對於 IPv4,您不能
0.0.0.0
指定rpcbind
. 如果您嘗試以下操作,您將在 bitcoind 日誌中收到此錯誤:在地址 0.0.0.0 埠 18443 上綁定 RPC 失敗。
嘗試
127.0.0.1
IPv4 或::1/128
IPv6。
bitcoind -rpcbind=127.0.0.1