I started 2 nodes (both connected to bootstrap node)
step 1. node 1 - check peers (showing node2 only)
# ipfs swarm peers
/ip4/10.2.1.20/tcp/39976/p2p/12D3KooWE13PmaggSkC2V7fs6gPoY5Uqt1KHqgFiZwb36yFuKAUj
(id 12D3KooWE13PmaggSkC2V7fs6gPoY5Uqt1KHqgFiZwb36yFuKAUj is node2's ID)
here we can see peer node2’s port number is a random client socket connection number 39976
Then we put some data from node 1:
# ipfs dag put <some data>
step 2. node 2 - check peers (showing node1 only)
# ipfs swarm peers
/ip4/10.1.1.10/tcp/4001/p2p/12D3KooWCDShp68jzEZ16VovTDMeFqzzn1BBqVNY6HWQoHGpY3ur
(id 12D3KooWCDShp68jzEZ16VovTDMeFqzzn1BBqVNY6HWQoHGpY3ur is node1's ID)
step 3. then tried to get file uploaded from node 1:
ipfs dag get
The command here hang indefinitely…
But, on node 2, we see peer(node1)'s port is 4001, then we put data from node 2, node 1 can get instantly.
I asked this question on github:
https://github.com/ipfs/kubo/issues/9246
And Jorropo kindly replied with comment:
you probably have a restrictive NAT that doesn’t support hole punching.
I’m wondering how to check if there is a restrictive NAT that doesn’t support hole punching?
And how to solve the problem?
Thanks!