I have been part of experimenting with setting up a system to send and receive lightning network payments. The system uses bitcoin-core (bitcoind) and lnd. Initially, the system was set up on a home network, behind a NAT, so neither bitcoind nor lnd could listen for incoming connections from the public internet. In this initial configuration, it was possible to use lnd to send payments, but it could not receive incoming payments.

In the process of troubleshooting, we moved the bitcoind to a server outside the NAT, so it had a public IP number and opened the port 8333 for inbound connections. The lnd server is still behind the NAT, and it does not have any ports opened for inbound connections. Suddenly the system started to work and we could receive incoming lightning networks payments.

So we solved the problem, but I'm kind of baffled as to why this actually works. Was this just a fluke? Or is there a reason why a bitcoin node needs to be able to receive inbound connections in order to properly support a lightning network node?

Edit: For extra context, let me also mention that when using Electrum behind a NAT everything works fine, even though it does not listen to any public port. Which is consistent with the reply I got from @Anonymous.

1 Answer 1


Your experience was coincidental, there's no requirement for bitcoind to be listening on a public interface while using lightningd.

  • Thanks for the concise response! So in order to actually find the problem, where should one start looking? Do you know of documented debugging strategy that is published somewhere? May 5, 2021 at 4:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.