Tours

Die iOS-App im Detail

13 Min. LesezeitView as markdown ↗

Das ist der Tiefgang: jeder Bildschirm von URnetwork auf iPhone und iPad, die Einstellungen mit den ausgelieferten Standardwerten und das Fehlerbehebungswissen, das sonst im Kopf eines Support-Engineers lebt. Für den Weg von der Installation zur Verbindung siehe Erste Schritte auf iOS; für das Netzwerkdesign dahinter den Überblick.

Wie die App gebaut ist

Ein Xcode-Projekt erzeugt sowohl die iOS- als auch die macOS-App. Auf deinem Gerät läuft sie als zwei Prozesse:

  • Die App (Bundle network.ur) ist die Oberfläche, die du siehst.
  • Die Tunnel-Extension (network.ur.extension) ist eine Network Extension (NEPacketTunnelProvider), die iOS selbst startet und beaufsichtigt. Dein Datenverkehr bewegt sich durch diesen Prozess, nicht die App: Er wickelt, was dein Telefon sendet, in Verschlüsselung (den „Tunnel“), bevor es das Gerät verlässt. Vier Dinge bleiben per Konfiguration außen vor, wie bei jedem wohlerzogenen iOS-VPN: dein lokales Netz (Drucker, AirPlay, Heimgeräte), Apple-Push-Benachrichtigungen, Carrier-Dienste wie WLAN-Anrufe und Datenverkehr zu deinen eigenen Apple-Geräten in der Nähe.

Die beiden sprechen über ein lokales Device-RPC — nach einem Neustart der App übernimmt sie also den laufenden Tunnel, statt ihn abzureißen und neu zu beginnen. Diese Aufteilung ist der Grund, warum das VPN weiterläuft, wenn du die App wegwischst, und warum iOS dich beim ersten Mal eine VPN-Konfiguration genehmigen lässt: Die Extension ist eine systemverwaltete Komponente. Diese Genehmigung ist Apples Standard-Zustimmungsschritt für jede VPN-App. Sie gewährt keine weitere Kontrolle über dein Telefon und bleibt sichtbar, und widerrufbar, in Einstellungen → Allgemein → VPN & Geräteverwaltung.

Die App braucht iOS 16.6 oder neuer, und alles ist Open Source auf github.com/urnetwork. Kein unabhängiges Audit deckt das Protokoll oder den Server-Code des Operators ab, wo die Privacy-Zusagen liegen. Zwei externe Prüfungen aus 2025 decken andere Flächen ab: ein Penetrationstest der Web-Anwendung und API und eine MASA-AL2-Prüfung der Android-App durch die Leviathan Security Group, die bestanden wurde. Keine der beiden deckt die iOS-App ab. Das Bedrohungsmodell verzeichnet beide und ihre Grenzen.

Die vier Tabs

Die App ist vier Tabs: Verbinden (Connect), Konto (Account), Bestenliste (Leaderboard) und Support.

Verbinden

Der Hauptbildschirm, von oben nach unten:

  • Der Globus. Ein Live-Bild deiner Sitzung. Verbunden zeigt er die Standorte, aus denen dein Datenverkehr austritt: wo das Internet dich sieht. Dein Client hält mehrere Provider zugleich, üblicherweise drei bis acht, in zwei Fenstern nebeneinander (ein Qualitätsfenster, das HTTPS bevorzugt, und ein Geschwindigkeitsfenster für den Rest), und pinnt jede Website auf einen. Das Bild ist mit Absicht plural, während jede einzelne Website weiterhin eine stabile Adresse sieht. Der Überblick erklärt das Provider-Fenster vollständig.
  • Der Verbinden-Button. Ein Tipp zum Verbinden oder Trennen.
  • Der Drawer. Ein einklappbares Sheet unter dem Button mit deinem gewählten Standort, den Verbindungsoptionen (Connect options), Live-Traffic-Diagrammen und dem Schalter Werbung und Tracker blockieren (Block ads and trackers). Zieh es hoch für den vollen Inhalt; ein Tipp auf den Verbinden-Tab, während du schon darauf bist, klappt den Drawer wieder ein. Verbindung teilen ist nicht hier. Es liegt in Konto → Einstellungen.

