I want to give my iPhone (iOS7) a hostname, which will automatically resolve from anywhere as long as the phone is online. My iPhone can be jailbroken as part of the solution; that's not preventative. I'd prefer that the hostname be dynamically updated, but if not, I can script the polling/constant update. The goal is to not have to manually figure out/enter IP or routing information in order to remotely connect to my phone, regardless of whether the phone is connected via wifi or cellular data.
What I've looked into:
I've seen a few links as to how to automatically have it update DynDNS or similar with its local IP address, but that's not terribly useful, since I'd like to be able to access it remotely (not on the same LAN). There are sites which I could scrape that give me my external IP, but a lot of people seem to be of the opinion that cellular providers do NAT or similar IP consolodation, so that would invalidate the resolution of the hostname when the phone wasn't on wifi.
I could also run an always-on VPN from the phone, and have it either connect or proxy through a computer I control, one with an external IP, and have that computer NAT requests for the hostname to the iPhone. I know how to set up a VPN, but I don't know enough about how VPNs work over cellular data with an iPhone to set that up; if anyone knows more about this solution, please mention it in an answer.
I could also run a constant SSH reverse proxy or something like that (which sets up an always-open socket, push notification style, by initiating on the phone and keeping it open with the remote peer), and resolve the hostname on the peer and then somehow relay requests to the phone. Like the VPN idea, I know about this in theory, but don't really know where to start looking for info on how to configure it.
How do I give my (optionally jailbroken) iPhone an externally resolvable, preferably dynamically updated hostname on both wifi and cellular data?