Навіщо використовувати proxy
Proxy дає операторам одну точку мережевого контролю для вихідного HTTP- і WebSocket-трафіку. Це може бути корисно навіть поза посиленням захисту від SSRF:- Централізована політика: підтримуйте одну політику вихідного трафіку замість покладання на те, що кожна точка HTTP-виклику в застосунку правильно застосує мережеві правила.
- Перевірки під час підключення: оцінюйте призначення після DNS-резолюції та безпосередньо перед тим, як proxy відкриє upstream-з’єднання.
- Захист від DNS rebinding: зменшуйте розрив між DNS-перевіркою на рівні застосунку та фактичним вихідним з’єднанням.
- Ширше покриття JavaScript: маршрутизуйте звичайні
fetch,node:http,node:https, WebSocket, axios, got, node-fetch і подібні клієнти через один і той самий шлях. - Аудитованість: журналюйте дозволені й відхилені призначення на межі вихідного трафіку.
- Операційний контроль: застосовуйте правила призначення, сегментацію мережі, обмеження швидкості або allowlist-и вихідного трафіку без повторного збирання OpenClaw.
Як OpenClaw маршрутизує трафік
Колиproxy.enabled=true і налаштовано URL proxy, захищені runtime-процеси, як-от openclaw gateway run, openclaw node run і openclaw agent --local, маршрутизують звичайний вихідний HTTP- і WebSocket-трафік через налаштований proxy:
localhost або буквальну loopback IP-адресу, як-от 127.0.0.1 чи [::1]. Цей шлях площини керування має мати змогу досягати loopback Gateway навіть тоді, коли proxy оператора блокує loopback-призначення. Звичайні runtime HTTP- і WebSocket-запити й надалі використовують налаштований proxy.
Внутрішньо OpenClaw встановлює Proxyline як runtime маршрутизації рівня процесу для цієї функції. Proxyline охоплює fetch, клієнти на базі undici, викликачів Node core node:http / node:https, поширені WebSocket-клієнти та створені допоміжними засобами CONNECT-тунелі. Керований режим proxy замінює надані викликачем HTTP-агенти Node, щоб явні агенти випадково не обходили proxy оператора.
Деякі plugins володіють власними транспортами, яким потрібне явне підключення proxy навіть за наявності маршрутизації рівня процесу. Наприклад, транспорт Bot API для Telegram використовує власний HTTP/1 undici dispatcher і тому враховує env proxy процесу плюс керований fallback OPENCLAW_PROXY_URL у цьому owner-specific транспортному шляху.
Сам URL proxy може використовувати http:// або https://. Ці схеми описують з’єднання від OpenClaw до endpoint proxy:
http://proxy.example:3128: OpenClaw відкриває звичайне TCP-з’єднання до forward proxy і надсилає HTTP proxy-запити, включно зCONNECTдля HTTPS-призначень.https://proxy.example:8443: OpenClaw відкриває TLS до endpoint proxy, перевіряє сертифікат proxy, а потім надсилає HTTP proxy-запити всередині цієї TLS-сесії.
CONNECT, а потім запускає TLS призначення через цей тунель.
Поки proxy активний, OpenClaw очищає no_proxy і NO_PROXY. Ці списки обходу базуються на призначенні, тому залишені там localhost або 127.0.0.1 дозволили б високоризиковим SSRF-цілям пропустити фільтрувальний proxy.
Під час завершення роботи OpenClaw відновлює попереднє proxy-середовище та скидає кешований стан маршрутизації процесу.
Пов’язані терміни proxy
proxy.enabled/proxy.proxyUrl: маршрутизація outbound forward-proxy для runtime-вихідного трафіку OpenClaw. Ця сторінка документує цю функцію.gateway.auth.mode: "trusted-proxy": вхідна reverse-proxy автентифікація з урахуванням ідентичності для доступу до Gateway. Див. Автентифікація trusted proxy.openclaw proxy: локальний debug proxy та інспектор захоплення для розробки й підтримки. Див. openclaw proxy.tools.web.fetch.useTrustedEnvProxy: opt-in дляweb_fetch, що дозволяє керованому оператором HTTP(S) env proxy виконувати DNS-резолюцію, зберігаючи стандартні суворі DNS pinning і політику hostname. Див. Web fetch.- Налаштування proxy для окремого каналу або провайдера: owner-specific перевизначення для конкретного транспорту. Надавайте перевагу керованому мережевому proxy, коли мета — централізований контроль вихідного трафіку в усьому runtime.
Конфігурація
proxy.enabled=true у конфігурації:
proxy.proxyUrl має пріоритет над OPENCLAW_PROXY_URL.
Режим loopback для Gateway
Локальні клієнти площини керування Gateway зазвичай підключаються до loopback WebSocket, наприкладws://127.0.0.1:18789. Використовуйте proxy.loopbackMode, щоб вибрати, як поводяться винятки loopback managed-proxy, поки керований proxy активний:
gateway-only(стандартно): OpenClaw реєструє loopback authority Gateway у керованій політиці обходу Proxyline, щоб локальний WebSocket-трафік Gateway міг підключатися напряму. Власні loopback-порти Gateway працюють, бо реєструються host і port активного URL Gateway. Вбудований browser plugin також може реєструвати точні локальні CDP readiness і DevTools WebSocket endpoints для керованих браузерів, запущених OpenClaw, а вбудований провайдер embedding пам’яті Ollama може використовувати власний вужчий захищений прямий шлях для точного налаштованого host-local loopback embedding origin.proxy: OpenClaw не реєструє loopback-обходи Gateway або Ollama, тому цей loopback-трафік надсилається через керований proxy. Якщо proxy віддалений, він має забезпечити спеціальну маршрутизацію до loopback-сервісу хоста OpenClaw, наприклад зіставлення його з hostname, IP або tunnel, доступними для proxy. Стандартні віддалені proxy резолвлять127.0.0.1іlocalhostз хоста proxy, а не з хоста OpenClaw.block: OpenClaw відхиляє loopback-з’єднання площини керування Gateway і захищені host-local embedding loopback-з’єднання Ollama до відкриття socket.
enabled=true, але не налаштовано жодного дійсного URL proxy, захищені команди завершують запуск помилкою замість fallback до прямого мережевого доступу.
Для керованих служб gateway, запущених через openclaw gateway start, бажано зберігати URL у конфігурації:
OPENCLAW_PROXY_URL у довготривале середовище служби, наприклад $OPENCLAW_STATE_DIR/.env або ~/.openclaw/.env, а потім перевстановіть службу, щоб launchd, systemd або Scheduled Tasks запускали gateway з цим значенням.
Для команд openclaw --container ... OpenClaw передає OPENCLAW_PROXY_URL у container-targeted дочірній CLI, коли його встановлено. URL має бути доступний зсередини контейнера; 127.0.0.1 посилається на сам контейнер, а не на хост. OpenClaw відхиляє loopback URL proxy для container-targeted команд, якщо ви явно не перевизначите цю safety check.
Вимоги до proxy
Політика proxy є межею безпеки. OpenClaw не може перевірити, що proxy блокує правильні цілі. Налаштуйте proxy так, щоб він:- Прив’язувався лише до loopback або приватного довіреного інтерфейсу.
- Обмежував доступ так, щоб ним могли користуватися лише процес, хост, контейнер або service account OpenClaw.
- Самостійно резолвив призначення та блокував IP-адреси призначень після DNS-резолюції.
- Застосовував політику під час підключення як для звичайних HTTP-запитів, так і для HTTPS-тунелів
CONNECT. - Відхиляв обходи на основі призначення для loopback, приватних, link-local, metadata, multicast, reserved або documentation діапазонів.
- Уникав hostname allowlist-ів, якщо ви не повністю довіряєте шляху DNS-резолюції.
- Журналював призначення, рішення, статус і причину без журналювання тіл запитів, authorization headers, cookies або інших secrets.
- Тримав політику proxy під version control і переглядав зміни як security-sensitive конфігурацію.
Рекомендовані заблоковані призначення
Використовуйте цей denylist як відправну точку для будь-якого forward proxy, firewall або політики вихідного трафіку. Логіка класифікатора рівня застосунку OpenClaw міститься вsrc/infra/net/ssrf.ts і packages/net-policy/src/ip.ts. Відповідні parity hooks: BLOCKED_HOSTNAMES, BLOCKED_IPV4_SPECIAL_USE_RANGES, BLOCKED_IPV6_SPECIAL_USE_RANGES, RFC2544_BENCHMARK_PREFIX і обробка вбудованого IPv4 sentinel для NAT64, 6to4, Teredo, ISATAP і IPv4-mapped форм. Ці файли є корисними reference під час підтримки зовнішньої політики proxy, але OpenClaw автоматично не експортує й не застосовує ці правила у вашому proxy.
| Діапазон або хост | Чому потрібно блокувати |
|---|---|
127.0.0.0/8, localhost, localhost.localdomain | IPv4 loopback |
::1/128 | IPv6 loopback |
0.0.0.0/8, ::/128 | Невизначені адреси та адреси цієї мережі |
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 | Приватні мережі RFC1918 |
169.254.0.0/16, fe80::/10 | Link-local адреси та поширені шляхи хмарних метаданих |
169.254.169.254, metadata.google.internal | Сервіси хмарних метаданих |
100.64.0.0/10 | Спільний адресний простір NAT операторського класу |
198.18.0.0/15, 2001:2::/48 | Діапазони для бенчмаркінгу |
192.0.0.0/24, 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24, 2001:db8::/32 | Діапазони спеціального використання та документації |
224.0.0.0/4, ff00::/8 | Multicast |
240.0.0.0/4 | Зарезервований IPv4 |
fc00::/7, fec0::/10 | Локальні/приватні діапазони IPv6 |
100::/64, 2001:20::/28 | Діапазони IPv6 discard і ORCHIDv2 |
64:ff9b::/96, 64:ff9b:1::/48 | Префікси NAT64 із вбудованим IPv4 |
2002::/16, 2001::/32 | 6to4 і Teredo із вбудованим IPv4 |
::/96, ::ffff:0:0/96 | IPv4-сумісні та IPv4-відображені IPv6 |
Валідація
Перевіряйте проксі з того самого хоста, контейнера або сервісного облікового запису, який запускає OpenClaw:https://example.com/ виконується успішно, і запускає тимчасовий loopback-canary, до якого проксі не має дістатися. Стандартна перевірка заборони проходить, коли проксі повертає не-2xx відповідь відмови або блокує canary через транспортну помилку; вона завершується невдало, якщо успішна відповідь доходить до canary. Якщо проксі не ввімкнено й не налаштовано, валідація повідомляє про проблему конфігурації; використовуйте --proxy-url для одноразової попередньої перевірки перед зміною конфігурації. Використовуйте --allowed-url і --denied-url, щоб перевірити очікування, специфічні для розгортання. Додайте --apns-reachable, щоб також перевірити, що пряма доставка APNs HTTP/2 може відкрити CONNECT-тунель через проксі й отримати відповідь sandbox APNs; проба використовує навмисно недійсний токен провайдера, тому 403 InvalidProviderToken є очікуваним результатом і вважається досяжністю. Користувацькі заборонені призначення працюють за fail-closed принципом: будь-яка HTTP-відповідь означає, що призначення було досяжним через проксі, а будь-яка транспортна помилка повідомляється як непереконлива, бо OpenClaw не може довести, що проксі заблокував досяжне джерело. У разі помилки валідації команда завершується з кодом 1.
Використовуйте --json для автоматизації. JSON-вивід містить загальний результат, джерело ефективної конфігурації проксі, будь-які помилки конфігурації та кожну перевірку призначення. Облікові дані URL проксі редагуються в текстовому та JSON-виводі:
curl:
openclaw proxy validate вбудований loopback-canary може відрізнити відмову проксі від досяжного джерела. Користувацькі перевірки --denied-url не мають такого canary, тому вважайте і HTTP-відповіді, і неоднозначні транспортні помилки помилками валідації, якщо ваш проксі не надає специфічний для розгортання сигнал відмови, який можна перевірити окремо.
Довіра до CA проксі
Використовуйте керованийproxy.tls.caFile, коли сама кінцева точка проксі використовує сертифікат, підписаний приватним CA:
NODE_EXTRA_CA_CERTS лише тоді, коли весь процес Node має довіряти додатковому CA від запуску процесу, наприклад коли корпоративна система TLS-інспекції перепідписує сертифікати призначень для кожного HTTPS-клієнта в процесі. NODE_EXTRA_CA_CERTS є глобальним для процесу й має бути наявним до запуску Node. Надавайте перевагу proxy.tls.caFile для довіри до кінцевої точки HTTPS-проксі, бо він обмежений керованою маршрутизацією проксі.
Потім увімкніть маршрутизацію проксі OpenClaw:
Обмеження
- Проксі покращує покриття для локальних у процесі JavaScript HTTP- і WebSocket-клієнтів, але не є мережевою пісочницею рівня ОС.
- Трафік control-plane Gateway через loopback за замовчуванням обходить проксі напряму локально через
proxy.loopbackMode: "gateway-only". OpenClaw реалізує цей обхід, реєструючи активний loopback-authority Gateway у керованій політиці обходу Proxyline. Оператори можуть встановитиproxy.loopbackMode: "proxy", щоб надсилати loopback-трафік Gateway через керований проксі, абоproxy.loopbackMode: "block", щоб заборонити loopback-підключення Gateway. Див. Режим loopback Gateway щодо застереження для віддаленого проксі. - Raw-сокети
net,tlsіhttp2, native addons та дочірні процеси не OpenClaw можуть обходити маршрутизацію проксі рівня Node, якщо вони не успадковують і не поважають змінні середовища проксі. Відгалужені дочірні CLI OpenClaw успадковують керований URL проксі та станproxy.loopbackMode. - IRC є raw TCP/TLS-каналом поза маршрутизацією через керований оператором forward proxy. У розгортаннях, які вимагають увесь вихідний трафік через цей forward proxy, встановіть
channels.irc.enabled=false, якщо прямий вихідний IRC-трафік явно не схвалено. - Локальний debug proxy є діагностичним інструментом, і його пряме пересилання upstream для проксі-запитів та CONNECT-тунелів вимкнене за замовчуванням, поки активний режим керованого проксі; вмикайте пряме пересилання лише для схваленої локальної діагностики.
- Локальні WebUI користувача та локальні сервери моделей мають бути внесені до allowlist у політиці проксі оператора, коли це потрібно; OpenClaw не надає для них загального обходу локальної мережі. Вбудований провайдер ембедингів пам’яті Ollama вужчий: він може використовувати захищений прямий шлях лише для точного host-local loopback джерела ембедингів, отриманого з налаштованого
baseUrl, щоб host-local ембединги продовжували працювати, коли керований проксі не може дістатися host loopback. LAN, tailnet, private-network і публічні хости ембедингів Ollama і далі використовують шлях керованого проксі.proxy.loopbackMode: "proxy"надсилає цей loopback-трафік Ollama через керований проксі, аproxy.loopbackMode: "block"забороняє його до відкриття підключення. - Обхід проксі для control-plane Gateway навмисно обмежений
localhostі буквальними URL loopback IP. Використовуйтеws://127.0.0.1:18789,ws://[::1]:18789абоws://localhost:18789для локальних прямих підключень control-plane Gateway; інші імена хостів маршрутизуються як звичайний трафік на основі імен хостів. - OpenClaw не інспектує, не тестує й не сертифікує вашу політику проксі.
- Ставтеся до змін політики проксі як до чутливих з погляду безпеки операційних змін.
| Поверхня | Стан керованого проксі |
|---|---|
fetch, node:http, node:https, поширені WebSocket-клієнти | Маршрутизуються через керовані хуки проксі, коли налаштовано. |
| Прямий APNs HTTP/2 | Маршрутизується через керований APNs CONNECT helper. |
| Loopback control-plane Gateway | Напряму лише для налаштованого локального loopback URL Gateway. |
| Upstream-пересилання debug proxy | Вимкнене, поки активний режим керованого проксі, якщо явно не ввімкнено для локальної діагностики. |
| IRC | Raw TCP/TLS; не проксіюється режимом керованого HTTP-проксі. Вимкніть, якщо прямий IRC egress не схвалено. |
Інші raw-клієнтські виклики net, tls або http2 | Мають бути класифіковані захистом raw-сокетів перед landing. |