Konfiguration
Die meisten Funktionen von Chute werden durch die Konfigurationsdatei gesteuert. Sie können sie in Ihrem eigenen Texteditor bearbeiten oder im integrierten Editor von Chute iOS, Chute tvOS, Chute Mac (Tab Konfiguration im Hauptfenster, in der älteren Oberfläche Einstellungen...) oder Chute Android. Chute Dashboard hat keinen Konfigurationseditor — was es bearbeitet, sind die Regeln der laufenden Engine, niemals die Datei.
Chute iOS kann Konfigurationsdateien über iCloud Drive synchronisieren; das ist eine lizenzpflichtige Funktion. Chute Mac hat keine eigene iCloud-Synchronisierung: Eine Datei zu teilen heißt dort, im Importfenster eine auszuwählen, die zufällig in iCloud Drive liegt — sie wird dann an ihrem Ort referenziert.
Konfigurationsabschnitte
Die Konfigurationsdatei ist in benannte Abschnitte gegliedert:
| Abschnitt | Zweck |
|---|---|
[General] |
Globale Einstellungen (Protokollierung, IPv6, DNS, Proxy-Ports usw.) |
[Proxy] |
Definitionen ausgehender Proxy-Server |
[Proxy Group] |
Definitionen von Richtliniengruppen (select, url-test, fallback, load-balance, ssid, subnet) |
[Rule] |
Regeln für Verkehrsabgleich und -weiterleitung |
[Host] |
Lokale DNS-Host-zu-IP-Zuordnungen |
[DNS] |
DNS-Einstellungen; akzeptiert sowohl die DNS-Schlüssel aus [General] als auch domainbezogene Überschreibungen im [Host]-Stil |
[URL Rewrite] |
URL-Umschreibungsregeln |
[Header Rewrite] |
HTTP-Header-Umschreibungsregeln |
[Body Rewrite] |
HTTP-Body-Suchen-und-Ersetzen-Regeln |
[Map Local] |
Mock-Antwort-Regeln |
[MITM] |
HTTPS-Entschlüsselungseinstellungen |
[Script] |
JavaScript-Skriptdefinitionen |
[SSID Setting] |
Einstellungen je Netzwerk: Suspendierung und DNS-Überschreibungen für ein WLAN oder einen Netzwerktyp |
[Replica] |
Filter für die Datenverkehrsaufzeichnung |
[Module] |
Externe Moduldateien |
[WireGuard <name>] |
WireGuard-Tunnelkonfigurationen (ein Instanzname ist erforderlich, z. B. [WireGuard HomeServer]) |
[AmneziaWG <name>] |
AmneziaWG-Tunnelkonfigurationen, WireGuard-kompatibel mit Verschleierungsparametern (ein Instanzname ist erforderlich, z. B. [AmneziaWG HomeServer]) |
[Tailscale] |
Globale Tailscale-Konfiguration (global eindeutig; ein Kopf [Tailscale <name>] wird als dieser Abschnitt gelesen) |
[Proxy Provider] |
Externe Proxy-Listenquellen |
[Rule Provider] |
Externe Regelsatzquellen |
[Ruleset <name>] |
Eingebetteter Regelsatz, verwendet mit RULE-SET,<name> — siehe Regelsatz |
Hinweis: Die Abschnitte
[Panel],[Ponte],[MTProto],[Keystore],[Port Forwarding],[Testing],[DHCP]und[Snell Server]werden erkannt, damit eine Surge-Konfiguration keinen Fehler erzeugt (jeder protokolliert einen Hinweis), und ihre Zeilen bleiben beim Speichern der Konfiguration wortgetreu erhalten; in Chute haben sie jedoch keine Wirkung.
DNS-Abschnitt
Die DNS-bezogenen [General]-Schlüssel können gleichwertig unter einem Abschnitt [DNS] der obersten Ebene geschrieben werden. Zeilen in diesem Abschnitt werden je nach Schlüssel behandelt:
| Zeile | Handhabung |
|---|---|
dns-server, direct-dns-server, proxy-dns-server, doh (Aliase doh-server, doh-service), dot, doq, doh3, encrypted-dns-server, allow-dns-svcb, encrypted-dns-follow-outbound-mode, hijack-dns, always-real-ip |
Genau wie in [General]; der Schlüssel wird so gespeichert, als wäre er dort geschrieben worden |
| Jede andere Zeile | Wird mit der domainbezogenen [Host]-Syntax geparst, z. B. *.example.com = server:1.1.1.1 |
| Ein Schlüssel, der keines von beidem ist | Wird mit einem Hinweis im Protokoll ignoriert; die Zeile selbst bleibt erhalten |
[DNS]
doh = https://dns.google/dns-query
hijack-dns = 8.8.8.8:53
*.example.com = server:1.1.1.1
Hinweis: Da hier beide Zeilenformen akzeptiert werden, kann ein
[DNS]-Abschnitt DNS-Server-Einstellungen mit domainbezogenen Überschreibungen mischen. Wiederholen Sie dieselbe Einstellung nicht in[General]und[DNS]: Eine zweitedoh-Zeile wird beispielsweise als doppelte DoH-Konfiguration gemeldet.Hinweis:
fallback-dns-serverundencrypted-dns-skip-cert-verificationwerden auch unter[DNS]gelesen, obwohl sie nicht in der ersten Tabellenzeile stehen. Ein Schlüssel, der keine DNS-Einstellung ist, wird hier nicht ignoriert — er wird als domainbezogene Überschreibung gelesen. Ein hierher verirrter[General]-Schlüssel wieoptimistic-dns = falsewird so stillschweigend zur Zuordnungoptimistic-dns→false. Nur eine Zeile, die auch der Parser für Überschreibungen zurückweist, erhält einen Hinweis. Siehe DNS.
Eine andere Datei einbinden
Ein Profil kann eine weitere Datei einziehen. Surge schreibt #!include <Pfad>, Shadowrocket schreibt include = <other.conf> über dem ersten Abschnitt. Beides wird gelesen, und die eingebundene Datei wird genau dort eingefügt, wo die Direktive steht — ein [Rule]-Fragment landet also in dem Abschnitt, der es benennt.
#!include Rulesets/company.list
- Der Pfad wird relativ zum Verzeichnis der Datei aufgelöst, die ihn nennt, und darf ein
*enthalten —#!include Rulesets/*.listzieht ein ganzes Verzeichnis von Regelfragmenten in Namensreihenfolge ein. - Includes verschachteln sich bis zu 8 Ebenen tief, und eine bereits eingezogene Datei — das Profil selbst eingeschlossen — wird kein zweites Mal eingezogen, sodass ein Zyklus nicht endlos laufen kann; ein Profil, das sich selbst einbindet, wird schlicht ignoriert.
- Ein Include wird nur ausgewertet, wenn das Profil aus einer Datei geladen wurde. Wird es der Engine als Text übergeben — so gelangt eine Konfiguration üblicherweise in den Tunnel —, fehlt das Verzeichnis zur Auflösung, und das Profil wird als unvollständig gemeldet, statt als vollständig behandelt zu werden. Die Direktive selbst bleibt beim Speichern erhalten: Sie wird genau so zurückgeschrieben, wie sie gelesen wurde, und der Inhalt der eingebundenen Datei wird nie in das Profil geschrieben.
Kommentar
Eine Zeile, die mit #, ; oder // beginnt, ist ein Kommentar. Dieselben drei Zeichen leiten auch einen Inline-Kommentar ein, aber nur direkt nach einem Leerzeichen oder Tabulator und nie innerhalb von Anführungszeichen ("…" oder '…', wobei \ das nächste Zeichen maskiert). Das :// einer URL, ein Pfad wie a//b und ein nicht in Anführungszeichen gesetzter base64-Wert, der zufällig // oder # enthält, bleiben daher vollständig. Kommentare und Leerzeilen bleiben beim Speichern der Konfiguration erhalten.
In den Rewrite-Abschnitten und in den ssid- / subnet-Zeilen von [Proxy Group] verhalten sich Inline-Kommentare anders:
| Wo | # |
; |
// |
Anführungszeichen |
|---|---|---|---|---|
[URL Rewrite] |
Wie oben | Wie oben | Wie oben | Keine: Die Zeile wird an Leerraum getrennt, und das erste Wort, das mit einem Kommentarzeichen beginnt, beendet sie |
[Header Rewrite] |
Nie ein Kommentar, daher behält header-add X-Color #ff0000 seinen Wert |
Nie ein Kommentar | Wie oben | "…" |
[Body Rewrite], [Map Local] |
Wie oben | Nie ein Kommentar | Wie oben | "…"; in einer jq-Zeile auch '…' |
ssid- / subnet-Zeilen von [Proxy Group] |
Wie oben | Wie oben | Wie oben | Nur "…": Ein Apostroph gehört zu einem Netzwerknamen wie Bob's iPhone |
Direktivzeilen — #!include, #!MANAGED-CONFIG, #!IOS-ONLY und ähnliche — werden als Direktiven gelesen, bevor irgendetwas davon greift. Die Dateien, die ein Regelsatz, eine Domain-Menge oder ein Proxy-Provider herunterlädt, sind keine Konfigurationsabschnitte: Dort kann nur eine ganze Zeile ein Kommentar sein.
Diese Seite ist eine Übersetzung der englischen Version. Bei Abweichungen ist die englische Version maßgeblich.