Well, one solution is to have a VPN server on the internet and your FreeBSD machine connects to it. Then if you connect to the VPN, you reach your server.
I'd do it with OpenVPN. The Server is connected to the VPN server all the time, the routing is configured to only route the subnet you use inside VPN, so everything else is locally routed. On the OpenVPN server, allow client-client communication.
There is a guide about OpenVPN on Digitalocean:
https://www.digitalocean.com/commun...t-to-a-private-openvpn-server-on-freebsd-10-1