Your VPN is fine. iOS swapped the address.
Hey,
Here is a failure that survives every reasonable thing you would check.
One app on a phone, on cellular, talking to a machine on my own VPN. It pairs. It loads. Then the one connection that matters times out, every time, only on cellular, fine on Wi-Fi. The VPN is up. The server is listening. A browser on the same phone opens the exact address and port the app cannot reach. Everything checks out, and one connection still dies with a timeout that names nothing.
It took a packet capture to see it. On an IPv6-only cellular network, the OS was quietly rewriting my VPN address into a synthesized one that routed straight out of the tunnel, and only one of the app's two code paths was affected. Nothing was misconfigured. Nothing logged an error. The bug lived in an address I was never shown.
I wrote up the whole thing: the fingerprint, how to capture it, and how to read a synthesized address by eye.
→ Your VPN Is Fine. iOS Swapped the Address.
That is the first of a short run I am publishing this week, all variations on one theme: the signal you trust is not the signal you need.
Coming in the next few days:
- The Log Printed Exactly What I Wanted. The Fix Was Still Wrong. Four times in one day, a true signal walked me toward a wrong conclusion.
- Merged Is Not Shipped. A bug fixed upstream a year ago that never reached users, because of one unmoved pointer.
- Your Model File Is Untrusted Input. Sixty-five bytes that crash llama.cpp, and a bounds check that looked correct and was not.
They will go up on the site as they land. I will keep these letters short.
Harrison