Minimal public network

I am a developer on a distributed system. I am trying to add a peer to peer communication layer using libp2p. I specifically want this to be a completely independent network. I do not want to connect to the main IPFS network or anything like that. There will be one or more well-known bootstrap peers/seeds. The nodes are run by multiple parties using cloud infrastructure like AWS, so mDNS is not an option.

How do I bootstrap a network using a DHT for discovery and routing? Every example I can find either used direct connections, mDNS, or someone else’s servers. I specifically want to build a network without using any outside servers. I can build a network by having one or more seeds and gossiping peer addresses, but I want to be able to use NAT traversal and all the other powerful features that come with DHT routing/discovery. And I don’t want to reinvent the wheel.