Ipfs dag get file hang indefinitely

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!