Tipp auf die Standortkarte, um das Sheet Verfügbare Provider (Available providers) zu öffnen. Es öffnet mit deinen eigenen Geräten, „Bester verfügbarer Provider“ (Best available provider) und Ländern mit einer Live-Zahl der online befindlichen Provider. Tipp einen Ortsnamen in „Provider suchen“ (Search providers), und die Ergebnisse bekommen einen Abschnitt Städte (Cities): Suchen ist der Weg zur Stadtebene, nicht Scrollen. Ein Standort wird nur gelistet, solange dort das Gerät eines Mitglieds online ist, und die Plattform leitet die Stadt aus der beobachteten Verbindung ab, statt der eigenen Angabe eines Providers zu glauben; eine Adresse, die nach Rechenzentrum oder VPN aussieht, wird herabgestuft statt geglaubt. „Bester verfügbarer“ wählt die bestbewerteten Provider in deiner Nähe; ein bestimmter Standort lässt dich dort erscheinen (nahe Exits sind meist am schnellsten, denn Entfernung kostet Latenz). Provider sind andere Mitglieder, die übrige Bandbreite teilen. Dein Datenverkehr erreicht sie bereits verschlüsselt, denn das Web ist HTTPS, bevor es je in den Tunnel eintritt — ein Provider sieht also, wohin der Datenverkehr geht, den er trägt, wie ein Internetanbieter, aber nicht seine Inhalte, und nicht deine echte Adresse.

Weiter unten im Drawer sitzen vier Verbindungsoptionen:

EinstellungStandardWirkungHauptkosten
Verbindungsmodus (Connection Mode)AutoAuto fährt beide Provider-Fenster und routet jedes Paket ins passendeWeb oder Streaming legen sich auf ein einzelnes Fenster fest
Feste IP (Fixed IP)AusVerengt das Fenster auf einen Provider, sodass jede Website eine stabile Adresse siehtGibt den pluralen Exit auf
Starke Anonymisierung (Strong Anonymization)AnVerbietet einen direkten Client-zu-Provider-Pfad, sodass der Provider nie deine echte IP siehtLangsamer als der direkte Pfad
Post-Quanten-Verschlüsselung (Post Quantum Encryption)AnVersiegelt die Sitzung Ende-zu-Ende bis zum Provider, sodass der Operator Chiffretext trägtÜberspringt nicht versiegelbare Provider
  • Feste IP ist außerhalb von Auto wählbar.
  • Starke Anonymisierung auszuschalten ist der Opt-in in den Direktmodus: Der Anonymisierungs-Hop fällt weg, dein Client spricht direkt mit dem Provider, der Durchsatz steigt, und dieser Provider sieht jetzt deine echte Adresse. Der Standard schützt deine Identität; gib sie nur bewusst für Geschwindigkeit her.
  • Werbung und Tracker blockieren, im selben Drawer, ist aus, bis du es einschaltest, und filtert alles, was der Tunnel trägt.
  • Zwischen den beiden An-Standardwerten erfährt ein Provider nie, wer du bist, und der Operator liest nie, was du sendest. Beides gilt, ohne eine Einstellung anzufassen — keine einzelne Partei hält also zugleich deine Identität und deine Aktivität.

Diese zwei Schalter und der ausgelieferte Standard sind das ganze Bild:

ModusOperator siehtProvider siehtStandard und Verfügbarkeit
Relay, versiegeltdein Konto und deine Quellverbindung, auf welchen Providern du bist, und Chiffretext mit Timing und VolumenZiele, die er nach außen trägt, und eine Geräte-/Vertrags-ID, nicht deine echte IPder ausgelieferte Standard: Post-Quanten-Verschlüsselung, an im Connect-Drawer
Relay, Standarddein Konto und deine Quellverbindung, auf welchen Providern du bist, und die Ziele und Paketbytes darinZiele, die er nach außen trägt, und eine Geräte-/Vertrags-ID, nicht deine echte IPopt-in: Post-Quanten-Verschlüsselung ausschalten
Direktweniger Relay-Beteiligungdeine echte IP und die Ziele, die er nach außen trägtopt-in: Starke Anonymisierung ausschalten

