Почему у Bitcoin-ноды нет входящих пиров
Bitcoin-нода за маршрутизатором может получать блоки по исходящим соединениям, даже если к ней никто не подключается извне. Перед изменением правил сети проверьте направление соединений.
Посчитайте входящие и исходящие соединения
bitcoin-cli getnetworkinfo | jq '{networkactive, connections_in, connections_out}'
bitcoin-cli getpeerinfo | jq 'group_by([.network, .inbound]) | map({network: .[0].network, inbound: .[0].inbound, count: length})'
Первая команда покажет, включён ли обмен с пирами. Вторая сгруппирует соединения по сети и направлению, скрыв адреса пиров. Например, восемь исходящих соединений по IPv4 при нуле входящих означают, что нода смогла подключиться к другим участникам. По этому снимку нельзя определить, пытался ли кто-либо установить входящее соединение.
Проверьте доступ снаружи
Если нода должна принимать публичные подключения по IPv4, проверьте адрес и порт, на которых она слушает P2P. Проследите этот порт в правилах локального межсетевого экрана и пробросе на маршрутизаторе. С внешнего сервера проверьте TCP-соединение с заявленным P2P-адресом. Для проверки самого протокола установите соединение со второй Bitcoin-ноды и найдите пир в getpeerinfo на принимающей стороне.
Для проверки нужен порт P2P. RPC-порт обслуживает административные запросы. Если входящие подключения идут через onion-сервис, проверьте доступ через Tor: у этого соединения другой сетевой маршрут.
bitcoincore.org getnetworkinfo · bitcoincore.org getpeerinfo