How do IPFS and LibP2P implement NAT traversal?

I know that IPFS and LibP2P only provide interfaces so NAT traversal can be implemented in multiple ways, but what are the main implementations for js-ipfs and go-ipfs for example? Are there STUN and TURN servers (like the ones of the Mozilla foundation) hardcoded in js-ipfs for example, that nodes would send a request to whenever they want to seed data?

Have you already visited this page?

https://docs.libp2p.io/concepts/nat/

1 Like

No but I should have! Thank you.

1 Like

Also: this: https://discuss.libp2p.io/t/how-we-discover-our-own-diallable-ip-address-and-port/219 for a maybe-not-up-to-date-but-detailed-and-somewhat-relevant-I-think step-by-step description.