Lies die erste Zeile als den Ort, an dem du standardmäßig bist. Solange Post-Quanten-Verschlüsselung an ist, scheitert der Client geschlossen: Einen Provider, mit dem er keine Sitzung versiegeln kann, überspringt er, statt ihn im Klartext zu nutzen. Eine Nichtübereinstimmung kostet dich also diesen Provider, nicht deine Vertraulichkeit. In die zweite Zeile bringt dich erst das Ausschalten des Schalters. Noch zeigt keine App ein Versiegelt-oder-nicht-Urteil pro Verbindung; was dir sagt, wo du bist, ist der Schalter, nicht die Sitzung. Grenze: Nichts verifiziert, dass die dir angebotenen Provider voneinander oder vom Operator unabhängig sind, und der Operator kann selbst Provider betreiben. Das Bedrohungsmodell spielt diese Zeilen gegen benannte Angreifer durch, einschließlich eines feindseligen Operators, und benennt ausdrücklich, wo jede versagt.

Eigenes DNS

Unter den Details des Verbinden-Tabs liegt ein volles DNS-Bedienfeld. DNS ist das Telefonbuch des Internets, das Nachschlagen, das einen Namen wie ur.io in eine Netzwerkadresse verwandelt, und wer diese Anfragen beantwortet (der Resolver), sieht den Namen jeder Website, die du besuchst. Der Standard ist die sicherste Anordnung: verschlüsseltes DNS over HTTPS, aufgelöst durch den Tunnel. Alles andere ist ein Tausch, den du machen kannst:

  • DNS over HTTPS (remote). DoH, aufgelöst auf der fernen Seite des Tunnels. Der Standard, und der privateste: Der Resolver sieht die Adresse eines Providers, nicht deine.
  • DNS over HTTPS (local). DoH, direkt von deinem Gerät aufgelöst.
  • Unverschlüsseltes DNS (Unencrypted DNS, remote / local). Klassisches UDP-DNS, durch den Tunnel oder direkt vom Gerät, für Netze und Resolver, die es brauchen.
  • Lokaler DNS-Fallback (Local DNS fallback). Lässt einen lokalen Resolver mitlaufen, während der Tunnel startet, damit Namensauflösungen während des Handshakes nicht stocken. Ausgeschaltet löst DNS ausschließlich durch den Tunnel auf.

Die Resolver-Listen kannst du selbst bearbeiten (entfernte und lokale DoH-URLs, entfernte und lokale DNS-Server, IPv4 und IPv6). Zwei Annehmlichkeiten obendrauf:

  • Empfehlungen pro Land. Von den stärksten Einstellungen ist bekannt, dass sie in manchen Ländern nicht funktionieren. Verbindest du dich irgendwo mit einer bekannten Empfehlung, sagt es der Bildschirm und bietet ein „Empfohlene Einstellungen verwenden“ (Use recommended settings) in einem Tipp, und eine Ein-Tipp-Rückkehr zu den sichersten Standardwerten.
  • Vorgeschlagene Server (Suggested servers). Eine kuratierte Liste entfernter DNS-Server, mit den für dein verbundenes Land vorgeschlagenen in dessen Farbe markiert. Einen einzuschalten fügt ihn deiner entfernten Resolver-Liste hinzu.

Split-Regeln

Split-Regeln lassen dich bestimmten Datenverkehr am Tunnel vorbeirouten oder festpinnen, auf Domain- und IP-Ebene:

  • Verbunden zeigt der Bildschirm Live-Routing-Aktivität. Tipp auf eine Domain, um sie lokal zu routen (am Tunnel vorbei — diese Website sieht dann deine echte Adresse), oder halte sie auf einem einzelnen Provider, damit diese Website länger eine stabile Adresse sieht statt deines üblichen pluralen Exits. Nützlich für Banken und Logins, die jeden Adresswechsel anfechten.
  • Regeln gelten für den ganzen mit-assoziierten Netzwerk-Cluster rund um eine Domain — verwandte Hosts und CDN-Datenverkehr werden also zusammen erfasst, statt eine Subdomain nach der anderen zu lecken.
  • Regeln bleiben bestehen und lassen sich jederzeit vom selben Bildschirm entfernen.

