Regel
Chute kann Anfragen an einen anderen Proxyserver weiterleiten oder direkt mit dem Host verbinden, abhängig von benutzerdefinierten Regeln.
Priorität
Regeln werden von der ersten bis zur letzten in der Reihenfolge abgeglichen, in der sie in der Konfigurationsdatei erscheinen. Mit anderen Worten, Regeln am Anfang der Liste haben eine höhere Priorität als spätere.
Aufbau
Jede Regel besteht aus 3 Teilen: Regeltyp, einem Verkehrsabgleicher (außer bei der FINAL-Regel) und einer Proxy-Richtlinie: TYPE, VALUE, POLICY. Beispiel: DOMAIN-SUFFIX,apple.com, DIRECT IP-CIDR, 192.168.0.0/16,ProxyA
Die Proxy-Richtlinie muss unter einem der Richtliniennamen benannt sein, einschließlich eines Proxys, einer Richtliniengruppe, DIRECT oder REJECT. Regeln sollten mit einer FINAL-Regel enden, um das Standardverhalten zu definieren. Wenn die Konfiguration keine FINAL-Regel enthält, verhält sich Chute so, als wäre FINAL,DIRECT angehängt.
Beispiel:
[Rule]
DOMAIN-SUFFIX,company.com,ProxyA
DOMAIN-KEYWORD,google,DIRECT
GEOIP,US,DIRECT
IP-CIDR,192.168.0.0/16,DIRECT
FINAL,ProxyB
Regeltypen
Domain-basierte Regeln
| Typ | Syntax | Übereinstimmung |
|---|---|---|
| DOMAIN | DOMAIN,www.apple.com,Proxy |
Exakte Domain-Übereinstimmung |
| DOMAIN-SUFFIX | DOMAIN-SUFFIX,apple.com,Proxy |
Domain-Suffix-Übereinstimmung |
| DOMAIN-KEYWORD | DOMAIN-KEYWORD,google,Proxy |
Domain enthält Schlüsselwort |
| DOMAIN-WILDCARD | DOMAIN-WILDCARD,*.apple.com,Proxy |
Wildcard-Domain-Übereinstimmung |
| DOMAIN-REGEX | DOMAIN-REGEX,^mail\..+\.com$,Proxy |
Domain-Regex-Übereinstimmung |
| DOMAIN-SET | DOMAIN-SET,https://example.com/domains.txt,DIRECT |
Von einer URL heruntergeladene Domain-Menge |
IP-basierte Regeln
| Typ | Syntax | Übereinstimmung |
|---|---|---|
| IP-CIDR | IP-CIDR,192.168.0.0/16,DIRECT |
IP-Adresse im CIDR-Bereich |
| IP-CIDR6 | IP-CIDR6,2001:db8::/32,DIRECT |
IPv6-Adresse im CIDR-Bereich |
| GEOIP | GEOIP,US,DIRECT |
Ländercode aus GeoIP-Datenbank |
| IP-ASN | IP-ASN,13335,DIRECT |
IP-Adresse gehört zu ASN |
HTTP-Ebene Regeln
| Typ | Syntax | Übereinstimmung |
|---|---|---|
| USER-AGENT | USER-AGENT,Instagram*,DIRECT |
User-Agent-Header |
| URL-REGEX | URL-REGEX,^http://google\.com,DIRECT |
URL stimmt mit Regex überein |
| PROTOCOL | PROTOCOL,TLS,Proxy |
Erkanntes Protokoll (HTTP/TLS/QUIC/usw.) |
Prozess-Regeln (Nur Mac)
| Typ | Syntax | Übereinstimmung |
|---|---|---|
| PROCESS-NAME | PROCESS-NAME,Telegram,Proxy |
Prozessname (Wildcard-Abgleich) |
| PROCESS-PATH | PROCESS-PATH,/Applications/Safari.app,Proxy |
Vollständiger Prozesspfad (Wildcard-Abgleich) |
| PROCESS-NAME-REGEX | PROCESS-NAME-REGEX,^Safari$,DIRECT |
Prozessname (Regex-Abgleich) |
Port- & Quell-Regeln
| Typ | Syntax | Übereinstimmung |
|---|---|---|
| DEST-PORT | DEST-PORT,80,DIRECT |
Zielport |
| SRC-IP | SRC-IP,192.168.20.100,DIRECT |
Quell-IP-Adresse (einzelne IP oder CIDR) |
| SRC-PORT | SRC-PORT,52345,DIRECT |
Quellport |
| IN-PORT | IN-PORT,6152,DIRECT |
Eingehender Proxy-Port auf Chute |
Erweiterte Abgleichregeln
| Typ | Syntax | Übereinstimmung |
|---|---|---|
| SUBNET | SUBNET,TYPE:WIFI,Proxy |
Netzwerk-Subnetz-Attribute (TYPE, BSSID, SSID, ROUTER) |
| HOSTNAME-TYPE | HOSTNAME-TYPE,AAAA,Proxy |
DNS-Eintragstyp (A/AAAA/usw.) |
| IN-TYPE | IN-TYPE,SOCKS5,Proxy |
Eingehender Verbindungstyp (HTTP/SOCKS5/TUN) |
| IN-USER | IN-USER,user1,Proxy |
Benutzername der eingehenden Authentifizierung |
| IN-NAME | IN-NAME,my-proxy,Proxy |
Name des eingehenden Proxyservers |
Hinweis: Erweiterte Abgleichregeln werden vom Konfigurationsparser akzeptiert, aber die aktuellen Chute-Versionen befüllen die Sitzungsattribute, gegen die sie abgleichen, noch nicht, daher greifen diese Regeln zur Laufzeit auf keinen Verkehr. Sie sind für zukünftige Versionen reserviert.
Logische Kombinationsregeln
| Typ | Syntax | Übereinstimmung |
|---|---|---|
| AND | AND,((DOMAIN,example.com),(DEST-PORT,443)),Proxy |
Alle Unterregeln stimmen überein |
| OR | OR,((DOMAIN,example.com),(DOMAIN,test.com)),Proxy |
Beliebige Unterregel stimmt überein |
| NOT | NOT,((DOMAIN,example.com)),Proxy |
Unterregel stimmt NICHT überein |
Spezielle Regeln
| Typ | Syntax | Übereinstimmung |
|---|---|---|
| RULE-SET | RULE-SET,SYSTEM,DIRECT |
Regelbündel aus einer URL, einem Regelanbieter oder integrierten Sätzen |
| SCRIPT | SCRIPT,MyRuleScript,PROXY |
JavaScript-basierter benutzerdefinierter Regelabgleich |
| FINAL | FINAL,ProxyB |
Standard, wenn keine andere Regel passt (muss die letzte sein) |
Optionen
no-resolve
Bei einer Anfrage, deren Hostname eine Domain ist, wertet Chute die Regelliste in zwei Durchläufen aus. Im ersten Durchlauf werden IP-basierte Regeln (GEOIP, IP-CIDR, IP-ASN) übersprungen. Wenn keine andere Regel greift, löst Chute die Domain per DNS auf und wertet die Regeln erneut mit der aufgelösten IP-Adresse aus. Fügen Sie die Option no-resolve hinzu, damit eine IP-basierte Regel auch im zweiten Durchlauf übersprungen bleibt und somit nur auf Anfragen greift, die bereits eine IP-Adresse tragen.
GEOIP,US,DIRECT,no-resolve
IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
Hinweis: Aufgrund der zweistufigen Auswertung kann bei einer Anfrage mit Domain-Hostname eine spätere Nicht-IP-Regel vor einer früheren IP-basierten Regel greifen. Wenn die DNS-Auflösung fehlschlägt, greifen IP-basierte Regeln einfach nie und die FINAL-Regel kommt zur Anwendung; die Regelauswertung wird nicht abgebrochen.
force-remote-dns
Erzwingt die DNS-Auflösung über den entfernten Proxyserver anstelle des lokalen DNS.
DOMAIN-SUFFIX,google.com,Proxy,force-remote-dns
Hinweis: Diese Option wird derzeit nur aus Kompatibilitätsgründen geparst und hat in den aktuellen Versionen keine Wirkung.
extended-matching
Erweitert den domain-basierten Regelabgleich, um zusätzlich zum Verbindungshostnamen auch den HTTP-Host-Header zu prüfen. Dies ist nützlich, wenn sich SNI- oder CONNECT-Ziel vom Host-Header unterscheidet.
DOMAIN-SUFFIX,example.com,Proxy,extended-matching
requires-resolve
Bei SCRIPT-Regeln wird diese Option vom Parser akzeptiert, verzögert die Skriptauswertung jedoch nicht. $request.dnsResult ist im Skript nur verfügbar, wenn die Sitzung bereits aufgelöst wurde (zum Beispiel bei Anfragen direkt an eine IP-Adresse oder im zweiten Abgleichdurchlauf nach der DNS-Auflösung).
SCRIPT,MyRuleScript,PROXY,requires-resolve
pre-matching
Nur gültig bei Regeln, deren Richtlinie REJECT ist. Die Regel wird in einem separaten Durchlauf vor der normalen Regelliste und vor dem Regelergebnis-Cache ausgewertet, sodass die Ablehnung bereits vor der Protokollerkennung oder DNS-Auflösung greift.
DOMAIN-SUFFIX,tracker.example.com,REJECT,pre-matching
Aliase
DOMAIN-MATCHwird als Alias vonDOMAIN-KEYWORDakzeptiert.NETWORKwird als Alias vonPROTOCOLakzeptiert.
Domain-Menge
Chute unterstützt das Laden von Domain-Mengen von einer externen URL mit dem Regeltyp DOMAIN-SET. Das erste Feld nach dem Typ muss eine http(s)-URL sein. Der optionale Parameter update-interval lädt die Datei alle N Sekunden neu herunter.
DOMAIN-SET,https://example.com/domains.txt,DIRECT
DOMAIN-SET,https://example.com/domains.txt,DIRECT,update-interval=86400
Die Domain-Mengen-Datei enthält bloße Domains, eine pro Zeile: example.com passt auf die exakte Domain; .example.com oder +.example.com passt auf die Domain und alle ihre Subdomains. Zeilen, die mit # oder // beginnen, sind Kommentare.