Skip to content

Tailscale — mihomo

mihomo می‌تواند به یک tailnet از Tailscale به‌عنوان یک گره فضای-کاربر بپیوندد و ترافیک را از طریق آن مسیریابی کند، آن هم تماماً از درون پیکربندی پراکسی. گره به‌طور کامل در فضای کاربر اجرا می‌شود (پشتیبانی‌شده با gVisor)، بنابراین هیچ دستگاه TUN در سطح هسته یا سرویس Tailscale سیستم لازم نیست. برای استفاده با یک سرور هماهنگ‌کنندهٔ جایگزین، control-url را به یک Headscale خود-میزبان اشاره دهید.

خروجی

ورودی زیر proxies: با type: tailscale. این BasicOption (فیلدهای مشترک خروجی) را در خود جای می‌دهد.

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
namestring(required)<string>نام یکتای پراکسی.
hostnamestring(unset)<string>نام میزبان گرهی که باید روی tailnet ثبت شود.
auth-keystring(unset)<auth key>کلید احراز هویت Tailscale برای ورود بدون‌سر (غیرتعاملی).
control-urlstring(Tailscale default)<URL>نشانی سرور هماهنگ‌کننده؛ این را تنظیم کنید تا به‌جای پیش‌فرض Tailscale به یک Headscale خود-میزبان اشاره کند.
state-dirstringtailscale<directory path>دایرکتوری‌ای که گره وضعیت/کلیدهای خود را در آن پایدار می‌کند.
ephemeralboolfalsetrue | falseثبت‌نام به‌عنوان گره گذرا که هنگام آفلاین‌شدن به‌طور خودکار حذف می‌شود.
udpboolfalsetrue | falseاجازهٔ عبور ترافیک UDP.
accept-routes*bool(unset)true | falseپذیرش مسیرهای زیرشبکهٔ اعلام‌شده توسط دیگر گره‌های tailnet.
exit-nodestring(unset)<node name or IP>استفاده از این گرهِ tailnet (نام یا IP) به‌عنوان گره خروج.
exit-node-allow-lan-access*bool(unset)true | falseاجازهٔ دسترسی مستقیم به LAN هنگام مسیریابی از طریق یک گره خروج.

منبع: adapter/outbound/tailscale.go:52-65 · ثابت‌شده در v1.19.27 (5184081)

مثال‌ها

خروجی حداقلی که با یک کلید احراز هویت بدون‌سر به یک tailnet می‌پیوندد:

yaml
proxies:
  - name: ts
    type: tailscale
    auth-key: tskey-auth-xxxxxxxxxxxx

مسیریابی تمام ترافیک از طریق یک گره خروجِ tailnet:

yaml
proxies:
  - name: ts-exit
    type: tailscale
    auth-key: tskey-auth-xxxxxxxxxxxx
    hostname: mihomo-node
    exit-node: us-exit-1
    exit-node-allow-lan-access: true
    accept-routes: true
    udp: true

در برابر یک سرور هماهنگ‌کنندهٔ Headscale خود-میزبان:

yaml
proxies:
  - name: ts-headscale
    type: tailscale
    auth-key: <headscale pre-auth key>
    control-url: https://headscale.example.com
    state-dir: tailscale-state

نکات

  • auth-key ورود بدون‌سر (غیرتعاملی) را فعال می‌کند — برای یک گره بدون‌سرپرست الزامی است. بدون آن، گره نمی‌تواند خودش احراز هویت کند.
  • state-dir پیش‌فرض آن tailscale است و نسبت به دایرکتوری کاری mihomo حل می‌شود. گره کلیدها و هویت ماشین خود را در آنجا پایدار می‌کند، بنابراین استفادهٔ مجدد از همان دایرکتوری، همان هویت tailnet را در سراسر راه‌اندازی‌های مجدد حفظ می‌کند.
  • ephemeral: true گره‌ای را ثبت می‌کند که سرور هماهنگ‌کننده پس از آفلاین‌شدنش به‌طور خودکار آن را حذف می‌کند — برای نمونه‌های کوتاه‌عمر یا کانتینری‌شده که نباید در فهرست دستگاه‌های tailnet باقی بمانند مفید است.
  • exit-node یا یک نام گره یا یک IP را می‌پذیرد. هنگامی که یک همتای واقعی را نام‌گذاری می‌کند (نه یک عبارت خودکارِ انتخاب)، mihomo منتظر می‌ماند تا پشتوانهٔ tailnet به وضعیت در حال اجرا برسد و سپس ترجیح گره خروج را اعمال می‌کند.
  • accept-routes انتخابی است: مسیرهای زیرشبکهٔ اعلام‌شده توسط دیگر گره‌ها تا زمانی که آن را فعال نکنید نادیده گرفته می‌شوند.

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

  • sing-box ‏Tailscale را به‌جای خروجی به‌عنوان یک نوع نقطه‌انتهایی ارائه می‌کند — این مورد زیر endpoints[]، در کنار WireGuard، با نام‌های فیلد به سبک snake_case قرار دارد.
  • Xray-core هیچ پشتیبانی‌ای از Tailscale ندارد.

منبع: adapter/outbound/tailscale.go:52-65 · v1.19.27 (5184081)

Core Tutorial اثر Argsment