Skip to main content

I lost WAY too much time on this issue.
If it can help at least one person to not lose as much...

 

Turns out that, if you are using your Sonos in a Dual-Stack Environment, if you only get Name-servers over IPv6, Sonos is unable to use them. Your name-servers NEED to be reachable over IPv4 for Sonos to work.

 

Hopefully, this bug gets fixed soon as more and more ISP’s are transitioning and leaving the legacy where it belongs.

Interesting, I didn't know that. Sadly I'm on an IP v4 only ISP so trying v6 stuff is beyond me.

How easy to fix is always the question, if the Linux kernel used by Sonos and related bits support v6 it could be a simple .config file edit, but still it would need a good bit of internal testing. If not supported it becomes a huge task, updating a fair amount of the core operating system.

Either way this should get picked up as a feature request and sent on to the developers for evaluation.


Normally, it is as simple as adding the name-servers in /etc/resolv.conf

 

I don’t know how they built their stuff, but works just fine on my linux machines


Edit to change this: Adding the v6 names in resolv.conf only works if the dns resolver supports v6. Looking at my resolv.conf I don't see names, only IP addresses. (Misread what you wrote, sorry)

To: Adding the v6 addresses in resolv.conf only works if the dns resolver supports v6.

That support is the key question to answer "how hard" it will be.

You of course could test this on your v6 capable network by redirecting dns queries from the v4 servers Sonos is using to a v6 only server. Probably a firewall rule would be the easy way.

Also keep in mind the hard limit of 3 nameservers that you can have, so either redundant v4s or v6s but not both.

https://man7.org/linux/man-pages/man5/resolv.conf.5.html

nameserver Name server IP address

              Internet address of a name server that the resolver should

              query, either an IPv4 address (in dot notation), or an IPv6

              address in colon (and possibly dot) notation as per RFC

              2373. Up to MAXNS (currently 3, see <resolv.h>) name

              servers may be listed, one per keyword.  

 


Came back to add a bit to the limit of three servers issue.

The limit (see the full RFC) of three is on IP addresses, not servers. So a server offering both v4 and v6 resolution and with both added to client's resolv.conf would take two slots. That means your second DNS server could only be listed by the v4 OR v6 IP, not both as only one slot is available. If more than three IPs are given, the selection process isn't really v4/v6 friendly.

I run two DNS servers on my LAN and this limit has given me much frustration. If my first server, with v4 and v6 addresses configured goes down the second server can only provide v4 or v6 resolution, not both. I never solved the issue, recompileing the source to change the limit is too unwieldy even where available. I worked around it by only using v4 services, which as you said is not an optimal solution.


In my case, I run 3 resolvers. All 3 were reachable over v6. I had to make an exception for the Sonos


Yes, the limit is three, v6 or v4 in any combination. But it is a rare (I've never seen one) client that will access more than three at one time.