شبکههای خصوصی
لپتاپها، سرورها، اجراکنندههای CI و برنامههایتان را در یک شبکهٔ خصوصی به هم وصل کنید تا هر جا که باشند مستقیم و امن به هم برسند.
دنبال فرمانی برای اجرا بگردید…
لپتاپها، سرورها، اجراکنندههای CI و برنامههایتان را در یک شبکهٔ خصوصی به هم وصل کنید تا هر جا که باشند مستقیم و امن به هم برسند.
یک شبکهٔ خصوصی دستگاههایی را که تیمتان به کار میبرد به هم وصل میکند: لپتاپها، سرورها، اجراکنندههای CI، برنامههای مستقر. هر دستگاه یک نشانی خصوصی میگیرد و دستگاهها مستقیم به هم میرسند، حتی از پشت مودم خانه و فایروال اداره، انگار در یک شبکهٔ محلی هستند. هیچ چیز در شبکهٔ خصوصی از اینترنت دیده نمیشود.
شبکههای خصوصی بخشی از Premium هستند.
هر دستگاه از طریق zev، WireGuard را اجرا میکند؛ یک تونل رمزنگاریشدهٔ مدرن. نقش Zaryn معرفی دستگاهها به یکدیگر است: کلیدهای عمومی و نشانیهای بقیه را به هر کدام میگوید، و اینکه چه کسی اجازه دارد به چه کسی برسد. بعد دستگاهها مستقیم به هم وصل میشوند. وقتی دو دستگاه نتوانند (بعضی شبکهها جلویش را میگیرند)، ترافیکشان از یک همتیمی که به هر دو میرسد، یا از رلهٔ Zaryn میگذرد که فقط بستههای رمزنگاریشده را رد میکند و نمیتواند بخواندشان. Zaryn هرگز ترافیک عمومی اینترنت شما را جابهجا نمیکند: این شبکهای بین دستگاههای شماست، نه یک VPN برای وبگردی.
در zaryn.xyz/network یک شبکه بسازید (مثلاً office) و کسانی را که باید در آن باشند اضافه کنید. بدون قاعده، هر دستگاهِ شبکه به همهٔ دستگاههای دیگر میرسد. برای محدود کردن، در صفحهٔ شبکه قاعده اضافه کنید: چه کسی به چه کسی و روی کدام پورتها برسد، بر اساس شخص، دستگاه یا برچسب (tag:dev، tag:ci).
روی لینوکس (با wireguard-tools، iproute2 و nftables نصبشده)، با zev login وارد شوید و اجرا کنید:
sudo zev net up your-name/officeدر شبکهای که راه Zaryn را میبندد، اول یکی از پروکسیهایتان را انتخاب کنید (zev proxy use <name>؛ ببینید: استفاده از zev از راه پروکسی): zev net up آن را با خودش میبرد و دستگاه از راه آن میپیوندد و به رله میرسد.
دستگاه میپیوندد و پس از راهاندازی دوباره هم متصل میماند (بهصورت سرویس اجرا میشود). بررسیاش کنید:
zev net statusyour-name/office zevnet0 port 41641/udp public 203.0.113.9 relay connected ● build-server 10.77.0.4 direct 198.51.100.7:41641 (12 ms) handshake 12s ago, ↓ 8.4 MB ↑ 1.2 MB ● sara-desktop 10.77.0.7 through the relay (encrypted end to end) handshake 40s ago, ↓ 310 KB ↑ 95 KBdirect یعنی دو دستگاه بیواسطه با هم حرف میزنند. «through the relay» یعنی مسیر مستقیم ممکن نبوده و بستههای رمزنگاریشده از رلهٔ Zaryn میگذرند؛ «through <دستگاه>» یعنی به جای آن از یک همتیمی میگذرند (پایینتر را ببینید).
دستگاههای دیگر شبکه نام دارند: build-server.office از هر دستگاهی روی office به سرور ساخت میرسد.
ماشینی که نمیتواند بهصورت تعاملی وارد شود، با یک کلید پیوستن که در صفحهٔ شبکه میسازید وصل میشود:
sudo zev net up --key znk_… --name ci-runner-1 --kind ciدستگاههایی که zev را اجرا نمیکنند میتوانند از برنامهٔ رسمی WireGuard استفاده کنند. برایشان پیکربندی بسازید:
zev net config your-name/office --name phoneصفحهٔ شبکه در Zaryn میتواند آن را بهصورت کد QR برای اسکن هم نشان دهد.
بعضی شبکهها جلوی حرف زدن مستقیم دو دستگاه را میگیرند (فایروال سختگیر، فیلتری بین دو کشور، NAT دو اپراتور). پیش از رفتن سراغ رلهٔ Zaryn، zev دنبال یک همتیمی میگردد: دستگاه دیگری در شبکهٔ شما که مستقیم به هر دو میرسد. بستههایشان به جای رله از آن میگذرند، و همچنان با WireGuard از این سر تا آن سر رمزنگاریشدهاند؛ پس همتیمی نمیتواند بخواندشان، همانطور که رله نمیتواند.
● build-server 10.77.0.4 through office-gw (a teammate; encrypted end to end)Zaryn این مسیرها را از گزارش همهٔ دستگاهها (چه کسی مستقیم به چه کسی میرسد، و با چه سرعتی) برنامهریزی میکند، و برای هر همتایی که دستگاه مستقیم به آن نمیرسد، دو همتیمی بهتر را به آن میدهد. سریعترینی که روشن است بستهها را میبرد، و اگر از کار بیفتد بعدی جایش را میگیرد. همتیمی معمولاً از رلهٔ Zaryn سریعتر است، ترافیک شما را بین دستگاههای خودتان نگه میدارد، و وقتی رله در دسترس نیست هم کار میکند.
دستگاه فقط بستههای بین دو همتای خودش را که مستقیم به آنها میرسد رد میکند، و هرگز به همان راهی که آمدهاند برنمیگرداند. برای اینکه دستگاهی چیزی رد نکند (مثلاً لپتاپی با اینترنت حجمی)، آن را با ZEV_NET_NO_FORWARD=1 اجرا کنید.
zev net map نشان میدهد چه کسی به چه کسی میرسد، و از کار افتادن یک چیز چه هزینهای دارد:
your-name/office 5 devices online ● build-server office-gw 3 ms ● office-gw build-server 3 ms, sara-desktop 2 ms, vps 48 ms ● sara-desktop office-gw 2 ms ● laptop vps 61 ms ● vps office-gw 48 ms, laptop 61 msPairs 5 direct · 4 through a teammate · 1 only through Zaryn's relayIf one thing fails ! office-gw is the only direct link between parts of the network: if it goes, they fall back to the relay ! the link office-gw ↔ vps is the only one joining two parts ! 1 pair only Zaryn's relay joins; if it's unreachable, they lose each other: build-server↔laptop · the weakest seam: 1 direct link keep laptop, vps joined to the restدنبال چه میگردد:
| یعنی | |
|---|---|
| نقطهٔ شکست تنها | دستگاهی که با از دست رفتنش پیوندهای مستقیم شبکه به چند بخش جدا تقسیم میشوند (نقطهٔ برش) |
| پیوند تنها | تنها پیوند مستقیمی که دو بخش را به هم وصل میکند (پل) |
| ضعیفترین درز | کمترین تعداد پیوند مستقیمی که با از دست رفتنشان شبکه دو تکه میشود، و دستگاههای سمت کوچکتر (برش کمینه، با الگوریتم Stoer–Wagner) |
| تنها همتیمی | دستگاهی که برای چند جفت تنها مسیر از راه همتیمی است |
| فقط رله | جفتهایی که نه پیوند مستقیم دارند و نه همتیمی: فقط رلهٔ Zaryn آنها را به هم وصل میکند |
افزودن یک دستگاه خوبوصل (یک سرور کوچک یا رایانهای در دفتر که همه به آن میرسند) معمولاً همان چیزی است که هشدارها را برطرف میکند. zev net map --json همین را برای اسکریپتها و دستیارهای هوش مصنوعی چاپ میکند.
چیزی را روی یک دستگاه اجرا کنید (مثلاً یک برنامهٔ وب روی پورت 3000) و با شبکه به اشتراکش بگذارید:
zev net share 3000 --name webهمتیمیهای روی شبکه http://web.office را باز میکنند. با --allow تعیین کنید چه کسی بتواند بازش کند:
zev net share 3000 --name web --allow tag:dev,user:sarazev net apps برنامههای اشتراکی را فهرست میکند؛ zev net unshare web اشتراک را متوقف میکند.
وقتی دستگاههای یک شبکه یک مخزن را pull یا کلون میکنند، zev آنچه را همتیمیها از قبل دارند مستقیم از آنها و با سرعت شبکهٔ محلی میگیرد و هر تکه را پیش از استفاده با هشش بررسی میکند. بقیه مثل همیشه از Zaryn میآید.
sudo zev net down # قطع موقتsudo zev net down --forget # ترک شبکه روی این دستگاه| دستور | چه میکند |
|---|---|
sudo zev net up <owner>/<network> | پیوستن با ورود zev شما |
sudo zev net up --key znk_… | پیوستن با کلید پیوستن (سرورها، CI، برنامهها) |
sudo zev net down [<network>] [--forget] | قطع، یا ترک |
zev net status | همتاها، اتصالها، ترافیک |
zev net ls | شبکههایی که این دستگاه در آنهاست |
zev net share <port> [--name n] [--allow …] | اشتراک یک برنامه |
zev net unshare <name> / zev net apps | توقف اشتراک / فهرست برنامههای اشتراکی |
zev net config <owner>/<network> [--name n] | پیکربندی برای برنامههای WireGuard |