Davidr99 Appreciate your effort to understand and resolve the issue. The thing is that the blocking can be happening upstream (ISP).
I did some packet captures and found that it looks like the packets are all going though, I could not see any rejected packets and the STUN looked to be working correctly.
Can you share with us those? Where are you capturing these packets? On RAE or on the router?
Based on what you judge STUN is working correctly?
As for why it works if you wait long enough -> that comes down to our less-than-fortunate implementation (which we aim to change, but not easy to do). Where we wait until all possible connection options are collected. This is not needed for the local network and rather than presenting timeout (as we do now) we could just use whatever options we were able to collect in the time.
Thus waiting long enough means that the collection process eventually finishes and you get your candidates transferred over to the frontend.