Почему мой демон bitcoind не прослушивает порт RPC на 8332?

Я читал аналогичный пост, на который не было ответа в этом месте . Я пытаюсь использовать биткойн-кли с хоста, отличного от хоста, на котором работает биткойн. Я также был бы рад использовать curl для отправки запросов rpc. Мне удалось заставить bitcoind и bitcoin-cli обмениваться данными на одном хосте, но активация порта rpc для внешней связи оказалась слишком сложной, если не невозможной, и я ищу вашей помощи.

Я запустил bitcoind со следующим конфигурационным файлом:

server=1
rpcuser=jared
rpcpassword=1234
rpcport=8332
rpcallow=192.168.*.*
gen=0
prune=600

(Обратите внимание, пароль будет изменен после того, как система заработает)

Я подтвердил, что система работает на локальном компьютере с помощью bitcoin-cli, чтобы получить следующее:

{
    "version" : 110200,
    "protocolversion" : 70002,
    "blocks" : 183745,
    "timeoffset" : -1,
    "connections" : 8,
    "proxy" : "",
    "difficulty" : 1583177.84744401,
    "testnet" : false,
    "paytxfee" : 0.00000000,
    "relayfee" : 0.00005000,
    "errors" : ""
}

И с другого хоста в сети я использовал nmap для сканирования портов для отображения:

Starting Nmap 6.47 ( http://nmap.org ) at 2015-12-19 15:20 PST
Nmap scan report for c161.attlocal.net (192.168.1.68)
Host is up (0.0014s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
8333/tcp open  unknown

В упомянутом выше вопросе пользователь смог открыть порт rpc, удалив строки rpcallow из своего файла конфигурации. Он их закомментировал, и проблема решилась сама собой. Я также пробовал это, и мне не повезло.

Я также пытался использовать rpcallow из «192.168.1.*», «192.168.0.0/16», «192.168.1.0/24» и однажды попытался использовать rpcbind, который, по-видимому, связан со старой версией биткойн, как это больше не указан на справочных страницах для bitcoin.conf.

Моя система работает под управлением следующей ОС:

Distributor ID: Ubuntu
Description:    Ubuntu 15.10
Release:    15.10
Codename:   wily

Любая помощь приветствуется! С уважением и спасибо.

Синтаксис подстановочных знаков больше не поддерживается, вам нужно использовать 192.168.0.0/16. Что netstat -antlp | grep 8332говорит?
@NickODell, пожалуйста, добавьте свой комментарий в качестве ответа, чтобы я мог отдать вам должное за решение моей проблемы. Порт RPC даже не отображается как открытый порт на nmap, но ясно, что приложение bitcoin-cli взаимодействует с основным хостом.

Ответы (2)

Две мысли:

  1. Синтаксис подстановочных знаков больше не поддерживается. Вместо 192.168.*.*используйте 192.168.0.0/16. Вместо 192.168.1.*используйте 192.168.1.0/24.

  2. В качестве дополнительного шага отладки попробуйте запустить netstat -antlp | grep 8332. Если это приводит к выводу, как показано ниже, это означает, что он привязан к порту.

    tcp        0      0 0.0.0.0:8332             0.0.0.0:*               LISTEN 
    
Спасибо. После того netstat, как выясняется, что мой биткойн-узел прослушивает порт 18332, а не 8332.
Вы когда-нибудь выясняли, почему он не использует предоставленный порт?

Помимо разрешения диапазона сетевых адресов для клиентов, вам необходимо также указать rcpbind=server_ip_addressдля сервера (где работает ваше биткойн-ядро).

Значение по умолчанию равно rcpbind, 127.0.0.0и оно позволяет RPC прослушивать только , localhostа не 0.0.0.0.

Чтобы иметь возможность подключаться с локального хоста и из сети, добавьте параметр дважды, как показано в примере :

server=1
rpcuser=bitcoin
rpcpassword=yourpassword

[main]
rpcbind=127.0.0.1
rpcbind=192.168.0.10
rpcallowip=127.0.0.1
rpcallowip=192.168.0.0/16

РЕДАКТИРОВАТЬ: В качестве альтернативы вместо того, чтобы вводить конкретный адрес сервера, вы можете просто использовать rcpbind=0.0.0.0его, чтобы заставить RPC прослушивать файлы 0.0.0.0. Это более гибко, но тогда вы полагаетесь исключительно на то rpcallowip, чтобы разрешать только локальные соединения.