Pourquoi utiliser un proxy
Un proxy donne aux opérateurs un point de contrôle réseau unique pour le trafic HTTP et WebSocket sortant. Cela peut être utile même en dehors du renforcement SSRF :- Politique centrale : maintenez une seule politique de sortie réseau au lieu de compter sur chaque point d’appel HTTP d’application pour appliquer correctement les règles réseau.
- Vérifications au moment de la connexion : évaluez la destination après la résolution DNS et immédiatement avant que le proxy ouvre la connexion amont.
- Défense contre le DNS rebinding : réduisez l’écart entre une vérification DNS au niveau de l’application et la connexion sortante réelle.
- Couverture JavaScript plus large : acheminez les clients ordinaires
fetch,node:http,node:https, WebSocket, axios, got, node-fetch et similaires par le même chemin. - Auditabilité : journalisez les destinations autorisées et refusées à la frontière de sortie.
- Contrôle opérationnel : appliquez des règles de destination, une segmentation réseau, des limites de débit ou des listes d’autorisation sortantes sans reconstruire OpenClaw.
Comment OpenClaw achemine le trafic
Lorsqueproxy.enabled=true et qu’une URL de proxy est configurée, les processus d’exécution protégés tels que openclaw gateway run, openclaw node run et openclaw agent --local acheminent les sorties HTTP et WebSocket normales via le proxy configuré :
localhost ou une IP de loopback littérale comme 127.0.0.1 ou [::1]. Ce chemin du plan de contrôle doit pouvoir atteindre les Gateway en loopback même lorsque le proxy de l’opérateur bloque les destinations loopback. Les requêtes HTTP et WebSocket d’exécution normales utilisent toujours le proxy configuré.
En interne, OpenClaw installe Proxyline comme runtime de routage au niveau du processus pour cette fonctionnalité. Proxyline couvre fetch, les clients adossés à undici, les appelants du noyau Node node:http / node:https, les clients WebSocket courants et les tunnels CONNECT créés par des helpers. Le mode proxy géré remplace les agents HTTP Node fournis par l’appelant afin que les agents explicites ne contournent pas accidentellement le proxy de l’opérateur.
Certains plugins possèdent des transports personnalisés qui nécessitent un câblage explicite du proxy même lorsqu’un routage au niveau du processus existe. Par exemple, le transport Bot API de Telegram utilise son propre dispatcher HTTP/1 undici et respecte donc l’environnement de proxy du processus ainsi que le fallback géré OPENCLAW_PROXY_URL dans ce chemin de transport propre au propriétaire.
L’URL du proxy elle-même peut utiliser http:// ou https://. Ces schémas décrivent la connexion d’OpenClaw vers le point de terminaison du proxy :
http://proxy.example:3128: OpenClaw ouvre une connexion TCP en clair vers le proxy direct et envoie des requêtes de proxy HTTP, y comprisCONNECTpour les destinations HTTPS.https://proxy.example:8443: OpenClaw ouvre une connexion TLS vers le point de terminaison du proxy, vérifie le certificat du proxy, puis envoie des requêtes de proxy HTTP à l’intérieur de cette session TLS.
CONNECT, puis démarre le TLS de destination à travers ce tunnel.
Tant que le proxy est actif, OpenClaw efface no_proxy et NO_PROXY. Ces listes de contournement sont basées sur la destination ; laisser localhost ou 127.0.0.1 à cet endroit permettrait à des cibles SSRF à haut risque de contourner le proxy de filtrage.
À l’arrêt, OpenClaw restaure l’environnement de proxy précédent et réinitialise l’état de routage de processus mis en cache.
Termes associés au proxy
proxy.enabled/proxy.proxyUrl: routage sortant via proxy direct pour les sorties d’exécution OpenClaw. Cette page documente cette fonctionnalité.gateway.auth.mode: "trusted-proxy": authentification entrante par proxy inverse sensible à l’identité pour l’accès au Gateway. Consultez Authentification par proxy de confiance.openclaw proxy: proxy de débogage local et inspecteur de capture pour le développement et le support. Consultez openclaw proxy.tools.web.fetch.useTrustedEnvProxy: option d’activation pourweb_fetchpermettant à un proxy HTTP(S) d’environnement contrôlé par l’opérateur de résoudre le DNS tout en conservant par défaut l’épinglage DNS strict et la politique de nom d’hôte. Consultez Récupération Web.- Paramètres de proxy propres à un canal ou fournisseur : remplacements propres au propriétaire pour un transport particulier. Préférez le proxy réseau géré lorsque l’objectif est le contrôle centralisé des sorties réseau sur l’ensemble du runtime.
Configuration
proxy.enabled=true dans la configuration :
proxy.proxyUrl prévaut sur OPENCLAW_PROXY_URL.
Mode Gateway Loopback
Les clients locaux du plan de contrôle Gateway se connectent généralement à un WebSocket en loopback commews://127.0.0.1:18789. Utilisez proxy.loopbackMode pour choisir le comportement des exceptions loopback du proxy géré lorsque le proxy géré est actif :
gateway-only(par défaut) : OpenClaw enregistre l’autorité loopback du Gateway dans la politique de contournement gérée de Proxyline afin que le trafic WebSocket local du Gateway puisse se connecter directement. Les ports Gateway loopback personnalisés fonctionnent parce que l’hôte et le port de l’URL Gateway active sont enregistrés. Le plugin de navigateur intégré peut aussi enregistrer les points de terminaison exacts locaux de disponibilité CDP et WebSocket DevTools pour les navigateurs gérés lancés par OpenClaw, et le fournisseur intégré d’embeddings mémoire Ollama peut utiliser son propre chemin direct gardé, plus étroit, pour l’origine exacte d’embedding loopback locale à l’hôte configurée.proxy: OpenClaw n’enregistre pas de contournements loopback Gateway ou Ollama ; ce trafic loopback est donc envoyé via le proxy géré. Si le proxy est distant, il doit fournir un routage spécial vers le service loopback de l’hôte OpenClaw, par exemple en le mappant à un nom d’hôte, une IP ou un tunnel joignable par le proxy. Les proxys distants standard résolvent127.0.0.1etlocalhostdepuis l’hôte du proxy, pas depuis l’hôte OpenClaw.block: OpenClaw refuse les connexions du plan de contrôle Gateway en loopback et les connexions d’embedding Ollama en loopback locale à l’hôte gardées avant d’ouvrir un socket.
enabled=true mais qu’aucune URL de proxy valide n’est configurée, les commandes protégées échouent au démarrage au lieu de revenir à un accès réseau direct.
Pour les services Gateway gérés démarrés avec openclaw gateway start, préférez stocker l’URL dans la configuration :
OPENCLAW_PROXY_URL dans l’environnement durable du service, comme $OPENCLAW_STATE_DIR/.env ou ~/.openclaw/.env, puis réinstallez le service afin que launchd, systemd ou les Tâches planifiées démarre le Gateway avec cette valeur.
Pour les commandes openclaw --container ..., OpenClaw transmet OPENCLAW_PROXY_URL à la CLI enfant ciblant le conteneur lorsqu’elle est définie. L’URL doit être joignable depuis l’intérieur du conteneur ; 127.0.0.1 désigne le conteneur lui-même, pas l’hôte. OpenClaw refuse les URL de proxy en loopback pour les commandes ciblant un conteneur, sauf si vous remplacez explicitement cette vérification de sécurité.
Exigences du proxy
La politique du proxy est la frontière de sécurité. OpenClaw ne peut pas vérifier que le proxy bloque les bonnes cibles. Configurez le proxy pour :- Se lier uniquement au loopback ou à une interface privée de confiance.
- Restreindre l’accès afin que seuls le processus, l’hôte, le conteneur ou le compte de service OpenClaw puisse l’utiliser.
- Résoudre lui-même les destinations et bloquer les IP de destination après résolution DNS.
- Appliquer la politique au moment de la connexion pour les requêtes HTTP en clair comme pour les tunnels HTTPS
CONNECT. - Refuser les contournements basés sur la destination pour les plages loopback, privées, link-local, metadata, multicast, réservées ou de documentation.
- Éviter les listes d’autorisation de noms d’hôtes sauf si vous faites entièrement confiance au chemin de résolution DNS.
- Journaliser la destination, la décision, l’état et la raison sans journaliser les corps de requête, les en-têtes d’autorisation, les cookies ou d’autres secrets.
- Garder la politique du proxy sous contrôle de version et examiner les changements comme une configuration sensible pour la sécurité.
Destinations bloquées recommandées
Utilisez cette liste de refus comme point de départ pour toute politique de proxy direct, de pare-feu ou de sortie réseau. La logique de classification au niveau applicatif d’OpenClaw réside danssrc/infra/net/ssrf.ts et packages/net-policy/src/ip.ts. Les hooks de parité pertinents sont BLOCKED_HOSTNAMES, BLOCKED_IPV4_SPECIAL_USE_RANGES, BLOCKED_IPV6_SPECIAL_USE_RANGES, RFC2544_BENCHMARK_PREFIX et la gestion de sentinelle IPv4 intégrée pour NAT64, 6to4, Teredo, ISATAP et les formes IPv4-mapped. Ces fichiers sont des références utiles lors de la maintenance d’une politique de proxy externe, mais OpenClaw n’exporte ni n’applique automatiquement ces règles dans votre proxy.
| Plage ou hôte | Pourquoi bloquer |
|---|---|
127.0.0.0/8, localhost, localhost.localdomain | Loopback IPv4 |
::1/128 | Loopback IPv6 |
0.0.0.0/8, ::/128 | Adresses non spécifiées et de ce réseau |
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 | Réseaux privés RFC1918 |
169.254.0.0/16, fe80::/10 | Adresses lien-local et chemins courants de métadonnées cloud |
169.254.169.254, metadata.google.internal | Services de métadonnées cloud |
100.64.0.0/10 | Espace d’adresses partagé NAT de niveau opérateur |
198.18.0.0/15, 2001:2::/48 | Plages de benchmarking |
192.0.0.0/24, 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24, 2001:db8::/32 | Plages à usage spécial et de documentation |
224.0.0.0/4, ff00::/8 | Multidiffusion |
240.0.0.0/4 | IPv4 réservé |
fc00::/7, fec0::/10 | Plages IPv6 locales/privées |
100::/64, 2001:20::/28 | Plages IPv6 de rejet et ORCHIDv2 |
64:ff9b::/96, 64:ff9b:1::/48 | Préfixes NAT64 avec IPv4 intégré |
2002::/16, 2001::/32 | 6to4 et Teredo avec IPv4 intégré |
::/96, ::ffff:0:0/96 | IPv6 compatibles IPv4 et IPv6 mappées IPv4 |
Validation
Validez le proxy depuis le même hôte, conteneur ou compte de service qui exécute OpenClaw :https://example.com/ réussit et démarre un canari loopback temporaire que le proxy ne doit pas atteindre. La vérification refusée par défaut réussit lorsque le proxy renvoie une réponse de refus non-2xx ou bloque le canari avec un échec de transport ; elle échoue si une réponse réussie atteint le canari. Si aucun proxy n’est activé ni configuré, la validation signale un problème de configuration ; utilisez --proxy-url pour une prévalidation ponctuelle avant de modifier la configuration. Utilisez --allowed-url et --denied-url pour tester les attentes propres au déploiement. Ajoutez --apns-reachable pour vérifier aussi que la livraison HTTP/2 directe APNs peut ouvrir un tunnel CONNECT via le proxy et recevoir une réponse APNs sandbox ; la sonde utilise un jeton de fournisseur intentionnellement invalide, donc 403 InvalidProviderToken est attendu et compte comme joignable. Les destinations refusées personnalisées échouent en mode fermé : toute réponse HTTP signifie que la destination était joignable via le proxy, et toute erreur de transport est signalée comme non concluante parce qu’OpenClaw ne peut pas prouver que le proxy a bloqué une origine joignable. En cas d’échec de validation, la commande se termine avec le code 1.
Utilisez --json pour l’automatisation. La sortie JSON contient le résultat global, la source effective de configuration du proxy, les éventuelles erreurs de configuration et chaque vérification de destination. Les identifiants d’URL de proxy sont masqués dans la sortie texte et JSON :
curl :
openclaw proxy validate, le canari loopback intégré peut distinguer un refus du proxy d’une origine joignable. Les vérifications --denied-url personnalisées n’ont pas ce canari ; traitez donc les réponses HTTP comme les échecs de transport ambigus comme des échecs de validation, sauf si votre proxy expose un signal de refus propre au déploiement que vous pouvez vérifier séparément.
Confiance dans l’AC du proxy
Utilisezproxy.tls.caFile géré lorsque le point de terminaison du proxy lui-même utilise un certificat signé par une autorité de certification privée :
NODE_EXTRA_CA_CERTS uniquement lorsque tout le processus Node doit faire confiance à une AC supplémentaire dès le démarrage du processus, par exemple lorsqu’un système d’inspection TLS d’entreprise resigne les certificats de destination pour chaque client HTTPS du processus. NODE_EXTRA_CA_CERTS est global au processus et doit être présent avant le démarrage de Node. Préférez proxy.tls.caFile pour la confiance dans le point de terminaison de proxy HTTPS, car elle est limitée au routage de proxy géré.
Activez ensuite le routage par proxy d’OpenClaw :
Limites
- Le proxy améliore la couverture pour les clients HTTP JavaScript et WebSocket locaux au processus, mais ce n’est pas un bac à sable réseau au niveau du système d’exploitation.
- Le trafic de plan de contrôle loopback du Gateway utilise par défaut un contournement local direct via
proxy.loopbackMode: "gateway-only". OpenClaw implémente ce contournement en enregistrant l’autorité loopback active du Gateway dans la politique de contournement gérée de Proxyline. Les opérateurs peuvent définirproxy.loopbackMode: "proxy"pour envoyer le trafic loopback du Gateway via le proxy géré, ouproxy.loopbackMode: "block"pour refuser les connexions loopback du Gateway. Consultez Mode loopback du Gateway pour la mise en garde concernant les proxys distants. - Les sockets bruts
net,tlsethttp2, les modules natifs et les processus enfants non OpenClaw peuvent contourner le routage par proxy au niveau de Node, sauf s’ils héritent des variables d’environnement de proxy et les respectent. Les CLI enfants OpenClaw forkés héritent de l’URL du proxy géré et de l’étatproxy.loopbackMode. - IRC est un canal TCP/TLS brut en dehors du routage par proxy direct géré par l’opérateur. Dans les déploiements qui exigent que toute sortie passe par ce proxy direct, définissez
channels.irc.enabled=false, sauf si la sortie IRC directe est explicitement approuvée. - Le proxy de débogage local est un outil de diagnostic, et son transfert amont direct pour les requêtes proxy et les tunnels CONNECT est désactivé par défaut lorsque le mode proxy géré est actif ; activez le transfert direct uniquement pour les diagnostics locaux approuvés.
- Les interfaces Web locales utilisateur et les serveurs de modèles locaux doivent être ajoutés à la liste d’autorisation dans la politique de proxy de l’opérateur si nécessaire ; OpenClaw n’expose pas de contournement général du réseau local pour eux. Le fournisseur groupé d’embeddings mémoire Ollama est plus limité : il peut utiliser un chemin direct protégé uniquement pour l’origine exacte d’embedding loopback locale à l’hôte dérivée du
baseUrlconfiguré, afin que les embeddings locaux à l’hôte continuent de fonctionner lorsque le proxy géré ne peut pas atteindre le loopback de l’hôte. Les hôtes d’embedding Ollama sur LAN, tailnet, réseau privé et publics utilisent toujours le chemin du proxy géré.proxy.loopbackMode: "proxy"envoie ce trafic loopback Ollama via le proxy géré, etproxy.loopbackMode: "block"le refuse avant d’ouvrir une connexion. - Le contournement du proxy du plan de contrôle Gateway est intentionnellement limité à
localhostet aux URL d’IP loopback littérales. Utilisezws://127.0.0.1:18789,ws://[::1]:18789ouws://localhost:18789pour les connexions locales directes au plan de contrôle Gateway ; les autres noms d’hôte sont routés comme le trafic ordinaire basé sur un nom d’hôte. - OpenClaw n’inspecte pas, ne teste pas et ne certifie pas votre politique de proxy.
- Traitez les changements de politique de proxy comme des changements opérationnels sensibles pour la sécurité.
| Surface | État du proxy géré |
|---|---|
fetch, node:http, node:https, clients WebSocket courants | Routés via les hooks de proxy géré lorsqu’ils sont configurés. |
| HTTP/2 direct APNs | Routé via l’assistant CONNECT géré APNs. |
| Loopback du plan de contrôle Gateway | Direct uniquement pour l’URL locale de loopback Gateway configurée. |
| Transfert amont du proxy de débogage | Désactivé lorsque le mode proxy géré est actif, sauf activation explicite pour les diagnostics locaux. |
| IRC | TCP/TLS brut ; non proxyfié par le mode proxy HTTP géré. Désactivez-le sauf si la sortie IRC directe est approuvée. |
Autres appels clients bruts net, tls ou http2 | Doivent être classifiés par la protection de socket brut avant d’être intégrés. |