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 müssen mit einer FINAL-Regel enden, um das Standardverhalten zu definieren.
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,my-set,DIRECT |
Benannte Domain-Menge aus Datei/URL |
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,HTTPS,Proxy |
Erkanntes Protokoll (HTTP/HTTPS/TLS/SSH/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 |
| 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 |
| 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 |
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 Datei, URL 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
Wenn eine GEOIP-, IP-CIDR- oder IP-ASN-Regel angetroffen wird, sendet Chute eine DNS-Frage, um zu prüfen, ob der Hostname der Anfrage eine Domain ist. Sie können die Option no-resolve auswählen, um diese Regel für eine Anfrage mit Domain zu überspringen.
GEOIP,US,DIRECT,no-resolve
IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
Hinweis: Wenn einige Domains vom lokalen DNS-Server nicht aufgelöst werden können, stellen Sie bitte sicher, dass keine IP-basierte Regel vor der Regel steht, die auf diese Domain passt. Andernfalls schlägt die Regelprüfung aufgrund eines DNS-Fehlers fehl. Sie können auch
no-resolveverwenden, um das Problem zu lösen.
force-remote-dns
Erzwingt die DNS-Auflösung über den entfernten Proxyserver anstelle des lokalen DNS.
DOMAIN-SUFFIX,google.com,Proxy,force-remote-dns
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 stellt dies sicher, dass die DNS-Auflösung abgeschlossen ist, bevor das Skript ausgewertet wird. Dies garantiert, dass $request.dnsResult im Skript verfügbar ist.
SCRIPT,MyRuleScript,PROXY,requires-resolve
Domain-Menge
Chute unterstützt die Definition benannter Domain-Mengen aus externen Dateien oder URLs, die mit dem Regeltyp DOMAIN-SET verwendet werden können. Jede Zeile in der Domain-Mengen-Datei enthält eine Regeldeklaration ohne die Richtlinie.