Gateway
احراز هویت پروکسی مورد اعتماد
زمان استفاده
- OpenClaw را پشت یک پروکسی آگاه از هویت اجرا میکنید (Pomerium، Caddy + OAuth، nginx + oauth2-proxy، Traefik + forward auth).
- پروکسی شما تمام احراز هویت را انجام میدهد و هویت کاربر را از طریق سرآیندها ارسال میکند.
- در محیط Kubernetes یا کانتینری هستید که پروکسی تنها مسیر دسترسی به Gateway است.
- با خطاهای WebSocket از نوع
1008 unauthorizedمواجه میشوید، زیرا مرورگرها نمیتوانند توکنها را در بارهای WS ارسال کنند.
زمان عدم استفاده
- پروکسی شما کاربران را احراز هویت نمیکند و صرفاً پایاندهنده TLS یا متعادلکننده بار است.
- مسیری برای دسترسی به Gateway وجود دارد که پروکسی را دور میزند، مانند حفرههای دیوار آتش یا دسترسی از شبکه داخلی.
- مطمئن نیستید که پروکسی شما سرآیندهای فورواردشده را بهدرستی حذف یا بازنویسی میکند.
- فقط به دسترسی شخصی تککاربره نیاز دارید؛ در عوض Tailscale Serve + local loopback را در نظر بگیرید.
نحوه کار
پروکسی کاربر را احراز هویت میکند
پروکسی معکوس شما کاربران را احراز هویت میکند (OAuth، OIDC، SAML و غیره).
پروکسی یک سرآیند هویت اضافه میکند
پروکسی سرآیندی حاوی هویت کاربر احرازشده اضافه میکند؛ برای مثال، x-forwarded-user: nick@example.com.
Gateway منبع مورداعتماد را تأیید میکند
OpenClaw بررسی میکند که درخواست از یک نشانی IP پروکسی مورداعتماد (gateway.trustedProxies) آمده باشد و مبدأ آن local loopback خود Gateway یا نشانی رابط محلی آن نباشد.
Gateway هویت را استخراج میکند
OpenClaw ابتدا سرآیندهای الزامی و سپس هویت کاربر را از سرآیند پیکربندیشده میخواند.
صدور مجوز
اگر همه بررسیها موفق باشند و کاربر در صورت تنظیم بودن allowUsers از آن عبور کند، درخواست مجاز میشود.
پیکربندی
{ gateway: { // احراز هویت پروکسی مورداعتماد بهطور پیشفرض انتظار دارد IP مبدأ پروکسی loopback نباشد bind: "lan", // حیاتی: فقط IPهای پروکسی خود را اینجا اضافه کنید trustedProxies: ["10.0.0.1", "172.17.0.1"], auth: { mode: "trusted-proxy", trustedProxy: { // سرآیند حاوی هویت کاربر احرازشده (الزامی) userHeader: "x-forwarded-user", // اختیاری: سرآیندهایی که باید وجود داشته باشند (تأیید پروکسی) requiredHeaders: ["x-forwarded-proto", "x-forwarded-host"], // اختیاری: محدودسازی به کاربران مشخص (خالی = اجازه به همه) allowUsers: ["nick@example.com", "admin@company.org"], // اختیاری: اجازه به پروکسی loopback هممیزبان پس از پذیرش صریح allowLoopback: false, }, }, },}مرجع پیکربندی
gateway.trustedProxiesstring[]requiredآرایهای از نشانیهای IP پروکسی یا CIDRهایی که باید مورداعتماد باشند. درخواستهای سایر IPها رد میشوند.
gateway.auth.modestringrequiredباید "trusted-proxy" باشد.
gateway.auth.trustedProxy.userHeaderstringrequiredنام سرآیندی که هویت کاربر احرازشده را در بر دارد.
gateway.auth.trustedProxy.requiredHeadersstring[]سرآیندهای دیگری که برای مورداعتماد بودن درخواست باید موجود باشند.
gateway.auth.trustedProxy.allowUsersstring[]فهرست مجاز هویتهای کاربران. خالی بودن بهمعنای اجازه به همه کاربران احرازشده است.
gateway.auth.trustedProxy.allowLoopbackbooleandefault: falseپشتیبانی اختیاری از پروکسیهای معکوس loopback هممیزبان.
رفتار جفتسازی رابط کنترل
هنگامی که gateway.auth.mode = "trusted-proxy" فعال باشد و درخواست بررسیهای پروکسی مورداعتماد را بگذراند، نشستهای WebSocket رابط کنترل میتوانند بدون هویت جفتسازی دستگاه متصل شوند.
پیامدهای محدودهها:
- نشستهای WebSocket رابط کنترل بدون دستگاه متصل میشوند، اما بهطور پیشفرض هیچ محدوده راهبری دریافت نمیکنند. OpenClaw فهرست محدودههای درخواستی را به
[]پاک میکند تا نشستی که به دستگاه یا توکن جفتشده و تأییدشدهای متصل نیست، نتواند مجوزها را خوداظهاری کند. - اگر پس از اتصال موفق WebSocket، متدها با
missing scopeشکست میخورند، از HTTPS استفاده کنید تا مرورگر بتواند هویت دستگاه را ایجاد و جفتسازی را کامل کند. به HTTP ناامن رابط کنترل مراجعه کنید. - فقط برای شرایط اضطراری:
gateway.controlUi.dangerouslyDisableDeviceAuth=trueحتی بدون هویت دستگاه نیز محدودههای درخواستی را حفظ میکند. این کار امنیت را بهشدت کاهش میدهد؛ آن را سریعاً بازگردانید. به HTTP ناامن رابط کنترل مراجعه کنید.
محدودسازی محدوده توسط پروکسی معکوس: اگر پروکسی شما در درخواست ارتقای WebSocket رابط کنترل، x-openclaw-scopes را ارسال کند، OpenClaw محدودههای نشست را به اشتراک محدودههای درخواستی و محدودههای اعلامشده محدود میکند. این سرآیند محدودهای اعطا نمیکند؛ فقط مواردی را که نشست میتواند داشته باشد محدودتر میکند.
پیامدها:
- در این حالت، جفتسازی دیگر دروازه اصلی دسترسی به رابط کنترل نیست.
- خطمشی احراز هویت پروکسی معکوس شما و
allowUsersبه کنترل دسترسی مؤثر تبدیل میشوند. - ورودی Gateway را فقط به IPهای پروکسی مورداعتماد محدود نگه دارید (
gateway.trustedProxies+ دیوار آتش).
کارخواههای سفارشی WebSocket نشست رابط کنترل نیستند. gateway.controlUi.dangerouslyDisableDeviceAuth به کارخواههای دلخواه با client.mode: "backend" یا کارخواههای دارای ساختار CLI محدوده اعطا نمیکند. خودکارسازی سفارشی باید از هویت دستگاه و جفتسازی، مسیر کمکی بکاند مستقیم و محلی رزروشده با client.id: "gateway-client"، یا در مواردی که سطح درخواست/پاسخ HTTP مناسبتر است از Plugin مربوط به RPC مدیریتی HTTP استفاده کند.
سرآیند محدودههای راهبری
احراز هویت پروکسی مورداعتماد یک حالت HTTP حامل هویت است؛ بنابراین فراخوانها میتوانند در صورت نیاز، محدودههای راهبری را با x-openclaw-scopes در درخواستهای API مبتنی بر HTTP اعلام کنند.
نکته: محدودههای WebSocket توسط دستدهی پروتکل Gateway و اتصال هویت دستگاه تعیین میشوند. در درخواستهای ارتقای WebSocket رابط کنترل، x-openclaw-scopes فقط سقفی برای محدودههای توافقشده نشست است، نه یک اعطا. به رفتار جفتسازی رابط کنترل مراجعه کنید.
نمونهها:
x-openclaw-scopes: operator.readx-openclaw-scopes: operator.read,operator.writex-openclaw-scopes: operator.admin,operator.write
رفتار:
- وقتی سرآیند موجود باشد، OpenClaw مجموعه محدوده اعلامشده را رعایت میکند.
- وقتی سرآیند موجود اما خالی باشد، درخواست هیچ محدوده راهبری را اعلام نمیکند.
- وقتی سرآیند وجود نداشته باشد، APIهای HTTP حامل هویت عادی به مجموعه استاندارد محدودههای پیشفرض راهبری بازمیگردند (
operator.admin، operator.read، operator.write، operator.approvals، operator.pairing، operator.talk.secrets). - مسیرهای HTTP متعلق به Plugin که با احراز هویت Gateway کار میکنند، بهطور پیشفرض محدودترند: وقتی
x-openclaw-scopesوجود نداشته باشد، محدوده زمان اجرای آنها فقط بهoperator.writeبازمیگردد. - درخواستهای HTTP با مبدأ مرورگر حتی پس از موفقیت احراز هویت پروکسی مورداعتماد نیز باید از
gateway.controlUi.allowedOriginsیا حالت بازگشت عمدی به سرآیند Host عبور کنند.
قاعده عملی: هنگامی که میخواهید درخواست پروکسی مورداعتماد محدودتر از مقادیر پیشفرض باشد، یا زمانی که یک مسیر Plugin دارای احراز هویت Gateway به محدودهای قویتر از محدوده نوشتن نیاز دارد، x-openclaw-scopes را صریحاً ارسال کنید.
پایاندهی TLS و HSTS
از یک نقطه پایاندهی TLS استفاده کنید و HSTS را در همانجا اعمال کنید.
پایاندهی TLS در پروکسی (توصیهشده)
هنگامی که پروکسی معکوس شما HTTPS را برای https://control.example.com مدیریت میکند، Strict-Transport-Security را در پروکسی برای آن دامنه تنظیم کنید.
- برای استقرارهای در معرض اینترنت مناسب است.
- خطمشی گواهی و سختسازی HTTP را در یک محل نگه میدارد.
- OpenClaw میتواند پشت پروکسی روی HTTP مبتنی بر loopback باقی بماند.
نمونه مقدار سرآیند:
Strict-Transport-Security: max-age=31536000; includeSubDomainsپایاندهی TLS در Gateway
اگر خود OpenClaw مستقیماً HTTPS ارائه میدهد و پروکسی پایاندهنده TLS وجود ندارد، موارد زیر را تنظیم کنید:
{ gateway: { tls: { enabled: true }, http: { securityHeaders: { strictTransportSecurity: "max-age=31536000; includeSubDomains", }, }, },}strictTransportSecurity یک مقدار رشتهای برای سرآیند میپذیرد؛ برای غیرفعالسازی صریح نیز میتوانید از false استفاده کنید.
راهنمای استقرار تدریجی
- هنگام اعتبارسنجی ترافیک، ابتدا با حداکثر عمر کوتاه شروع کنید؛ برای مثال،
max-age=300. - فقط پس از اطمینان بالا، آن را به مقادیر بلندمدت افزایش دهید؛ برای مثال،
max-age=31536000. includeSubDomainsرا فقط زمانی اضافه کنید که همه زیردامنهها برای HTTPS آماده باشند.- فقط زمانی از preload استفاده کنید که عمداً الزامات آن را برای کل مجموعه دامنههای خود برآورده میکنید.
- توسعه محلی محدود به loopback از HSTS سودی نمیبرد.
نمونههای راهاندازی پروکسی
Pomerium
Pomerium هویت را در x-pomerium-claim-email یا سایر سرآیندهای ادعا و یک JWT را در x-pomerium-jwt-assertion ارسال میکند.
{ gateway: { bind: "lan", trustedProxies: ["10.0.0.1"], // IP مربوط به Pomerium auth: { mode: "trusted-proxy", trustedProxy: { userHeader: "x-pomerium-claim-email", requiredHeaders: ["x-pomerium-jwt-assertion"], }, }, },}قطعه پیکربندی Pomerium:
routes: - from: https://openclaw.example.com to: http://openclaw-gateway:18789 policy: - allow: or: - email: is: nick@example.com pass_identity_headers: trueCaddy همراه با OAuth
Caddy با Plugin مربوط به caddy-security میتواند کاربران را احراز هویت کند و سرآیندهای هویت را ارسال کند.
{ gateway: { bind: "lan", trustedProxies: ["10.0.0.1"], // Caddy/sidecar proxy IP auth: { mode: "trusted-proxy", trustedProxy: { userHeader: "x-forwarded-user", }, }, },}قطعهای از Caddyfile:
openclaw.example.com { authenticate with oauth2_provider authorize with policy1 reverse_proxy openclaw:18789 { header_up X-Forwarded-User {http.auth.user.email} }}nginx + oauth2-proxy
oauth2-proxy کاربران را احراز هویت میکند و هویت را در x-auth-request-email ارسال میکند.
{ gateway: { bind: "lan", trustedProxies: ["10.0.0.1"], // nginx/oauth2-proxy IP auth: { mode: "trusted-proxy", trustedProxy: { userHeader: "x-auth-request-email", }, }, },}قطعهای از پیکربندی nginx:
location / { auth_request /oauth2/auth; auth_request_set $user $upstream_http_x_auth_request_email; proxy_pass http://openclaw:18789; proxy_set_header X-Auth-Request-Email $user; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";}Traefik with forward auth
{ gateway: { bind: "lan", trustedProxies: ["172.17.0.1"], // Traefik container IP auth: { mode: "trusted-proxy", trustedProxy: { userHeader: "x-forwarded-user", }, }, },}پیکربندی ترکیبی توکن
اگر همزمان یک توکن مشترک نیز پیکربندی شده باشد (gateway.auth.token یا OPENCLAW_GATEWAY_TOKEN)، راهاندازی Gateway احراز هویت پراکسی مورداعتماد را رد میکند. این دو متقابلاً ناسازگارند، زیرا توکن مشترک به فراخوانندگان همان میزبان اجازه میدهد از مسیری کاملاً متفاوت با هویتی که پراکسی تأیید کرده و این حالت برای اعمال آن طراحی شده است، احراز هویت شوند.
اگر راهاندازی با خطایی مانند gateway auth mode is trusted-proxy, but a shared token is also configured شکست خورد:
- هنگام استفاده از حالت پراکسی مورداعتماد، توکن مشترک را حذف کنید، یا
- اگر قصد دارید از احراز هویت مبتنی بر توکن استفاده کنید،
gateway.auth.modeرا به"token"تغییر دهید.
سربرگهای هویت پراکسی مورداعتماد در local loopback همچنان بهصورت بسته شکست میخورند: فراخوانندگان همان میزبان بدون اطلاع بهعنوان کاربران پراکسی احراز هویت نمیشوند. فراخوانندگان داخلی OpenClaw که پراکسی را دور میزنند، میتوانند در عوض با gateway.auth.password / OPENCLAW_GATEWAY_PASSWORD احراز هویت کنند. بازگشت به توکن در حالت پراکسی مورداعتماد همچنان عمداً پشتیبانی نمیشود.
چکلیست امنیتی
پیش از فعالکردن احراز هویت پراکسی مورداعتماد، موارد زیر را بررسی کنید:
- [ ] پراکسی تنها مسیر است: پورت Gateway از دسترسی همهچیز بهجز پراکسی شما با فایروال محافظت شده است.
- [ ]
trustedProxiesحداقلی است: فقط IPهای واقعی پراکسی شما، نه کل زیرشبکهها. - [ ] مبدأ پراکسی local loopback آگاهانه انتخاب شده است: احراز هویت پراکسی مورداعتماد برای درخواستهایی با مبدأ local loopback بهصورت بسته شکست میخورد، مگر اینکه
gateway.auth.trustedProxy.allowLoopbackصریحاً برای پراکسی همان میزبان فعال شده باشد. - [ ] پراکسی سربرگها را حذف میکند: پراکسی شما سربرگهای
x-forwarded-*دریافتی از کلاینتها را بازنویسی میکند، نه اینکه به آنها بیفزاید. - [ ] خاتمه TLS: پراکسی شما TLS را مدیریت میکند؛ کاربران از طریق HTTPS متصل میشوند.
- [ ]
allowedOriginsصریح است: رابط کنترل خارج از local loopback ازgateway.controlUi.allowedOriginsصریح استفاده میکند. - [ ]
allowUsersتنظیم شده است (توصیه میشود): بهجای اجازهدادن به هر فرد احراز هویتشده، دسترسی را به کاربران شناختهشده محدود کنید. - [ ] پیکربندی ترکیبی توکن وجود ندارد:
gateway.auth.tokenوgateway.auth.mode: "trusted-proxy"را همزمان تنظیم نکنید. - [ ] بازگشت به گذرواژه محلی خصوصی است: اگر
gateway.auth.passwordرا برای فراخوانندگان مستقیم داخلی پیکربندی میکنید، پورت Gateway را با فایروال محافظت کنید تا کلاینتهای راهدور خارج از پراکسی نتوانند مستقیماً به آن دسترسی پیدا کنند.
ممیزی امنیتی
openclaw security audit احراز هویت پراکسی مورداعتماد را با یافتهای با شدت بحرانی علامتگذاری میکند. این رفتار عمدی است؛ یادآوری میکند که امنیت را به پیکربندی پراکسی خود واگذار کردهاید.
ممیزی موارد زیر را بررسی میکند:
- هشدار یا یادآوری بحرانی پایه
gateway.trusted_proxy_auth. - نبود پیکربندی
trustedProxies. - نبود پیکربندی
userHeader. - خالیبودن
allowUsersکه به هر کاربر احراز هویتشده اجازه دسترسی میدهد. - فعالبودن
allowLoopbackبرای مبدأهای پراکسی همان میزبان.
یافتههای جداگانهای که مختص پراکسی مورداعتماد نیستند نیز هر زمان که رابط کنترل در معرض دسترسی قرار گیرد اعمال میشوند: مقدار عام یا نبود gateway.controlUi.allowedOrigins و بازگشت مبدأ به سربرگ Host.
عیبیابی
trusted_proxy_untrusted_source
درخواست از IP موجود در gateway.trustedProxies نیامده است. بررسی کنید:
- آیا IP پراکسی صحیح است؟ (IP کانتینرهای Docker ممکن است تغییر کند.)
- آیا جلوی پراکسی شما یک متعادلکننده بار قرار دارد؟
- برای یافتن IPهای واقعی از
docker inspectیاkubectl get pods -o wideاستفاده کنید.
trusted_proxy_loopback_source
OpenClaw یک درخواست پراکسی مورداعتماد با مبدأ local loopback را رد کرده است.
بررسی کنید:
- آیا پراکسی از
127.0.0.1/::1متصل میشود؟ - آیا میخواهید احراز هویت پراکسی مورداعتماد را با یک پراکسی معکوس local loopback روی همان میزبان استفاده کنید؟
راهحل:
- برای کلاینتهای داخلی همان میزبان که از پراکسی عبور نمیکنند، احراز هویت با توکن یا گذرواژه را ترجیح دهید، یا
- ترافیک را از یک نشانی پراکسی مورداعتماد غیر local loopback عبور دهید و آن IP را در
gateway.trustedProxiesنگه دارید، یا - برای یک پراکسی معکوس عمدی روی همان میزبان،
gateway.auth.trustedProxy.allowLoopback = trueرا تنظیم کنید، نشانی local loopback را درgateway.trustedProxiesنگه دارید و مطمئن شوید پراکسی سربرگهای هویت را حذف یا بازنویسی میکند.
trusted_proxy_local_interface_source / trusted_proxy_local_interface_check_failed
IP مبدأ درخواست با یکی از نشانیهای رابط شبکه غیر local loopback خود میزبان Gateway، نه پراکسی، مطابقت داشته است؛ این محافظی در برابر ترافیک جعلشده همان میزبان در tailnetها یا شبکههای پل Docker است. ..._check_failed یعنی خود فرایند کشف رابط با خطا مواجه شده است، بنابراین OpenClaw بهصورت بسته شکست میخورد.
بررسی کنید:
- آیا فرایندی روی خود میزبان Gateway با دورزدن پراکسی، سربرگهای هویت را مستقیماً ارسال میکند؟
- آیا پراکسی در همان فضای نام شبکه Gateway اجرا میشود و IP آن بهعنوان یک رابط محلی نیز نمایش داده میشود؟
راهحل: ترافیک پراکسی را از نشانیای عبور دهید که بهصورت محلی نیز به میزبان Gateway متصل نشده باشد، یا allowLoopback را فقط برای پیکربندی واقعی پراکسی همان میزبان استفاده کنید.
trusted_proxy_user_missing
سربرگ کاربر خالی یا موجود نبوده است. بررسی کنید:
- آیا پراکسی شما برای ارسال سربرگهای هویت پیکربندی شده است؟
- آیا نام سربرگ صحیح است؟ (به بزرگی و کوچکی حروف حساس نیست، اما املای آن اهمیت دارد.)
- آیا کاربر واقعاً در پراکسی احراز هویت شده است؟
trusted_proxy_missing_header_*
یکی از سربرگهای الزامی موجود نبوده است. بررسی کنید:
- پیکربندی پراکسی خود را برای آن سربرگهای مشخص بررسی کنید.
- بررسی کنید آیا سربرگها در جایی از زنجیره حذف میشوند.
trusted_proxy_user_not_allowed
کاربر احراز هویت شده است، اما در allowUsers نیست. او را اضافه کنید یا فهرست مجاز را حذف کنید.
trusted_proxy_no_proxies_configured / trusted_proxy_config_missing
gateway.auth.mode برابر با "trusted-proxy" است، اما gateway.trustedProxies خالی است یا خود gateway.auth.trustedProxy وجود ندارد. تا زمانی که هر دو تنظیم نشوند، همه درخواستها رد میشوند.
trusted_proxy_origin_not_allowed
احراز هویت پراکسی مورداعتماد موفق بوده است، اما سربرگ Origin مرورگر بررسیهای مبدأ رابط کنترل را نگذرانده است.
بررسی کنید:
gateway.controlUi.allowedOriginsدقیقاً شامل مبدأ مرورگر باشد.- مگر اینکه عمداً رفتار اجازه به همه را میخواهید، به مبدأهای عام تکیه نکنید.
- اگر عمداً از حالت بازگشت به سربرگ Host استفاده میکنید،
gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=trueآگاهانه تنظیم شده باشد.
Connection succeeds but methods report missing scope
اتصال WebSocket برقرار میشود، اما chat.history، sessions.list یا
models.list با خطای missing scope: operator.read شکست میخورد.
دلایل رایج:
- نشست رابط کنترل بدون دستگاه: احراز هویت پراکسی مورداعتماد میتواند اتصال WebSocket را بدون هویت دستگاه بپذیرد، اما OpenClaw طبق طراحی، محدودههای دسترسی نشستهای بدون دستگاه را پاک میکند.
- کلاینت سفارشی سمت سرور:
gateway.controlUi.dangerouslyDisableDeviceAuthمحدود به رابط کنترل است و به کلاینتهای WebSocket دلخواه سمت سرور یا دارای ساختار CLI محدوده دسترسی اعطا نمیکند. x-openclaw-scopesبیشازحد محدود: اگر پراکسی شما این سربرگ را در درخواست ارتقای WebSocket رابط کنترل تزریق کند، محدودههای دسترسی نشست به همان مجموعه محدود میشوند. مقدار خالی سربرگ باعث میشود هیچ محدوده دسترسیای وجود نداشته باشد.
راهحل:
- برای رابط کنترل، از HTTPS استفاده کنید تا مرورگر بتواند هویت دستگاه را ایجاد و جفتسازی را تکمیل کند.
- برای خودکارسازی سفارشی، از هویت دستگاه و جفتسازی، مسیر رزروشده مستقیم و محلیِ ابزار کمکی سمت سرور
gateway-clientیا RPC مدیریتی HTTP استفاده کنید. - از
gateway.controlUi.dangerouslyDisableDeviceAuth: trueفقط بهعنوان مسیر اضطراری موقت برای رابط کنترل استفاده کنید.
WebSocket still failing
مطمئن شوید پراکسی شما:
- از ارتقای WebSocket پشتیبانی میکند (
Upgrade: websocket،Connection: upgrade). - سربرگهای هویت را در درخواستهای ارتقای WebSocket نیز ارسال میکند، نه فقط در HTTP.
- برای اتصالهای WebSocket مسیر احراز هویت جداگانهای ندارد.
مهاجرت از احراز هویت توکنی
Configure the proxy
پراکسی خود را برای احراز هویت کاربران و ارسال سربرگها پیکربندی کنید.
Test the proxy independently
پیکربندی پراکسی را بهطور مستقل آزمایش کنید؛ برای نمونه، از curl همراه با سربرگها استفاده کنید.
Update OpenClaw config
پیکربندی OpenClaw را با احراز هویت پراکسی مورداعتماد بهروزرسانی کنید.
Restart the Gateway
Gateway را دوباره راهاندازی کنید.
Test WebSocket
اتصالهای WebSocket را از رابط کنترل آزمایش کنید.
Audit
دستور openclaw security audit را اجرا و یافتهها را بررسی کنید.
مطالب مرتبط
- پیکربندی — مرجع پیکربندی
- محدودههای دسترسی اپراتور — نقشها، محدودههای دسترسی و بررسیهای تأیید
- دسترسی راهدور — الگوهای دیگر دسترسی راهدور
- امنیت — راهنمای کامل امنیت
- Tailscale — جایگزینی سادهتر برای دسترسی محدود به tailnet