Body:
LocalDevVPN version: 1.3.0
iOS version: 26.6.1
Device/carrier: iPhone 17 Pro / Verizon
Interface CIDR: 10.7.1.1/32
Peer CIDR: 10.7.1.1/32 (as shown in-app — note this matches the interface
CIDR rather than the 10.7.0.1/32 peer documented elsewhere; worth
double-checking this is really what 1.3.0 displays, or flag if that's
a display bug)
When LocalDevVPN starts while Wi-Fi is active, a client on the same
iPhone can reach a device-local service through the tunnel. Whe
disabled and the tunnel is started fresh on cellular, LocalDevVPN still
reports connected but the same peer endpoint is unreachable.
Reproduced with the following matrix (five conditions, each fro
tunnel stop):
| # |
Wi-Fi |
Cellular |
Tunnel start timing |
Result |
| 1 |
On |
On |
Start after Wi-Fi stable |
Works end to end (baseline) |
| 2 |
Off |
On |
Start only after Wi-Fi off |
Tunnel connected; |
| 3 |
On→Off |
On |
Tunnel kept running through the transition |
Same failure |
| 4 |
On→Off |
On |
Tunnel stopped and restarted after transiti |
|
| 5 |
Off |
Off |
Airplane Mode, tunnel started fresh |
Tunnel itself never reaches connected |
Rows 2–4 fail identically regardless of restart timing relative to the
Wi-Fi→cellular transition, which suggests this isn't a reconnec
timing issue. Row 5 is a distinct failure (no interface at all prevents
the tunnel from connecting in the first place), separate from t
cellular-specific routing failure in rows 2–4.
Could the system routing table be superseding the included /32 route on
cellular? Apple documents NETunnelProviderProtocol.enforceRoute
making included routes take precedence, and LocalDevVPN currently leaves
it at its default (false). I can help test a build that sets
enforceRoutes = true, or adds packet-flow diagnostics, if that's useful —
I don't have a paid Developer Program account so can't build/si
Network Extension target myself to test it directly.
No payload inspection or remote VPN server is involved; this is the
existing device-local packet-swap use case.
Body:
LocalDevVPN version: 1.3.0
iOS version: 26.6.1
Device/carrier: iPhone 17 Pro / Verizon
Interface CIDR: 10.7.1.1/32
Peer CIDR: 10.7.1.1/32 (as shown in-app — note this matches the interface
CIDR rather than the 10.7.0.1/32 peer documented elsewhere; worth
double-checking this is really what 1.3.0 displays, or flag if that's
a display bug)
When LocalDevVPN starts while Wi-Fi is active, a client on the same
iPhone can reach a device-local service through the tunnel. Whe
disabled and the tunnel is started fresh on cellular, LocalDevVPN still
reports connected but the same peer endpoint is unreachable.
Reproduced with the following matrix (five conditions, each fro
tunnel stop):
Rows 2–4 fail identically regardless of restart timing relative to the
Wi-Fi→cellular transition, which suggests this isn't a reconnec
timing issue. Row 5 is a distinct failure (no interface at all prevents
the tunnel from connecting in the first place), separate from t
cellular-specific routing failure in rows 2–4.
Could the system routing table be superseding the included /32 route on
cellular? Apple documents NETunnelProviderProtocol.enforceRoute
making included routes take precedence, and LocalDevVPN currently leaves
it at its default (false). I can help test a build that sets
enforceRoutes = true, or adds packet-flow diagnostics, if that's useful —
I don't have a paid Developer Program account so can't build/si
Network Extension target myself to test it directly.
No payload inspection or remote VPN server is involved; this is the
existing device-local packet-swap use case.