I've opened port 1700 through the clients router and set the MS48 with a static IP with no change.
Further troubleshooting with an independent internet connection shows the issue is not with the router.
I tried installing the Chirpstack server and now heartbeats seem to be coming through to TTN.