Grenze: Split-Tunneling pro App gibt es auf iOS nicht (Android und Windows haben es). iOS gibt VPN-Apps keinen unterstützten Weg, Datenverkehr nach App ein- oder auszuschließen — auf iPhone und iPad arbeiten Split-Regeln also auf Domains und IPs, nicht auf Apps.

Verbindung teilen

Das Teilen deiner übrigen Bandbreite ist ein Vierfach-Wähler Verbindung teilen (Provide mode) in Konto → Einstellungen → Verbindungen, auf Nie (Never) gestellt, bis du es änderst:

ModusWas er trägt
Nie (Never)Nichts. Der Standard.
AutoÖffentlichen Datenverkehr, während du selbst verbunden bist; nur deine eigenen Geräte, wenn nicht
Immer (Always)Öffentlichen Datenverkehr, verbunden oder nicht
Netzwerk (Network)Nur die Geräte deines eigenen Netzwerks, unbezahlt. Das engste Teilen, das die App implementiert

Ein paar Grundregeln. Das Teilen nutzt nur WLAN, sofern du nicht Teilen über Mobilfunknetz erlauben (Allow providing on cellular network) im selben Abschnitt umlegst — es rührt deinen Datentarif also nie überraschend an. Es läuft im Tunnel-Prozess und arbeitet also weiter, während das Telefon untätig liegt. Der Datenverkehr, den du trägst, sind die verschlüsselten Sitzungen anderer: Du kannst ihn nicht lesen, und er kann dein Gerät nicht anfassen. Die Missbrauchsdurchsetzung läuft auf deinem Gerät am Ausgang, wo Datenverkehr Richtung Internet verlässt: BitTorrent und bekannte Angriffsmuster werden dort verworfen. Der Verwurf zeichnet nichts auf, kein Ziel, keine Domain, keine Inhalte — ein Klartext-BitTorrent-Treffer sendet dem Operator allerdings zusätzlich eine Markierung mit der Geräte-ID und einem Boolean, mehr nicht. Öffentlicher Datenverkehr, den du trägst, wird unter signierten Verträgen gemessen, und Provider nehmen am UR Protocol teil. ur.xyz dokumentiert, wie die Vergütung funktioniert.

Konto

Deine Identität und dein Tarif leben hier:

  • Tarif (Plan). Gratis oder Pro, dein verbleibendes Guthaben, der Upgrade-Pfad und eine laufende Summe dessen, was deine Verbindung für das Netzwerk getragen hat.
  • Guthaben-Code einlösen (Redeem Balance Code). Eine einmalige Datenzuteilung, ganz ohne Abo.
  • Profil, Einstellungen, Wallet. Die Einstellungen sind der tiefe Teil: Seedphrase, Anmeldemethoden, Gerätename, Verbindungen (Verbindung teilen, die Mobilfunk-Erlaubnis, der Kill Switch, Blockierte Standorte (Blocked locations): Länder, über die du nie austreten willst), Benachrichtigungen, Kontolöschung und ein Link „Nutzt das UR Protocol“ (Uses the UR Protocol) zu ur.xyz dafür, wie Provider vergütet werden.
  • Meine IP prüfen (Check my IP). Öffnet ur.io/ip, der Weg, von außerhalb der App zu bestätigen, dass dein Datenverkehr wirklich woanders austritt.
  • Post-Quanten-Identität (Post Quantum Identity). Das Panel unten, und der Weg zu den Identitäten der Provider, mit denen du verbunden bist.

Das Post-Quanten-Identitäts-Panel

