ZeroTier — mihomo
mihomo میتواند بهصورت یک گره فضای کاربر به یک شبکهٔ مجازی ZeroTier بپیوندد و از داخل پیکربندی پراکسی ترافیک را به آن مسیریابی کند. این گره کاملاً در فضای کاربر اجرا میشود — بدون سرویس ZeroTier سیستم یا دستگاه TUN هسته — و TCP/UDP را روی ip-stack دادهشده حمل میکند. از planetهای خصوصی، moonها (orbit) و بازگشت به بازپخش TCP در ZeroTier پشتیبانی میکند.
خروجی
ورودی زیر proxies: با type: zerotier. این BasicOption (فیلدهای مشترک خروجی مانند dialer-proxy، interface-name، routing-mark و ip-version) را در خود جای میدهد.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (required) | <string> | نام یکتای پراکسی. در ساخت state-dir پیشفرض هم به کار میرود، پس اگر state-dir تنظیم نشده باشد تغییر نام پراکسی به گره هویتی تازه میدهد. |
network | string | (required) | <16-hex-digit network ID> | شبکهٔ ZeroTier برای پیوستن، بهصورت شناسهٔ ۱۶ رقمی هگزادسیمال شبکه. |
state-dir | string | zerotier/<network>-<hash of name> | <directory path> | دایرکتوری وضعیت پایدار گره و هویت پیشفرض آن. نسبت به دایرکتوری کاری mihomo تفکیک میشود و باید درون مسیرهای امن بماند. |
identity-secret | string | (from state-dir) | <identity.secret contents> | محتوای کامل identity.secret (address:0:public-key:private-key). باید کلید خصوصی را داشته باشد. هویت ذخیرهشده در state-dir را بازنویسی میکند و هرگز در آنجا نوشته نمیشود. |
planet | string | (built-in Earth planet) | <planet file path> | مسیر یک فایل planet خصوصی که جای سرورهای ریشهٔ داخلی را میگیرد (ریشههای خودمیزبان). هنگام راهاندازی خوانده و اعتبارسنجی میشود. |
mtu | int | (controller MTU) | 1280-10000 | بازنویسی محلی MTU شبکهٔ مجازی. فقط میتواند MTU تعیینشده توسط کنترلر را پایین بیاورد (اگر کنترلر چیزی نفرستد 2800). |
ip-stack | IPStackOption | (auto) | IPStackOption | پشتهٔ IP فضای کاربر که ترافیک TCP/UDP شبکه را حمل میکند. همان بلوک صفحهٔ WireGuard است (mode، congestion-controller). |
physical-mtu | int | 1432 | 510-10324 | بیشینهٔ بار UDP که ZeroTier روی شبکهٔ فیزیکی میفرستد. |
udp | bool | false | true | false | اجازهٔ عبور ترافیک UDP از این خروجی. |
remote-dns-resolve | bool | false | true | false | حل نام میزبان مقصد درون شبکهٔ ZeroTier، با سرورهای DNS که کنترلر ارسال میکند (یا dns در صورت تنظیم). اگر خاموش باشد نامها با حلکنندهٔ معمول mihomo حل میشوند. |
dns | []string | (controller-provided) | <nameserver> | … | جایگزین سرورهای DNS ارسالی کنترلر. فقط وقتی remote-dns-resolve برابر true است به کار میرود؛ پرسوجوها از همین خروجی عبور میکنند. |
low-bandwidth | bool | false | true | false | کاهش ترافیک پسزمینه و دفعات تازهسازی پیکربندی شبکه. |
encrypted-hello | bool | false | true | false | ارسال بستههای HELLO با رمزنگاری گسترشیافتهٔ ZeroTier (پروتکل 13). |
primary-port | int | 0 | 0-65535 | پورت UDP محلی اصلی. 0 هر پورت آزادی را برمیگزیند. |
secondary-port | int | 0 | -1 | 0-65535 | پورت UDP محلی دوم. 0 یک پورت آزاد برمیگزیند (پس از حدود دو دقیقه قطع بودن دوباره انتخاب میشود)؛ -1 آن را غیرفعال میکند. باید با primary-port متفاوت باشد. |
tcp-fallback-mode | string | auto | auto | force | disable | بازگشت به بازپخش TCP. auto از UDP استفاده میکند و فقط پس از شکست UDP مستقیم به بازپخش میرود؛ force همه چیز را از بازپخش میفرستد؛ disable هرگز از آن استفاده نمیکند. |
tcp-fallback-relay | string | 204.80.128.1:443 | <host:port> | نشانی بازپخش TCP برای حالت بازگشت. پیشفرض، بازپخش عمومی ZeroTier است. |
orbit | []ZeroTierOrbitOption | [] | [ZeroTierOrbitOption] | جهانهای ریشهٔ فدرال (moon) که افزون بر planet به آنها پیوسته میشود. هر world ID فقط یکبار مجاز است. |
remote-trace-target | string | (unset) | <10-hex-digit node ID> | شناسهٔ گرهی که ردگیریهای تشخیصی این گره را دریافت میکند. |
remote-trace-level | uint64 | 0 | 0 | 10 | 15 | 20 | 30 | میزان جزئیات ردگیری ارسالی به remote-trace-target: 0 normal، 10 verbose، 15 rules، 20 debug، 30 insane. مقادیر بیش از 30 رد میشوند. |
منبع: adapter/outbound/zerotier.go:108-130 · ثابتشده در v1.19.31 (ab405ba)
orbit[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
world | string | (required) | <16-hex-digit world ID> | شناسهٔ world مربوط به moon. |
seed | string | (required) | <10-hex-digit node ID> | شناسهٔ گره یکی از سرورهای ریشهٔ آن moon، برای دریافت تعریف world. |
منبع: adapter/outbound/zerotier.go:132-135 · ثابتشده در v1.19.31 (ab405ba)
بلوک ip-stack (mode، congestion-controller) در صفحهٔ WireGuard توضیح داده شده است.
مثالها
خروجی حداقلی برای پیوستن به یک شبکه (پس از نخستین راهاندازی، گره را در کنترلر مجاز کنید):
proxies:
- name: zt
type: zerotier
network: "0123456789abcdef"
udp: trueهویت ثابت، DNS کنترلر برای نامهای میزبان، و عبور ترافیک زیرین از یک پراکسی دیگر:
proxies:
- name: zt-home
type: zerotier
network: "0123456789abcdef"
identity-secret: "0123456789:0:<public-key>:<private-key>"
remote-dns-resolve: true
udp: true
dialer-proxy: ss1ریشههای خودمیزبان با یک moon و بازپخش TCP اجباری:
proxies:
- name: zt-private
type: zerotier
network: "0123456789abcdef"
planet: ./zerotier/planet
orbit:
- world: "0123456789abcdef"
seed: "0123456789"
tcp-fallback-mode: forceنکات
- فقط مقصدهایی که درون مسیرهای تعیینشده توسط کنترلر شبکه باشند در دسترساند؛ بقیه با "outside ZeroTier managed routes" شکست میخورند. برای فرستادن ترافیک عمومی از این شبکه، کنترلر باید مسیر متناظر را از طریق عضوی که نقش دروازه دارد ارسال کند.
state-dirبهطور پیشفرضzerotier/<network>-<۱۲ رقم هگز نخست SHA-256(name)>زیر دایرکتوری کاری mihomo است، پس هر خروجی هویتی جداگانه دارد. برای حفظ همان شناسهٔ گره پس از راهاندازی دوباره، دایرکتوری را نگه دارید (یاidentity-secretرا تنظیم کنید)؛ در شبکهٔ خصوصی، شناسهٔ جدید باید دوباره مجاز شود.- با
identity-secretپیکربندیشده، برخورد نشانی با گرهی دیگر با چرخاندن هویت حل نمیشود؛ mihomo حداکثر هر ۳۰ ثانیه دوباره تلاش میکند تا گره دیگر کنار برود. mtuفقط MTU را کاهش میدهد: مقدار مؤثر، کوچکترِ MTU کنترلر (محدود به 1280–10000، و 2800 اگر ارسال نشود) وmtuاست.dnsنادیده گرفته میشود مگرremote-dns-resolve: trueباشد. با آن، حل نام میزبان برای این خروجی از خود شبکهٔ ZeroTier به سرورهای DNS کنترلر (یاdns) میرود.- تنظیم
dialer-proxyترافیک زیرین ZeroTier را از خروجی دیگری عبور میدهد؛ در این حالت بهجای سوکتهای UDP مشترک، برای هر همتا سوکت جداگانه به کار میرود. - پشتیبانی از ZeroTier بهطور پیشفرض کامپایل میشود. نسخهای که با برچسب ساخت
no_zerotierساخته شود شکل پیکربندی را میپذیرد اما هنگام راهاندازی با "ZeroTier support is disabled" شکست میخورد.
نکات بینهستهای
- Xray-core و sing-box از ZeroTier پشتیبانی نمیکنند. نزدیکترین معادلها در این سایت نقطهانتهاییهای VPN مش هستند: Tailscale — sing-box (یک نقطهانتهایی زیر
endpoints[]) و WireGuard — sing-box. - در خود mihomo، Tailscale و EasyTier دیگر خروجیهای شبکهٔ پوششی فضای کاربر هستند؛ WireGuard تونلهای سادهٔ نقطهبهنقطه را پوشش میدهد.
منبع: adapter/outbound/zerotier.go:108-130 · v1.19.31 (ab405ba)
