Skip to content

[BUG][iOS] TUN forwards only port 443 — connections to other ports (Telegram 80/5222, Ookla 8080) are silently dropped and never reach the server #1933

Description

@zebrr

Environment

  • Karing 1.2.24.2709 (iOS)
  • iOS 26.6.1, iPhone — also reproduced on the previous version
  • TUN enabled, rule mode, [Proxy Traffic] Resolve Channel = FakeIP (defaults, unchanged for months)
  • Single manually added outbound (not a subscription): VLESS + REALITY + XHTTP, server port 47002
  • Server: self-hosted Xray 26.3.27, no routing rules at all ("routing": null, one freedom outbound)

Summary

On iOS, only connections to destination port 443 leave the tunnel. Connections to any other destination port never reach the proxy server — they are dropped silently inside Karing, with no entry in the server access log and no error in any log on either side.

Practical impact: Telegram never connects (MTProto uses 443/80/5222 to bare DC IPs), Ookla Speedtest never runs a measurement (test servers are on 8080), and the Roborock app loads its HTTPS API but cannot reach the vacuum or load the map (device channel is not on 443).

Reproduction

  1. Karing on iOS with the setup above, connected.
  2. Run this scenario: YouTube 60 s → Ookla Speedtest (full run) → Telegram 60 s → Roborock 30 s.
  3. Read the proxy server's access log for that window.

Result — 93 seconds, 69 connections, 37 unique destinations:

port 443    69
port 80      0
port 5222    0
port 8080    0

Telegram DC (91.108./149.154./185.76.151.)     0
Ookla test servers (:8080)                     0
YouTube                                       15   OK
Roborock / Xiaomi                             10   HTTPS API only, all on :443

Roborock is the clearest case — the app breaks partially. Its HTTPS endpoints go through:

api-ru.roborock.com:443
ruiot.roborock.com:443
wood-ru.roborock.com:443
ksyru0-eco.fds.api.xiaomi.com:443
roborocklimited.zendesk.com:443

…so the app opens and shows the account, but the device channel never connects and the map never loads.

Controls

1. Same link in a different client, same phone, 90 seconds later. The identical outbound link was imported into another iOS client (Happ, xray-core) and the same scenario was repeated:

                        Karing        other client
connections                 69                 149
unique destinations         37                  62

port 443                    69                 114
port 80                      0                  12
port 5222                    0                  12
port 8080                    0                  11

Telegram DC                  0                  37
Ookla test servers           0                  11

Telegram, Speedtest, YouTube and Roborock all work. This excludes the server, the link, the protocol and the network path.

2. Second iPhone. Another iPhone with the same Karing version, same settings and the same link works normally — Telegram, Speedtest and Roborock all fine.

3. Already tried, no change: reinstalling Karing; Reset cache and Reset network inside Karing; removing every other VPN profile from iOS; switching rule → global mode; four different servers (three providers, two countries, direct and via relay).

4. Other platforms. The same Karing account and the same servers work correctly on macOS and Windows.

Expected

Connections to destination ports other than 443 are forwarded to the outbound like any other traffic.

Actual

They never leave the device. The server sees nothing, and neither side logs an error.

Possibly related

#1845macOS: non-TLS TCP payload to ports 443/5222 is silently black-holed. Same shape of failure (TLS fine, everything else silently swallowed, nothing in the logs), reported for macOS.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions