Règle
Chute peut transmettre les requêtes à un autre serveur proxy ou se connecter directement à l'hôte, en fonction de règles personnalisées.
Priorité
Les règles sont évaluées de la première à la dernière, dans l'ordre où elles apparaissent dans le fichier de configuration. Autrement dit, les règles situées en haut de la liste ont une priorité supérieure à celles situées plus bas.
Composition
Chaque règle comporte 3 parties : le type de règle, un critère de correspondance du trafic (sauf pour la règle FINAL) et une politique de proxy : TYPE, VALEUR, POLITIQUE. Exemple : DOMAIN-SUFFIX,apple.com,DIRECT IP-CIDR,192.168.0.0/16,ProxyA
La politique de proxy doit être le nom d'un proxy, d'un groupe de politiques ou d'une politique intégrée telle que DIRECT ou REJECT. Les règles doivent se terminer par une règle FINAL définissant le comportement par défaut. Si la configuration ne contient aucune règle FINAL, Chute se comporte comme si FINAL,DIRECT y était ajouté.
Exemple :
[Rule]
DOMAIN-SUFFIX,company.com,ProxyA
DOMAIN-KEYWORD,google,DIRECT
GEOIP,US,DIRECT
IP-CIDR,192.168.0.0/16,DIRECT
FINAL,ProxyB
Types de règles
Règles basées sur le domaine
| Type | Syntaxe | Correspondance |
|---|---|---|
| DOMAIN | DOMAIN,www.apple.com,Proxy |
Correspondance exacte du domaine |
| DOMAIN-SUFFIX | DOMAIN-SUFFIX,apple.com,Proxy |
Correspondance par suffixe de domaine |
| DOMAIN-KEYWORD | DOMAIN-KEYWORD,google,Proxy |
Le domaine contient le mot-clé |
| DOMAIN-WILDCARD | DOMAIN-WILDCARD,*.apple.com,Proxy |
Correspondance de domaine par joker |
| DOMAIN-REGEX | DOMAIN-REGEX,^mail\..+\.com$,Proxy |
Correspondance de domaine par regex |
| DOMAIN-SET | DOMAIN-SET,https://example.com/domains.txt,DIRECT |
Jeu de domaines téléchargé depuis une URL |
Règles basées sur l'IP
| Type | Syntaxe | Correspondance |
|---|---|---|
| IP-CIDR | IP-CIDR,192.168.0.0/16,DIRECT |
Adresse IP dans une plage CIDR |
| IP-CIDR6 | IP-CIDR6,2001:db8::/32,DIRECT |
Adresse IPv6 dans une plage CIDR |
| GEOIP | GEOIP,US,DIRECT |
Code pays issu de la base de données GeoIP |
| IP-ASN | IP-ASN,13335,DIRECT |
L'adresse IP appartient à l'ASN |
Règles de niveau HTTP
| Type | Syntaxe | Correspondance |
|---|---|---|
| USER-AGENT | USER-AGENT,Instagram*,DIRECT |
En-tête User-Agent |
| URL-REGEX | URL-REGEX,^http://google\.com.*,DIRECT |
L'URL correspond à la regex |
| PROTOCOL | PROTOCOL,TLS,Proxy |
Protocole détecté (HTTP/TLS/QUIC/etc.) |
Règles de processus (Mac uniquement)
| Type | Syntaxe | Correspondance |
|---|---|---|
| PROCESS-NAME | PROCESS-NAME,Telegram,Proxy |
Nom du processus (correspondance par joker) |
| PROCESS-PATH | PROCESS-PATH,/Applications/Safari.app,Proxy |
Chemin complet du processus (correspondance par joker) |
| PROCESS-NAME-REGEX | PROCESS-NAME-REGEX,^Safari$,DIRECT |
Nom du processus (correspondance par regex) |
Règles de port et de source
| Type | Syntaxe | Correspondance |
|---|---|---|
| DEST-PORT | DEST-PORT,80,DIRECT |
Port de destination |
| SRC-IP | SRC-IP,192.168.20.100,DIRECT |
Adresse IP source (IP unique ou CIDR) |
| SRC-PORT | SRC-PORT,52345,DIRECT |
Port source |
| IN-PORT | IN-PORT,6152,DIRECT |
Port proxy entrant sur Chute |
Règles de correspondance avancée
| Type | Syntaxe | Correspondance |
|---|---|---|
| SUBNET | SUBNET,TYPE:WIFI,Proxy |
Attributs du sous-réseau (TYPE, BSSID, SSID, ROUTER) |
| HOSTNAME-TYPE | HOSTNAME-TYPE,AAAA,Proxy |
Type d'enregistrement DNS (A/AAAA/etc.) |
| IN-TYPE | IN-TYPE,SOCKS5,Proxy |
Type de connexion entrante (HTTP/SOCKS5/TUN) |
| IN-USER | IN-USER,user1,Proxy |
Nom d'utilisateur d'authentification entrante |
| IN-NAME | IN-NAME,my-proxy,Proxy |
Nom du serveur proxy entrant |
Remarque : les règles de correspondance avancée sont acceptées par l'analyseur de configuration, mais les versions actuelles de Chute ne renseignent pas encore les attributs de session auxquels elles se réfèrent ; ces règles ne correspondront donc à aucun trafic à l'exécution. Elles sont réservées à de futures versions.
Règles de combinaison logique
| Type | Syntaxe | Correspondance |
|---|---|---|
| AND | AND,((DOMAIN,example.com),(DEST-PORT,443)),Proxy |
Toutes les sous-règles correspondent |
| OR | OR,((DOMAIN,example.com),(DOMAIN,test.com)),Proxy |
Au moins une sous-règle correspond |
| NOT | NOT,((DOMAIN,example.com)),Proxy |
La sous-règle NE correspond PAS |
Règles spéciales
| Type | Syntaxe | Correspondance |
|---|---|---|
| RULE-SET | RULE-SET,SYSTEM,DIRECT |
Ensemble de règles issu d'une URL, d'un fournisseur de règles ou des jeux intégrés |
| SCRIPT | SCRIPT,MyRuleScript,PROXY |
Correspondance personnalisée fondée sur JavaScript |
| FINAL | FINAL,ProxyB |
Comportement par défaut quand aucune autre règle ne correspond (doit être en dernier) |
Options
no-resolve
Pour une requête dont le nom d'hôte est un domaine, Chute évalue la liste de règles en deux passes. Lors de la première passe, les règles basées sur l'IP (GEOIP, IP-CIDR, IP-ASN) sont ignorées. Si aucune autre règle ne correspond, Chute résout le domaine par DNS et réévalue les règles avec l'adresse IP résolue. Ajoutez l'option no-resolve pour qu'une règle basée sur l'IP reste également ignorée lors de la seconde passe ; elle ne correspondra alors jamais qu'aux requêtes qui portent déjà une adresse IP.
GEOIP,US,DIRECT,no-resolve
IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
Remarque : en raison de l'évaluation en deux passes, pour une requête dont le nom d'hôte est un domaine, une règle non IP située plus loin peut correspondre avant une règle basée sur l'IP située plus haut. Si la résolution DNS échoue, les règles basées sur l'IP ne correspondent tout simplement jamais et la règle FINAL s'applique ; l'évaluation des règles n'est pas interrompue.
force-remote-dns
Force la résolution DNS par le serveur proxy distant plutôt que par le DNS local.
DOMAIN-SUFFIX,google.com,Proxy,force-remote-dns
Remarque : cette option n'est actuellement analysée que par souci de compatibilité et n'a aucun effet dans les versions actuelles.
extended-matching
Étend la correspondance des règles basées sur le domaine afin d'inspecter également l'en-tête HTTP Host, en plus du nom d'hôte de la connexion. C'est utile lorsque le SNI ou la cible CONNECT diffère de l'en-tête Host.
DOMAIN-SUFFIX,example.com,Proxy,extended-matching
requires-resolve
Pour les règles SCRIPT, cette option est acceptée par l'analyseur mais ne retarde pas l'évaluation du script. $request.dnsResult n'est disponible dans le script que lorsque la session a déjà été résolue (par exemple, pour les requêtes adressées directement à une adresse IP, ou lors de la seconde passe de correspondance après résolution DNS).
SCRIPT,MyRuleScript,PROXY,requires-resolve
pre-matching
Valide uniquement sur les règles dont la politique est REJECT. Les règles de pré-correspondance sont évaluées lors d'une passe distincte, avant le cache de résultats de règles et la table de règles normale ; un REJECT correspondant s'applique donc dès la première passe, avant toute résolution DNS que la table de règles aurait déclenchée.
DOMAIN-SUFFIX,tracker.example.com,REJECT,pre-matching
Alias
DOMAIN-MATCHest accepté comme alias deDOMAIN-KEYWORD.NETWORKest accepté comme alias dePROTOCOL.
Jeu de domaines
Chute permet de charger des jeux de domaines depuis une URL externe avec le type de règle DOMAIN-SET. Le premier champ après le type doit être une URL http(s). Le paramètre facultatif update-interval retélécharge le fichier toutes les N secondes.
DOMAIN-SET,https://example.com/domains.txt,DIRECT
DOMAIN-SET,https://example.com/domains.txt,DIRECT,update-interval=86400
Le fichier de jeu de domaines contient des domaines bruts, un par ligne : example.com correspond au domaine exact ; .example.com ou +.example.com correspond au domaine et à tous ses sous-domaines. Les lignes commençant par # ou // sont des commentaires.