I think i got a solution afer tinkering about with the configuration:
Under synchronization options in the configuration file, the bbox should cover the whole area you intend to work from. Failure to do so ensures that the Geopackage doesn't retrieve any features outside the bbox during synchronization. - this is how i lost my geopackage edits after synchronization.
To deal with the issue on Internal and external IP, i was able to synchronize over external IP by using internal IP for get endpoints and external IP for post endpoints in the getCapabilities, getFeature, transactions, describeFeatureType properties. And configuration url, blob url all set to the extenal IP. I still have synchronization challenges when i set the synchronization mode to once but this is not a big deal for now.