Das Panel unten im Konto-Tab zeigt die Identität deines Geräts als Identicon (ein aus dem Schlüssel abgeleitetes Bild, leichter zu überfliegen als Hex), darunter Schlüssel-Hash und Client-ID, beide per Tipp kopierbar, ein Teilen-Sheet und ein Deck der Peers, mit denen du verbunden bist, das die volle Liste öffnet. Es benennt seinen eigenen Zweck: Sieht der Schlüssel eines Peers je anders aus als der lokal gespeicherte, ist dem Operator in der Mitte nicht zu trauen. Das macht die Blindheit des Operators prüfbar.

Die Verschlüsselung, die es benennt, ist der Schalter Post-Quanten-Verschlüsselung im Connect-Drawer, standardmäßig an — dein Client versiegelt Datenverkehr also von der ersten Verbindung an direkt zum Provider. Die Sitzung ist beidseitig authentifiziertes TLS 1.3, geschlüsselt mit X25519MLKEM768 (eine klassische Kurve, hybridisiert mit dem ML-KEM des NIST), sodass der Operator Bytes weiterleitet, die er nicht lesen kann. Die Responder-Seite ist opportunistisch: Jeder aktuelle Provider-Build aktiviert sie, ein Provider kann also versiegelte und unversiegelte Clients gleichermaßen bedienen. Deine Seite ist es nicht. Solange der Schalter an ist, scheitert der Client geschlossen, und einen Provider, mit dem er keine Sitzung versiegeln kann, überspringt er, statt ihn im Klartext zu nutzen. Noch zeigt keine App ein Versiegelt-oder-nicht-Urteil pro Verbindung. Identitäten bleiben Ed25519.

Bestenliste

Ranglisten der Top-Provider nach bewegten Daten. Teilst du, kannst du hier erscheinen, öffentlich oder privat, deine Wahl.

Support

Betitelt „Kontakt aufnehmen“ (Get in touch): ein Feedback-Feld, eine Sternebewertung, ein optionaler Schalter Logs an Feedback anhängen (Attach logs to feedback) und eine Discord-Einladung für Live-Hilfe. Tarife sind nicht hier; das Upgrade liegt im Konto-Tab.

Siri und Kurzbefehle

Die App registriert zwei App-Intents: URnetwork-VPN verbinden (Connect URnetwork VPN) und URnetwork-VPN trennen (Disconnect URnetwork VPN). Sie erscheinen in der Kurzbefehle-App, funktionieren per Stimme („Hey Siri, verbinde URnetwork“) und ketten sich in Automationen, etwa Verbinden, wenn du das Heim-WLAN verlässt.

Ohne E-Mail starten, und die Phrase, die es bewahrt

Sofort-Konto erstellen (Create Instant Account) auf dem Login-Bildschirm gibt dir in einem Tipp ein echtes, dauerhaftes Netzwerk. Keine E-Mail, kein Telefon, kein Passwort, wie der Bildschirm selbst sagt. Was es stattdessen sichert, ist eine Seedphrase: eine Wortliste, die die Plattform generiert und dir genau einmal zeigt, auf dem Bildschirm direkt nach der Erstellung, und von der sie danach nur gehashte Formen behält. Sichere sie dort und dann. Sie ist der einzige Weg zurück von einem Gerät, das nicht schon angemeldet ist. Solange du noch eines hast, das es ist, prägt Einstellungen → Seedphrase eine frische Phrase und zieht die alte zurück. Gesichert übersteht das Konto eine Neuinstallation oder ein neues iPhone, Tarif und Historie intakt, was eine gerätelokale Identität nie tut. Nichts davon ist zweitklassig: Einstellungen → Anmeldemethoden (Sign-In Methods) hängt eine E-Mail, ein Telefon, eine Apple- oder Google-Anmeldung oder eine Wallet an genau dasselbe Netzwerk, unter Erhalt deines Datenguthabens und deiner Historie. Die Anonymität liegt im Konto, nicht in der Zahlung: Ein in der App gekauftes Abo ist an dein Apple-Konto gebunden, ein Guthaben-Code an niemanden.

