OK, WebRTC has been defined barely yesterday, actually is being defined right now. It's completely unencumbered by legacy shortcomings, particularly when dealing with NAT. So let's say using WebRTC as transport solves all NAT problems.
You define your ext-rtp-ip and ext-sip-ip in SIP profiles, then your ext-rtp-ip in verto.conf.xml, and you're all set.
The magic of ICE, used by default by all WebRTC clients to determine how to connect, and implemented on FreeSWITCH side too, is almost sure to guarantee a perfect flow of signaling and media.
If you have a very strange situation, for example you want to use WebRTC inside LANs without using public addresses or DNS names, then you will need to implement your own ICE/STUN server and configure your WebRTC clients to use that server(s). But if you have such a project, you probably already know you...