Repository navigation
iOS client (self-hosted): shows Connected via relay, inbound traffic works, but the iPhone's own outbound traffic never enters the tunnel #8064
Replies: 2 comments 6 replies
|
The packet captures are the most useful part of this report. Since Mac → iPhone traffic works and the phone replies, I wouldn't start by troubleshooting STUN or the relay. That path is clearly doing at least some work. I'd try to isolate where a connection initiated on iOS disappears. First, use a known working service for the outbound test. The Safari test against Then I'd run three tests:
If fresh iPhone-originated packets are still absent, I'd look at the iOS Network Extension configuration next: specifically whether the active packet tunnel has a route covering There's also an important distinction between accepting return traffic and allowing new outbound connections. A stateful access policy could allow replies to Mac-initiated traffic while blocking new sessions from the phone. So I'd verify the direction of the applicable NetBird policies before concluding it's definitely an iOS routing bug. Given the regression window, I'd also pin the exact server image versions rather than The two results I'd be most interested in are:
Those should help separate route installation, policy enforcement, and packet processing without rebuilding the entire self-hosted setup. |
|
@goofball0687 NetBird’s iOS guide says to open the app and use Settings → Troubleshoot to collect a debug bundle: https://docs.netbird.io/help/troubleshooting-client/ios If the bundle you already uploaded came from that screen on the affected iPhone, you have already completed that collection step; clarify that for the maintainers. If it came from another device, collect the iPhone bundle after reproducing the failure. Keep the bundle in NetBird’s support workflow rather than pasting its contents publicly. AI-assisted reply; I work on Lisar Connect. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Before posting
Affected area
Mobile app
Deployment type
Self-hosted - advanced/custom deployment
Operating system or environment
iOS
NetBird version and upgrade status
Management / Dashboard / Signal / Relay: self-hosted docker-compose, images track
latest(Watchtower auto-update) — current release line v0.80.0 (published 2026-10-01). macOS client: 0.80.0 (works fine). VPS client: 0.75.1 as of Oct 1. iOS client: 0.4.1 (core ci-cb7ca8ef) on iOS 26.5Did this work before?
Yes, this worked before
Regression details
Worked until ~2026-10-01. Around that window the server picked up v0.79.0 (2026-09-18) / v0.80.0 (2026-10-01) via Watchtower and the iOS app updated via the App Store, so I can't pin the exact breaking change. Around Oct 2 even the Mac↔VPS leg briefly degraded (relayed → disconnected, then recovered on its own).
Summary
On my self-hosted setup the iOS client displays Connected (via relay) and other peers see it as Connected, but none of the phone's own traffic reaches the mesh. Traffic initiated toward the phone flows fine in both directions at the WireGuard level; the phone's own outbound traffic is never injected into the tunnel. All non-iOS clients are healthy at the same moment, so control plane, signal, and relay are working.
Current behavior
pingMac → iPhone mesh IP succeeds 5/5, 0% loss, 58–89 ms over relay (measured 2026-10-05). On 2026-10-01 a tcpdump on the server peer's tunnel interface captured ICMP echo request/reply pairs for server-initiated pings (avg RTT 111 ms) — the tunnel is bidirectional for inbound flows.https://100.108.164.93/(a peer's mesh IP typed directly into Safari — no DNS involved) times out. In a 240 s tcpdump on the server peer's tunnel interface during that test (2026-10-01), zero packets sourced from the phone's mesh IP were captured.ICE candidate (Local/Remote): -/-, even on home Wi-Fi. Relay latency was ~3 s avg on Oct 1 and ~72 ms on Oct 5.This looks like the iOS client stops injecting its own outbound traffic into the tunnel after establishing it — consistent with the Network Extension not applying routes/selectors for the phone's own traffic.
Expected behavior
The phone's own traffic (Safari, apps) routes into the NetBird tunnel, and I can reach peers and self-hosted services over the mesh the same way the macOS client can.
Steps to reproduce
netbird status -d→ the iPhone peer showsStatus: Connected,Connection type: Relayed,ICE candidate (Local/Remote): -/-.ping <iphone mesh IP>→ replies (tunnel works inbound).https://<server-peer mesh IP>/directly in Safari → times out.wt0) filtered on the phone's mesh IP while the phone tries to load → only server-initiated pings appear; nothing from the phone's own browsing.Environment and topology
Three peers in one self-hosted network:
Status output from the Mac (2026-10-05, public keys and public IPs redacted):
(Mesh IPs are 100.108.0.0/16 CGNAT addresses internal to the mesh; I kept them because the raw-IP repro depends on them.)
Self-hosted details, if available
rels://…:443via WebSocket), and STUN (stun:…:3478) all on one domain behind TLS.latestwith Watchtower; exact container versions are not readable from my clients — happy to pull them from the host on request.Logs, status output, or debug evidence
Packet-level evidence (2026-10-01, tcpdump on the server peer's
wt0): server-initiated pings to the phone appear as request/reply pairs (avg RTT 111 ms); during a 240 s window in which the phone tried to load the server peer's raw mesh IP in Safari, zero packets sourced from the phone's mesh IP were captured. Details under Current behavior.Debug bundle: created with
netbird debug for 1m -AS -Uon the Mac (2026-10-06, anonymized by the-Aflag) and uploaded — upload file key:The trace window includes a 20-ping Mac→iPhone sequence over the relayed connection (0% loss, avg 111 ms). iOS app logs can be exported from the app if needed.
(Mesh IPs are 100.108.0.0/16 CGNAT addresses internal to the mesh; kept because the raw-IP repro depends on them. The ICE endpoint IPs above are already anonymized by the CLI.
Related issues or discussions
This report adds packet-capture evidence that the failure is one-directional: inbound-initiated traffic traverses the tunnel fine, the phone's own outbound is never injected.
Impact
The iPhone is unusable as a NetBird client — no self-hosted service is reachable from it — while the same network works for macOS/Linux. Currently reproducible on demand.
Additional context
Happy to run further captures or export iOS client logs if useful.
All reactions