Fehlerbehebung

Die Genehmigung der VPN-Konfiguration

Das erste Verbinden bittet darum, eine VPN-Konfiguration hinzuzufügen. Hast du abgelehnt, kann der Tunnel nie starten. Genehmige sie beim nächsten Verbindungsversuch, oder prüf Einstellungen → Allgemein → VPN & Geräteverwaltung, wo die URnetwork-Konfiguration gelistet sein sollte.

Mehrere VPN-Profile, und wie die App sie verwaltet

iOS kann über Neuinstallationen und Upgrades mehr als ein URnetwork-VPN-Profil ansammeln. Die App erwartet das: Beim Verbinden zählt sie jedes Profil auf, setzt jedes zurück und versucht es erneut, das nicht starten will, und geht dann zum nächsten. Läuft schon ein Tunnel, übernimmt sie ihn über das Device-RPC, statt ihn neu zu starten. Kaputte Profile werden zurückgesetzt oder entfernt, mit einer Obergrenze für Entfernungen, damit das Aufräumen nie durchgeht, und jede Profil-Operation ist mit Frist versehen, damit ein verklemmter System-Daemon die App nicht aufhängen kann. All das ist automatisch. Es steht hier nur, damit die Profilliste in den Einstellungen Sinn ergibt, wenn du sie ansiehst.

„Failed to load VPN profiles“ (Fehler 12)

Scheitert das Verbinden mit „Failed to load VPN profiles“ (Fehlercode 12), weigert sich der VPN-Einstellungsspeicher des Systems, Profile aufzuzählen — ein Zustand, den die App von innen nicht reparieren kann. Repariere ihn von Hand:

  1. Öffne Einstellungen → Allgemein → VPN & Geräteverwaltung.
  2. Entferne die URnetwork-VPN-Konfiguration(en).
  3. Kehr zur App zurück und verbinde. Du wirst gebeten, eine frische Konfiguration zu genehmigen, und der Tunnel startet sauber.

Wie der Kill Switch hier funktioniert

Die App liefert einen Schalter Kill Switch in Konto → Einstellungen → Verbindungen mit, dasselbe SDK-Steuerelement, das jede URnetwork-App hat, aus, bis du es einschaltest. Eingeschaltet weigert sich der Client, auf deine lokale Route zurückzufallen — der Datenverkehr stoppt also, statt außerhalb des Tunnels zu lecken. Was iOS ihm nicht gibt, ist Durchsetzung auf OS-Ebene. Die App setzt includeAllNetworks nicht — stirbt der Tunnel-Prozess unerwartet, stellt iOS also die normale Netzverbindung wieder her, statt Datenverkehr zu blockieren. Beaufsichtigung, Wiederholungen und Profil-Wiederherstellung halten den Tunnel gesund, aber die App bittet das OS nicht, hart geschlossen zu scheitern. Verlangt dein Bedrohungsmodell ein garantiert geschlossen scheiterndes Netz, plane dafür.

Die Logs des Tunnels lesen

Die Tunnel-Extension loggt ins vereinheitlichte Systemlog, nicht in Dateien. So schaust du zu:

  1. Verbinde das Gerät mit einem Mac und öffne Console.app.
  2. Wähl das Gerät, und aktiviere im Menü „Aktion“ Info-Meldungen einbeziehen (Include Info Messages) und Debug-Meldungen einbeziehen (Include Debug Messages). Die interessanten Zeilen liegen auf diesen Stufen.
  3. Filter nach dem Subsystem network.ur.extension oder such nach „URnetwork“.

Verhalten bei Ruhezustand und im Hintergrund

Der Tunnel ist mit ausgeschaltetem disconnectOnSleep konfiguriert: Das VPN bleibt über den Geräteschlaf hinweg oben, statt bei jeder Bildschirmsperre neu zu handshaken. Mit dem Zwei-Prozess-Design übersteht es auch das Wegwischen der App. Trennen ist etwas, das du mit dem Button, Siri oder dem Entfernen des Profils tust.

Wohin als Nächstes