I can route to any of the IPs used by my #Unifi gateway over Wireguard, and all the IPs used by the cameras. The web URIs work fine for all the above, and the Unifi Console app works, but the Unifi Protect android app won't. Just throws vague errors, won't even tell me what it's trying to talk to (despite being a product for prosumer/small biz networks?)

As I suspected, they literally hardcode CIDR blocks and other assumptions into the app:

[luna@lunar-exploration-module com.ubnt.unifi.protect]$ rg "192.168" . ./smali_classes5/com/ui/unifi/core/base/utils/StringExtensionsKt.smali 39: const-string v0, "^127.*|^10.*|^172.1[6-9].*|^172.2[0-9].*|^172.3[0-1].*|^192.168.*"

@LunaRogue can you rebuild an unsigned copy of the app with that string changed for your use case?
@randominternetuser That was the thought, yeah. Doable in theory, though I'd also need to figure out and patch whatever is going on that prevents this from working even when IPs in that range are routing.

For now, looking at trying a different NVR because of other limitations in their stack.