Ah good point. Okay I was not using host networking
so I just changed that quickly, and I disabled my custom advertise_addr
rule.
The error is still showing, but this time it is automatically reporting the correct server IP instead of the container IP. But for some reason the connection still fails.
OfficeSonos cannot reach [serverIP]:1400, falling back to polling, functionality may be limited, see https://www.home-assistant.io/integrations/sonos/#network-requirements for more details
GarageSonos cannot reach [serverIP]:1400, falling back to polling, functionality may be limited, see https://www.home-assistant.io/integrations/sonos/#network-requirements for more details
My firewall rule is:
LAN IN:
Accept:
Protocol: TCP and UDP
Source IP: sonos device ips on IoT vlan
Source Port: 1400
Destination IP: server ip on secure vlan
Destination Port: 1400
States: New, Established, Related
That firewall rule is wrong. Remove the source port as that will be random. This specific connection will also always be TCP.
1 Like
Awesome that was it - thanks for the replies!
So to recap:
- Needed to change my docker networking mode for the HA container to
host
(this had follow-on effects which required me to update my nginx reverse proxy config and other things, so be mindful of that if you start randomly changing this stuff)
- Needed to add a firewall rule to allow cross-VLAN connection on port 1400, such that the source is any TCP port on all Sonos devices, and destination is port 1400 on my server
Hope that helps others in this thread!
2 Likes
I experienced this issue. I’m using Home assistant core on an Asahi Linux server.
To resolve, I had to add a firewall rule to allow incoming connections on TCP ports 1400 and 1443.
My server OS uses firewall-cmd, so I added the rules like this:
- sudo firewall-cmd --zone=public --add-port=1400/tcp --permanent
- sudo firewall-cmd --zone=public --add-port=1443/tcp --permanent
After reloading the integration, the subscription error has not appeared and the controls are now much more responsive.