Options diverses
[General]
ipv6 = true
loglevel = notify
skip-proxy = 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *.local
tun-excluded-routes = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
tun-included-routes = 192.168.1.12/32
Options courantes
Activer la prise en charge complète d'IPv6 (par défaut : true)
ipv6 = true
loglevel (par défaut : warning)
loglevel = notify
L'une des valeurs none, fatal, warning, notify, info ou verbose. Il n'est pas recommandé d'activer verbose au quotidien, car cela dégrade nettement les performances.
skip-proxy
skip-proxy = 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *.local
Sur la version iOS, cette option force les connexions vers ces domaines/plages d'IP à être traitées par le TUN de Chute, plutôt que par le proxy de Chute. Sur la version macOS, ces réglages sont appliqués au système lorsque « Définir comme proxy système » est activé. Cette option sert à corriger des problèmes de compatibilité avec certaines apps.
- Pour indiquer un seul domaine, saisissez le nom de domaine — par exemple, apple.com.
- Pour indiquer tous les sites d'un domaine, placez un astérisque devant le nom de domaine — par exemple, *apple.com.
- Pour indiquer une partie précise d'un domaine, précisez chaque partie — par exemple, store.apple.com.
- Pour indiquer des hôtes ou des réseaux par adresse IP, saisissez une adresse IP précise telle que 192.168.2.11 ou une plage d'adresses, telle que 192.168.2.* ou 192.168.2.0/24.
Remarque : si vous saisissez une adresse IP ou une plage d'adresses, vous ne pourrez contourner le proxy que lorsque vous vous connecterez à cet hôte par cette adresse, et non lorsque vous vous y connecterez par un nom de domaine qui résout vers cette adresse.
Écoute du serveur proxy
interface = 127.0.0.1
port = 8118
socks-interface = 127.0.0.1
socks-port = 8119
interface / port contrôlent l'adresse et le port d'écoute du serveur proxy HTTP (par défaut 127.0.0.1:8118). socks-interface / socks-port contrôlent le serveur proxy SOCKS5 (par défaut 127.0.0.1:8119).
Alias de compatibilité :
doh-serverest accepté comme alias dedoh;http-listen/socks5-listen(par ex.0.0.0.0:6152,[::]:6153, ou un simple port) sont associés aux réglages d'interface/port ci-dessus. Un hôte d'écoute joker (0.0.0.0,::ou*) définit égalementallow-wifi-access = true.
Authentification du proxy entrant
http-auth = username:password
Exige des clients qu'ils s'authentifient avant d'utiliser les serveurs proxy HTTP et SOCKS5 de Chute. La ligne peut être répétée pour autoriser plusieurs jeux d'identifiants.
Contourner les requêtes système
bypass-system = true
Lorsque cette option est activée, les requêtes émises par les processus système contournent le traitement de Chute.
Par défaut :
true.
Toujours IP réelle
always-real-ip = *.example.com, tracker.example.org
Lorsque Chute fournit de fausses adresses IP pour les requêtes DNS détournées (voir hijack-dns), les noms d'hôte correspondant à cette liste séparée par des virgules reçoivent en réponse leurs véritables adresses IP résolues. Les jokers sont pris en charge.
Interrompre les connexions existantes
interrupt-exist-connections = true
Lorsque cette option est activée, changer la politique sélectionnée dans un groupe de politiques (via URL Test, Fallback, Load Balance, SSID ou sélection manuelle) ferme proprement les connexions existantes qui utilisaient l'ancienne politique. Cela garantit que les connexions utilisent immédiatement le proxy nouvellement sélectionné plutôt que de s'attarder sur l'ancien.
Chaque connexion concernée est fermée proprement avec un délai de 3 secondes avant une fermeture forcée.
Par défaut :
false. Il s'agit d'un réglage global — il affecte tous les groupes de politiques.
Network Framework (macOS / tvOS)
network-framework = true
Active Network.framework d'Apple pour les connexions sortantes. Network.framework peut offrir de meilleures performances et une intégration moderne de la pile TLS sur les plateformes prises en charge.
Par défaut :
truesur macOS,falsesur iOS et tvOS.
Exclure les noms d'hôte simples
exclude-simple-hostnames = true
Lorsque cette option est activée, les requêtes vers des noms d'hôte simples (noms à étiquette unique sans point, par ex. localhost) contournent les règles de proxy et sont résolues localement. Cela évite des résolutions DNS inutiles pour les noms du réseau local.
Sur Chute Mac, une migration ponctuelle active cette option par défaut au premier lancement ; un réglage explicitement désactivé par l'utilisateur est respecté.
Par défaut :
false.
Désactiver l'enregistrement en base de données
disable-db-record = true
Lorsque cette option est activée, Chute cesse d'écrire les enregistrements de trafic dans la base de données locale. Cela peut améliorer les performances et réduire l'usage du stockage, mais l'historique de trafic ne sera pas disponible dans Chute Dashboard.
Par défaut :
false.
Affichage de la vitesse dans la barre des menus (Mac uniquement)
menu-bar-show-speed = true
Lorsque cette option est activée, Chute Mac affiche les vitesses d'envoi et de réception actuelles dans la barre des menus.
Par défaut :
false.
Détourner les autres serveurs DNS
hijack-dns = 8.8.8.8:53
Par défaut, Chute ne renvoie de fausses adresses IP que pour les requêtes DNS envoyées à l'adresse DNS de Chute (198.18.0.2). Les requêtes envoyées à un DNS standard sont simplement transmises.
Certains appareils ou logiciels utilisent toujours un serveur DNS codé en dur. (Par exemple, les enceintes Google utilisent toujours 8.8.8.8). Vous pouvez utiliser cette option pour détourner la requête et obtenir une fausse adresse.
Vous pouvez utiliser hijack-dns = *:53 pour détourner toutes les requêtes DNS.
Routes exclues
tun-excluded-routes = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
Chute VIF ne peut traiter que les protocoles TCP et UDP. Utilisez cette option pour contourner des plages d'IP précises afin de laisser passer tout le trafic.
Remarque : cette option ne fonctionne que pour le type VIF (utun) du mode amélioré — elle n'a aucun effet avec le type VPN PacketTunnel. Les requêtes traitées par le serveur proxy de Chute ne sont pas concernées. Combinez « skip-proxy » et « tun-excluded-routes » pour vous assurer que certain trafic HTTP contourne bien Chute.
Cette option peut provoquer une erreur système ENOMEM (Cannot allocate memory). Il semble s'agir d'un bug du système iOS. Évitez si possible d'utiliser cette option.
Routes incluses
tun-included-routes = 192.168.1.12/32
Par défaut, l'interface Chute VIF se déclare comme route par défaut. Mais comme l'interface Wi-Fi possède une route plus spécifique, une partie du trafic peut ne pas passer par l'interface Chute VIF. Utilisez cette option pour ajouter une route plus spécifique.
Remarque : cette option ne fonctionne que pour le type VIF (utun) du mode amélioré — elle n'a aucun effet avec le type VPN PacketTunnel.
Détection de protocole
sniffing-enabled = true
sniffing-timeout = 100
Chute peut détecter le protocole réel d'une connexion en inspectant les premiers octets. Cela permet à des règles comme PROTOCOL,TLS,Proxy de fonctionner correctement même pour des connexions entrantes non HTTP.
sniffing-enabled (par défaut : false)
sniffing-enabled = true
Active la détection de protocole pour les connexions TCP.
sniffing-timeout (par défaut : 100 ms)
sniffing-timeout = 200
Temps maximal, en millisecondes, d'attente des données initiales pour déterminer le protocole. Augmentez cette valeur si la détection de protocole échoue sur des connexions lentes.
Bloquer QUIC
block-quic = auto
Contrôle si Chute rejette le trafic QUIC détecté, y compris HTTP/3. QUIC fonctionne sur UDP et ne peut pas être déchiffré par le MitM HTTP de Chute. Rejeter QUIC peut inciter les clients compatibles à réessayer en TCP, ce qui permet un traitement par proxy sur TCP et, si elle est configurée, l'application du déchiffrement HTTPS.
| Valeur | Comportement |
|---|---|
off |
N'applique aucun blocage global de QUIC (par défaut). Le trafic QUIC détecté suit les règles de routage normales. |
on |
Rejette chaque flux QUIC détecté, y compris le trafic acheminé vers DIRECT. |
auto |
Ne rejette le QUIC détecté que lorsque la politique de sortie finale est un proxy. Le trafic acheminé vers DIRECT est autorisé ; celui acheminé vers REJECT reste rejeté par cette règle. |
Pour le trafic entrant par le TUN, Chute répond à un flux QUIC rejeté par un message ICMP/ICMPv6 Port Unreachable, afin que les clients compatibles puissent se rabattre sans attendre l'expiration d'un délai QUIC.
La détection QUIC pour
block-quicest automatique et ne nécessite passniffing-enabled;sniffing-enabledcontrôle la détection de protocole TCP. Utilisez une règlePROTOCOL,QUIC,...lorsque vous avez besoin d'un traitement par règles de flux QUIC individuels.
Contourner le TUN
bypass-tun = 192.168.0.0/16, 10.0.0.0/8
Similaire à skip-proxy, mais opère au niveau du routage TUN/VIF. Les connexions vers ces plages d'IP contournent entièrement l'interface TUN et passent directement par la pile réseau du système.
Remarque : cette option ne fonctionne que pour le type VIF (utun) du mode amélioré. Elle n'a aucun effet avec le type VPN PacketTunnel.
Afficher une page d'erreur en cas de rejet
show-error-page-for-reject = true
Lorsque cette option est activée, Chute renvoie une page d'erreur lisible pour les requêtes rejetées, au lieu de simplement abandonner la connexion.
DNS optimiste
optimistic-dns = false
Lorsque cette option est activée, Chute renvoie immédiatement le résultat DNS en cache tout en actualisant l'enregistrement en arrière-plan. Cela réduit la latence de connexion, au prix d'un éventuel renvoi d'enregistrements DNS obsolètes.
Par défaut :
true. Définissezoptimistic-dns = falsepour désactiver.
Autoriser l'accès Wi-Fi
allow-wifi-access = true
Destinée à permettre aux autres appareils du même réseau Wi-Fi d'accéder aux ports proxy HTTP/SOCKS5 de Chute. L'interrupteur est présenté dans les apps Chute et la valeur est conservée dans la configuration.
Remarque : le noyau stocke actuellement cet indicateur mais ne l'applique pas encore.
Configuration gérée
#!MANAGED-CONFIG https://example.com/config.conf interval=86400 strict=false
Une configuration dont la première ligne est un en-tête #!MANAGED-CONFIG est retéléchargée automatiquement depuis l'URL. Les paramètres de cet en-tête et le comportement de mise à jour sont documentés dans Configuration gérée.
Replica / enregistrement du trafic
replica = true
La clé replica de [General] (replica = true) active l'enregistrement du trafic ; la section [Replica] filtre ce que Chute Dashboard affiche — ses clés sont documentées dans Réplique.
Accès au contrôleur externe (Chute Dashboard)
external-controller-access = [email protected]:6155
Démarre le serveur de contrôle distant utilisé par Chute Dashboard. La valeur s'écrit password@host:port ; un nom d'utilisateur peut éventuellement précéder le mot de passe (user:password@host:port). Sur iOS, un canal USB complémentaire est ouvert sur port + 1 (pas sur macOS).
API de contrôle HTTP et interface web
[General]
external-http-controller = 127.0.0.1:9090
external-http-secret = your-secret-token
external-http-ui = true
external-http-cors = false
Chute fournit une API de contrôle HTTP intégrée et une interface de gestion web, comparables aux tableaux de bord de Clash et de Surge. L'API expose l'état du noyau, le trafic, les connexions, le DNS, les contrôles de politique et la gestion de configuration via des points de terminaison REST.
external-http-controller (par défaut : désactivé)
external-http-controller = 127.0.0.1:9090
L'adresse et le port du serveur de contrôle HTTP. Utilisez 127.0.0.1 pour un accès strictement local. Une liaison à une adresse précise hors boucle locale (par exemple 192.168.1.5:9090) exige un external-http-secret non vide — sans lui, le serveur refuse de démarrer et consigne un avertissement. Notez que 0.0.0.0 passe cette vérification alors même qu'il écoute sur toutes les interfaces : combiné à un secret vide, cela expose l'API entière au réseau sans authentification ; définissez donc toujours un secret lors d'une liaison à 0.0.0.0.
external-http-secret (par défaut : vide)
external-http-secret = your-secret-token
Le jeton Bearer utilisé pour l'authentification de l'API. Les requêtes doivent inclure l'en-tête Authorization: Bearer <secret> — le jeton n'est accepté que dans cet en-tête, jamais comme paramètre de requête, et il est comparé en temps constant. Lorsque le secret est vide, chaque point de terminaison est servi sans authentification. Les échecs d'authentification renvoient 401 avec {"ok": false, "error": {"code": "unauthorized", "message": "missing or invalid token"}}. Seuls les chemins /api/* et les alias compatibles Clash sont protégés ; les ressources statiques de l'interface web sont toujours servies.
external-http-ui (par défaut : true)
external-http-ui = true
Lorsque cette option est activée, Chute sert une interface web intégrée à l'adresse du contrôleur. Cette interface propose un tableau de bord de vue d'ensemble, la gestion des connexions, l'inspection DNS, la surveillance du trafic, les contrôles de politique et l'édition de configuration. Définissez false pour conserver l'API activée tout en désactivant l'interface.
external-http-cors (par défaut : false)
external-http-cors = true
Active les en-têtes CORS (partage de ressources entre origines) sur les réponses de l'API. Utile lorsque l'interface web ou des outils tiers doivent accéder à l'API depuis une autre origine.
Points de terminaison de l'API :
| Méthode | Point de terminaison | Description |
|---|---|---|
GET |
/api/status |
État d'exécution, ports, temps de fonctionnement |
GET |
/api/traffic |
Compteurs de trafic globaux et par politique |
GET |
/api/connections |
Connexions actives actuelles |
DELETE |
/api/connections/:id |
Ferme une connexion |
GET |
/api/connections/history |
Enregistrements de connexions historiques |
GET |
/api/connections/processes |
Statistiques de connexion par processus |
GET |
/api/connections/:id/request |
Données de requête capturées pour une connexion |
GET |
/api/connections/:id/response |
Données de réponse capturées pour une connexion |
GET |
/api/dns |
Enregistrements du cache DNS |
DELETE |
/api/dns/cache |
Purge le cache DNS |
DELETE |
/api/dns/records/:domain |
Supprime un enregistrement DNS |
GET |
/api/config |
Configuration actuelle |
PUT |
/api/config |
Recharge la configuration |
GET |
/api/policies |
Groupes de politiques et sélection actuelle |
PUT |
/api/policies/:group |
Change la sélection d'un groupe de politiques |
PUT |
/api/mode |
Définit le mode de sortie |
GET |
/api/features |
États des interrupteurs de fonctionnalités |
PUT |
/api/features/mitm |
Active/désactive le MitM |
PUT |
/api/features/record-traffic |
Active/désactive l'enregistrement du trafic |
GET |
/api/rules |
Règles chargées |
GET |
/api/logs |
Entrées de journal récentes |
Notes sur les points de terminaison :
GET /api/connectionsacceptelimit(entier positif, valeur par défaut et maximale 1000) etcursor(ne renvoie que les connexions dont l'idest supérieur au curseur). Ledatade la réponse contientconnections,total,page_size,has_moreet — lorsque d'autres pages existent —next_cursor.GET /api/connections/historyacceptelimit(par défaut 100, maximum 1000) etcursor/before(synonymes ; les passer tous les deux est rejeté).GET /api/connections/:id/requestet.../responserenvoient{"connection_id": <id>, "data": "<base64>"}. Les captures supérieures à 2 Mio renvoient413.GET /api/configrenvoie la configuration avec les valeurs sensibles (http-auth,external-http-secret,ca-p12,ca-passphrase, clés WireGuard et similaires) remplacées par<redacted>— ne réinjectez pas le résultat tel quel dansPUT /api/config, sinon les espaces réservés seraient écrits littéralement dans la configuration.PUT /api/configaccepte soit du JSON{"configuration": "<texte complet>"}, soit le texte brut de configuration comme corps de requête (limite de 1 Mo). En cas de succès, le noyau se recharge — ou démarre, s'il ne tournait pas.PUT /api/policies/:groupprend la sélection dans la première des clés de corpspolicy,name,selected,select; la valeur peut être un nom de politique ou un index numérique sous forme de chaîne. Le nom de groupe spécialGLOBALdéfinit la politique globale sélectionnée.PUT /api/modeexige un nombre JSON :{"mode": 0}—0règles,1direct,2proxy.PUT /api/features/mitmetPUT /api/features/record-trafficprennent{"enabled": true}.GET /api/logsacceptesince(secondes Unix) ; le tampon en mémoire conserve les 1000 entrées les plus récentes, chacune sous la forme{timestamp, level, section, message}.
Exemple — lire l'état, puis changer un groupe de politiques :
curl -H "Authorization: Bearer your-secret-token" http://127.0.0.1:9090/api/status
{"ok":true,"data":{"running":true,"outbound_mode":0,"mitm":false, ...}}
curl -X PUT -H "Authorization: Bearer your-secret-token" \
-d '{"policy": "ProxyB"}' http://127.0.0.1:9090/api/policies/MainGroup
{"ok":true,"data":{"outbound_mode":0,"selectable_groups":[...], ...}}
Remarque : cette fonctionnalité est désactivée par défaut. Chaque réponse utilise l'enveloppe
{"ok": true, "data": {...}}en cas de succès et{"ok": false, "error": {"code": "...", "message": "..."}}en cas d'erreur ; les corps de requête sont limités à 1 Mo.Les points de terminaison
PUTacceptent égalementPATCH. Des chemins d'alias compatibles Clash sont disponibles pour les tableaux de bord tiers :/version,/traffic,/connections,/configs,/proxies,/rules— ces chemins sont accessibles, mais les réponses utilisent l'enveloppe et les noms de champ de Chute plutôt que le schéma de Clash (/versionne renvoie que{"name", "run_id"}) ; les tableaux de bord Clash ne fonctionneront donc pas immédiatement.
Empreinte du client
global-client-fingerprint = chrome
Définit l'empreinte du client TLS pour toute politique qui n'a pas la sienne (fingerprint). La valeur propre à une politique l'emporte toujours ; il s'agit donc d'une valeur par défaut, et non d'un remplacement.
Les valeurs prises en charge sont chrome, firefox, safari et ios, ainsi que edge, 360,
qq, android et random, toutes traitées comme Chrome. Une valeur non reconnue
est ignorée et la pile TLS de la plateforme est utilisée.
Par défaut : vide, ce qui signifie la pile TLS de la plateforme. Seules les politiques Trojan, VMess, VLESS et ShadowTLS la lisent.