Skip to content

cloudflared — sing-box ​

ورودی cloudflared یک رابط‌گر تعبیه‌شدهٔ Cloudflare Tunnel اجرا می‌کند. به‌جای گوش‌دادن روی یک پورت محلی، با یک توکن تونل به لبهٔ Cloudflare وصل می‌شود و هر اتصالی را که تونل تحویل می‌دهد — TCP، UDP و ICMP — با برچسب همین ورودی به موتور مسیریابی sing-box می‌سپارد.

بدون شنوندهٔ محلی

cloudflared آدرس گوش‌دادن ندارد: فیلدهای گوش‌دادن (listen، listen_port و …) که در صفحهٔ ورودی‌ها آمده‌اند اعمال نمی‌شوند. همه چیز از طریق اتصال‌های تونلِ برون‌سو می‌رسد.

گزینه‌های ورودی ​

type: "cloudflared" زیر inbounds[]:

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
tokenstring(required)<base64 tunnel token>توکن تونل از داشبورد Cloudflare Zero Trust (Networks → Tunnels → Install connector). بدون آن راه‌اندازی شکست می‌خورد.
ha_connectionsint4<int>تعداد اتصال‌های با دسترس‌پذیری بالا به لبهٔ Cloudflare. مقدار 0 یا تنظیم‌نشده یعنی 4؛ سقف آن تعداد آدرس‌های لبهٔ کشف‌شده است.
protocolstringautoauto | quic | http2 | h2muxترابرد لبه. auto (یا خالی) با QUIC آغاز می‌کند و پس از شکست‌های پیاپی یا وقتی QUIC مسدود به نظر برسد به HTTP/2 برمی‌گردد. h2mux پذیرفته می‌شود اما با یک هشدار مانند http2 رفتار می‌شود.
post_quantumboolfalsetrue | falseاستفاده از تبادل کلید پساکوانتومی. فقط QUIC: ترابرد را روی QUIC ثابت می‌کند (بدون بازگشت به HTTP/2) و همراه با protocol: http2 رد می‌شود.
edge_ip_versionint00 | 4 | 6نسخهٔ IP برای رسیدن به لبهٔ Cloudflare؛ 0 به‌صورت خودکار انتخاب می‌کند.
datagram_versionstring(remote)v2 | v3نسخهٔ پروتکل دیتاگرام برای UDP روی QUIC. اگر تنظیم نشود از تنظیمات ویژگی راه‌دور Cloudflare برای حساب پیروی می‌کند (با شروع از v2). فقط با QUIC معنا دارد.
grace_periodbadoption.Duration30s<duration>بازهٔ خاموشی آرام برای اتصال‌های لبهٔ در جریان.
regionstring(from token)<region>انتخاب‌گر منطقهٔ لبهٔ Cloudflare. اگر توکن از قبل یک نقطه‌انتهایی در خود داشته باشد رد می‌شود.
control_dialerDialerOptions(direct)Dial Fieldsفیلدهای شماره‌گیری برای اتصال به صفحهٔ کنترل Cloudflare. نام‌های میزبان از طریق مسیریاب DNS در sing-box حل می‌شوند.
tunnel_dialerDialerOptions(direct)Dial Fieldsفیلدهای شماره‌گیری برای اتصال به صفحهٔ دادهٔ لبهٔ Cloudflare.

منبع: option/cloudflared.go:5-16 · ثابت‌شده در v1.14.2 (af6e64c)

مثال‌ها ​

هر چه تونل تحویل می‌دهد را بپذیرید و مستقیماً بیرون بفرستید:

json
{
  "inbounds": [
    {
      "type": "cloudflared",
      "tag": "cf-in",
      "token": "<tunnel token>"
    }
  ],
  "outbounds": [
    { "type": "direct", "tag": "direct" }
  ],
  "route": {
    "rules": [
      { "inbound": ["cf-in"], "outbound": "direct" }
    ]
  }
}

نکات ​

  • این نوع فقط با برچسب ساخت with_cloudflared کامپایل می‌شود؛ ساخت‌های دیگر هنگام راه‌اندازی با راهنمای ساخت مجدد خطا می‌دهند.
  • اینکه تونل کدام نام‌های میزبان عمومی و شبکه‌های خصوصی را سرویس دهد در داشبورد Cloudflare پیکربندی می‌شود، نه در sing-box. آدرس‌های مبدئی که آن قواعد ingress به آن‌ها اشاره می‌کنند به مقصدهایی تبدیل می‌شوند که sing-box مسیریابی می‌کند؛ پس یک قاعده روی inbound: ["<tag>"] تعیین می‌کند کدام خروجی به آن‌ها برسد.
  • با protocol پیش‌فرض، رابط‌گر با QUIC آغاز می‌کند و پس از پنج تلاش ناموفق (یا بی‌درنگ وقتی QUIC مسدود به نظر برسد) به HTTP/2 برمی‌گردد. برای ثابت کردن یک ترابرد، quic یا http2 را تنظیم کنید.
  • post_quantum فقط روی QUIC کار می‌کند؛ همراه با protocol: http2 ورودی هنگام راه‌اندازی شکست می‌خورد.
  • region با توکن‌هایی که از قبل یک نقطه‌انتهایی در خود دارند در تضاد است.
  • control_dialer و tunnel_dialer فیلدهای شماره‌گیری معمول را می‌پذیرند، پس خود تونل را می‌توان از طریق خروجی دیگری (detour) برقرار کرد یا به یک رابط مقید کرد.

نکات بین‌هسته‌ای ​

  • Xray-core و mihomo رابط‌گر تعبیه‌شدهٔ Cloudflare Tunnel ندارند؛ با آن‌ها باید دیمن مستقل cloudflared را کنار هسته اجرا کنید.

منبع: option/cloudflared.go:5-16 · v1.14.2 (af6e64c)

Core Tutorial اثر Argsment