RoonRemotes (OSX & Android) can't see RoonServer (Centos7) from different subnet

@support I have a newly built Centos7 box that I have just installed RoonServer on. Install was fairly straightforward after resolving the ffmpeg dependency and looks to be running correctly:

[root@XXXXXX ~]# systemctl status roonserver
● roonserver.service - RoonServer
   Loaded: loaded (/etc/systemd/system/roonserver.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2016-12-29 19:34:01 MST; 20min ago
 Main PID: 1230 (start.sh)
   CGroup: /system.slice/roonserver.service
           ├─1230 /bin/bash /opt/RoonServer/start.sh
           ├─1245 /opt/RoonServer/Mono/bin/RoonServer --debug --gc=sgen --server RoonServer.exe
           ├─1965 /opt/RoonServer/Mono/bin/RoonAppliance --debug --gc=sgen --server RoonAppliance.exe -watchdogport=42489
           ├─1983 /opt/RoonServer/Server/processreaper 1965
           └─2529 /opt/RoonServer/Mono/bin/RAATServer --debug --gc=sgen --server RAATServer.exe

Dec 29 19:34:01 fuggles.localdomain systemd[1]: Started RoonServer.
Dec 29 19:34:01 fuggles.localdomain systemd[1]: Starting RoonServer...
Dec 29 19:34:01 fuggles.localdomain start.sh[1230]: Initializing
Dec 29 19:34:01 fuggles.localdomain start.sh[1230]: Started
Dec 29 19:34:06 fuggles.localdomain start.sh[1230]: Running

I have also installed RoonRemote for both OS X and Android, but neither can connect to my RoonServer instance, even if I enter it’s IP address manually.

I’ve double-checked that the firewall is off:

[root@fuggles ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

Any debugging suggestions?

Michael

Maybe an obvious question, but is your server accessible from your OS X machine? Can you ping it?

I just installed CentOS7 in a Virtualbox (yeah, I was bored… ;-)). After disabling firewalld, RoonServer was available immediately.

Yes, in fact I did the installed ssh’d to the Centos box from the OS X laptop.

Could you have a look at the log file of RoonServer?
It’s located in: /var/roon/RoonServer/Logs

Would be good to look at the beginning of the file, just after starting RoonServer.

I restarted RoonServer on the Centos7 box and then restart RoonRemote on OS X. Here’s the log - 10.0.20.144 is the IP of the Mac so RoonServer is seeing some sort of client connection…

[root@fuggles Logs]# cat RoonServer_log.txt
12/30 06:16:17 Info: Starting RoonServer v1.2 (build 165) stable on linuxx64
12/30 06:16:17 Trace: Checking if we are already running
12/30 06:16:17 Trace: Nope, we are the only one running
12/30 06:16:17 Info: Is 64 bit? True
12/30 06:16:17 Info: Command Line Argument: -watchdogport=36591
12/30 06:16:17 Info: [media] resolved oop decoder to /usr/bin/ffmpeg
12/30 06:16:17 Trace: [realtime] fetching time from NTP server
12/30 06:16:17 Info: [broker] starting fe57d355-a82f-4b44-8a81-4afb03241360
12/30 06:16:17 Info: [broker/locations] added location ‘Internet Media’ (Type=Internet) [e268f098-04c4-4e65-af3f-38ba3c3fcecb]
12/30 06:16:17 Info: [broker/locations] Status changed: ‘Internet Media’ (Type=Internet) [e268f098-04c4-4e65-af3f-38ba3c3fcecb] is online
12/30 06:16:17 Info: [broker/locations] added location ‘Metadata Service’ (Type=MetadataService) [13769258-b70b-4243-b1d6-bd46e8257ba8]
12/30 06:16:17 Info: [broker/locations] Status changed: ‘Metadata Service’ (Type=MetadataService) [13769258-b70b-4243-b1d6-bd46e8257ba8] is online
12/30 06:16:17 Info: [broker/locations] added location ‘Offline’ (Type=Offline) [f1e4b43f-f643-47ba-b875-fd93b32a6006]
12/30 06:16:17 Info: [broker/locations] location ‘Offline’ (Type=Offline) [f1e4b43f-f643-47ba-b875-fd93b32a6006] is offline
12/30 06:16:17 Trace: [brokerserver] Enabling broker server
12/30 06:16:17 Info: [broker/distributed] HTTP server listening on port 9100
12/30 06:16:17 Trace: [broker/backups] initializing
12/30 06:16:17 Trace: [broker/accounts] file not found
12/30 06:16:17 Trace: [realtime] Got time from NTP: 12/30/2016 1:16:17 PM (3692092577938ms)
12/30 06:16:17 Trace: [broker/accounts] Data updated. AccountStatus=NoAccountConfigured MachineStatus=NeedsAccount UserId=
12/30 06:16:17 Trace: [realtime] Updated clock skew to -00:00:00.0452170 (-45.217ms)
12/30 06:16:18 Info: [libraryapi] loaded first run time 12/30/2016 2:00:29 AM
12/30 06:16:18 Info: [transport/raatserver] [runner] Start or Connect…
12/30 06:16:18 Info: ConnectOrStartAndWaitForExit RAATServer
12/30 06:16:18 Info: [broker/dropbox] no account configured
12/30 06:16:18 Info: [transport/raatserver] [runner] Status: Started
12/30 06:16:18 Info: connected to watchdogport: 36591
12/30 06:16:18 Info: [remoting] loaded protocol hash 6508e918f0f11c137dc6cd1f4e4158254a23878e from /opt/RoonServer/Appliance/Roon.Broker.Api.Remote.dll
12/30 06:16:18 Info: [broker/distributed] Remoting server listening on port 9101
12/30 06:16:18 Trace: [geoip] GET XXX
12/30 06:16:18 Trace: [httpcache] loaded 0 cache entries from /var/roon/RoonServer/Cache/httpcache_2.db, current: 0mb / 128mb
12/30 06:16:18 Info: [music] first pass through media thread is done
12/30 06:16:18 Info: [loadstatus] IsLibraryLoading True => False
12/30 06:16:18 Info: [transport] initializing
12/30 06:16:18 Info: [loadstatus] IsTransportLoading True => False
12/30 06:16:18 Info: [loadstatus] IsStartup True => False
XXX
12/30 06:16:18 Info: [stats] 1584mb Virtual, 59mb Physical, 3mb Managed, 0 Handles, 23 Threads
12/30 06:16:28 Trace: Successful POST response from https://push.roonlabs.com/push/1/connect
12/30 06:16:28 Trace: [push] connecting to 54.81.187.216:9200
12/30 06:16:28 Trace: [push] connected
12/30 06:16:33 Info: [stats] 1987mb Virtual, 79mb Physical, 14mb Managed, 0 Handles, 29 Threads
12/30 06:16:47 Trace: [appupdater] initial check for updates
12/30 06:16:47 Debug: Checking for updates: XXX
12/30 06:16:48 Debug: [appupdater] Update not needed
12/30 06:16:48 Info: [stats] 2053mb Virtual, 80mb Physical, 14mb Managed, 0 Handles, 30 Threads
12/30 06:16:49 Info: Flushing kart data to server
12/30 06:16:50 Debug: server said:
12/30 06:17:03 Info: [stats] 2054mb Virtual, 81mb Physical, 15mb Managed, 0 Handles, 28 Threads
12/30 06:17:18 Info: [stats] 2054mb Virtual, 81mb Physical, 15mb Managed, 0 Handles, 28 Threads
12/30 06:17:24 Info: [brokerserver] Client connected: 10.0.20.15:61024
12/30 06:17:24 Trace: [SOOD] Adding User IP 10.0.20.15
12/30 06:17:24 Warn: [remotingserver] failed to deserialize message: FSE.InvalidDocumentVersionException: Invalid FSE Document Version: 539959368
at FSE.BinaryReader.Read () [0x00271] in /home/roon/roon/fse/csharp/fse_binreader.cs:411
at Messaging.FSEMessageDecoder.DecodeCommon (System.Int32& requestId, System.Boolean& isFinal) [0x0009a] in /home/roon/roon/messaging/csharp/Messaging/messaging_fse.cs:161
at Messaging.FSEMessageDecoder.DecodeMessage () [0x00000] in /home/roon/roon/messaging/csharp/Messaging/messaging_fse.cs:202
at Messaging.FSEMessageDecodeSession.DecodeBinaryMessage (System.Byte[] s) [0x00039] in /home/roon/roon/messaging/csharp/Messaging/messaging_fse.cs:321
at Messaging.FSEMessageHelper.DecodeBinaryMessage (System.Byte[] s) [0x00014] in /home/roon/roon/messaging/csharp/Messaging/messaging_fse.cs:379
at Sooloos.Broker.Remoting.RemotingServer.OnRequestReceived (System.Int32 cmd, System.Nullable`1[T] rid, System.Byte[] body) [0x00118] in /home/roon/roon/Broker/Remoting/remoting_server.cs:118
12/30 06:17:24 Warn: [remotingserver] unrecognized server cmd 32
12/30 06:17:24 Warn: [remotingserver] unrecognized server cmd 19
12/30 06:17:24 Warn: [remotingserver] unrecognized server cmd 48
12/30 06:17:24 Warn: [remotingserver] unrecognized server cmd 39
12/30 06:17:24 Warn: [remotingserver] unrecognized server cmd 32
12/30 06:17:24 Warn: [remotingserver] unrecognized server cmd 37
12/30 06:17:24 Warn: [remotingserver] unrecognized server cmd 46
12/30 06:17:24 Warn: [remotingserver] unrecognized server cmd 47
12/30 06:17:24 Warn: [remotingserver] unrecognized server cmd 9
12/30 06:17:24 Warn: [remotingserver] unrecognized server cmd 47
12/30 06:17:25 Info: [brokerserver] Client connected: 10.0.20.15:61025
12/30 06:17:25 Trace: [SOOD] Adding User IP 10.0.20.15
12/30 06:17:33 Info: [stats] 2057mb Virtual, 108mb Physical, 16mb Managed, 0 Handles, 30 Threads
12/30 06:17:48 Info: [stats] 2057mb Virtual, 108mb Physical, 16mb Managed, 0 Handles, 29 Threads
12/30 06:18:03 Info: [stats] 2057mb Virtual, 108mb Physical, 16mb Managed, 0 Handles, 29 Threads
12/30 06:18:12 Info: [brokerserver] Client disconnected: 10.0.20.15:61025
12/30 06:18:18 Info: [stats] 2057mb Virtual, 108mb Physical, 17mb Managed, 0 Handles, 28 Threads
12/30 06:18:33 Info: [stats] 2058mb Virtual, 109mb Physical, 17mb Managed, 0 Handles, 28 Threads
12/30 06:18:48 Info: [stats] 2058mb Virtual, 109mb Physical, 17mb Managed, 0 Handles, 28 Threads
12/30 06:19:03 Info: [stats] 2058mb Virtual, 109mb Physical, 17mb Managed, 0 Handles, 28 Threads
12/30 06:19:18 Info: [stats] 2058mb Virtual, 109mb Physical, 18mb Managed, 0 Handles, 28 Threads

I’m not familiair with anything related to Sooloos, but something goes wrong there. Can you describe your complete topology?

That’s a little odd, huh. I don’t have any Meriian/Soolos hardware.

Here’s what I do have:

10.0.0.3 - Centos7-64 running RoonServer
10.0.20.144 - RaspberryPi 2/HifBerry Digi+ running RoonBridge
10.0.20.15 - Macbook Air/OSX 10.11.6 running RoonRemote
10.0.20.40 - Nexus 7 running Roon Android Client

10.0.0 is my wired ethernet subnet, 10.0.20 is my wifi subnet. I use a pfSense router/firwall to manage the LAN/WAN/WiFi networks - no exotic config there - my previous LMS setup “just worked”.

I’m sure I’ve read somewhere core & remotes need to be on the same subnet.

That would be a regrettably poor design choice…

Ugh… This thread doesn’t give me much hope: Remote control from another LAN

Not defending it or otherwise, but my guess is the vast majority of the population have less than 250 computers in their home and don’t have a need for multiple subnets or enterprise level networking infrastructure. Perhaps supporting multiple subnets adds other overheads for the Roon team, I’m not sure.

Are you able to move your core to the 10.0.20 subnet just to try?

Well in my case it’s not the # of systems but need to route between wired and wireless subnets.

I have encountered this same issue in trying to remote from a different subnet. The failure is universally consistent with linux cores, but it works most of the time with windows or mac cores.

I’ve gone as far as to run a sniffer on both sides of the connection and the end result of that showed that while the linux box was seeing the connection request it wasn’t always sending out the proper response. In comparing packet traces between linux and windows cores it showed that when the connection worked the initial response packet from the windows core was different and apparently contained the information needed for the remote to connect.

I did document all of this and provided the information to the Roon team but haven’t followed up on it. Perhaps @brian or @support can comment.

@AMP - Thank you for your reply.

Curious if you had to set up a IGMP Proxy to get your working (Windows) setup to function correctly as some other threads have suggested?

I “don’t do Windows” so I guess it’s back to LMS until this gets resolved :^(

mjc

Nope. I avoid anything that makes my network multicast-aware as that has a tendency to break a lot of devices with poorly implemented UPnP code (which is most of what’s available on the market :slight_smile: )

In theory setting up a multicast router (IGMP gateway) would allow for automatic device discovery across subnets and that may work in your application. In my application I consider the network that has the core as public (it’s part of the store) and the machines that I’m using for maintenance live on a private lan. I don’t want to open up anything that’s going to automatically route discovery traffic between the two.

When you enter an IP address the remote sends a unicast packet to that address and waits for a response. The Core then responds to the IP of the remote. The linux cores always send one response packet, but they never send the second response packet that includes a hash that the remote is looking for.

Thanks - hopefully this is a straightforward fix for the Roon folks.