I have a CoTurn setup which is deployed using docker and listening on both IPv4 & IPv6 addresses. For this setup, IPv4 & IPv6 public addresses are directly assigned to the host machine.
Everything works correctly, and we have been using this setup for 2-3 years now.
I recently noticed that this configuration works fine for IPv4 to IPv4 and Ipv6 to Ipv4 combination but not for IPv6 to IPv6.
I looked at the ice candidates which are gathered by IPv6 clients, and found that the server always allocates IPv4 addresses for relay which works if the other side is on IPv4. However, if the other side is also IPv6 and cant reach IPv4 addresses than the ICE negotiation fails completely.
I have 2 questions based on the above behavior
1) Why does CoTurn does not allocate IPv6 relay candidates along with IPv4 candidates? Is observed behavior the correct behavior? If not, what needs to be changed for IPv6 relay candidates to be allocated.
2) On a dual stack network, why aren't the clients using IPv6 as host candidates? In my testing only IPv4 host candidates were exchanged.
I know that it is rare to find 2 clients on IPv6 only network, but I do fear that we will encounter that situation soon (especially with mobile devices).