Cannot get data published by other nodes

Scenario: Two computers on different networks start IPFS respectively. Node 1 add file A, node 2 get file A. Node 2 cannot download file A.

Operation: Node 1

ipfs add F:\ipfstest\mytest.txt
11 B / 11 B [================================================================================================] 100.00%eadded QmPfmAqjeZ4Zkk24rcTET3uyFdhHjKHoYRjHy9PwHzormW mytest.txt
11 B / 11 B [================================================================================================] 100.00%
PS: execution succeed
ipfs name publish QmPfmAqjeZ4Zkk24rcTET3uyFdhHjKHoYRjHy9PwHzormW
Published to QmSBL6xWfhkrtms26iugsiyKsDHRQ77FUEUU2ATiD7fJnx: /ipfs/QmPfmAqjeZ4Zkk24rcTET3uyFdhHjKHoYRjHy9PwHzormW
PS: execution succeed

Node 2

ipfs dht findprovs QmPfmAqjeZ4Zkk24rcTET3uyFdhHjKHoYRjHy9PwHzormW
PS: execution succeed
ipfs get -o=G:\ipfstest\mytest.txt QmSBL6xWfhkrtms26iugsiyKsDHRQ77FUEUU2ATiD7fJnx
PS: execution failed
ipfs get -o=G:\ipfstest\mytest.txt QmPfmAqjeZ4Zkk24rcTET3uyFdhHjKHoYRjHy9PwHzormW
PS: execution failed
ipfs get -o=G:\ipfstest\mytest.txt /ipfs/QmPfmAqjeZ4Zkk24rcTET3uyFdhHjKHoYRjHy9PwHzormW
PS: execution failed
ipfs get -o=G:\ipfstest\mytest.txt /ipns/QmSBL6xWfhkrtms26iugsiyKsDHRQ77FUEUU2ATiD7fJnx
PS: execution failed

Problem: Can’t download data on other nodes under WAN?

Is QmSBL6xWfhkrtms26iugsiyKsDHRQ77FUEUU2ATiD7fJnx reachable from the outside? Can Node A open a connection to it? Is it advertising the right IP/port (ipfs id)?.

Does the get operation only get data from peer nodes?
It can only get data from the list of nodes displayed by the “swarm peers” command?
If it is not a peer node, is it only available through the “dht get” command?

I can’t connect using the “swarm connect” command, but I can get it using the “dht get” command

I can’t connect using the “swarm connect” command, but I can get it using the “dht get” command

Your peer has the data, so if you can’t connect to it from a different peer, then the gateways will not be able to connect to it either and extract the data.

I understand, I tested it again, and it is true that only after the port is mapped to the public network, other nodes can get data blocks through the get command.
I originally thought that I could get the block through the transit of other nodes, like this

Hello, why not consider transferring data through a gateway node?
For example: Node A can connect to node C, node B can connect to node C, node A cannot connect to node B. If node A wants to get data from node B, it can transfer through node C.
In this case, as long as you have Internet access, you can download content from any node.