How to achieve hole punch by go-libp2p

Hey guys. i got an issue abut hole punch when i used go-libp2p package to build a p2p network. i adopted the case “chat w rendezvous” from the go-libp2p package to design the communication network. Everything ran good on intranet. But when i put a node on the cloud server and another node on the local device, things went wrong. It was pretty strange that the node from server side could find the intranet addr of the node from local, but the local one couldnot get the server one. i was told that this problem could be solved by hole punch but its a pity i have no idea abut how this works by go-libp2p even though i read the tutorial and interface. LF>help :slight_smile: