پالت فرمان

دنبال فرمانی برای اجرا بگردید…

ZarynZaryn
راهنماها·۲۰ دقیقه مطالعه

پروکسی و وی‌پی‌ان (zev proxy، zev vpn)

وقتی Zaryn یا سایت‌های دیگر بسته‌اند، سرورهای VLESS، VMess، Trojan، Shadowsocks، Hysteria2 یا WireGuard خود را برای zev، همهٔ برنامه‌ها یا کل رایانه (وی‌پی‌ان) به کار ببرید.

بعضی شبکه‌ها راه Zaryn، گیت‌هاب و خیلی چیزهای دیگر را می‌بندند یا کند می‌کنند. اگر سرور پروکسی‌ای دارید که روی آن شبکه کار می‌کند (VLESS، VMess، Trojan، Shadowsocks، Hysteria2، WireGuard، SOCKS5 یا HTTP)، zev در سطحی که انتخاب می‌کنید از آن استفاده می‌کند: | | چه چیزی از پروکسی می‌گذرد | چطور | |---|---|---| | **فقط zev** (پیش‌فرض) | اتصال‌های خود zev: ورود، clone، push، pull، `zev self update`، شبکه‌های خصوصی | `zev proxy use <name>` | | **هر برنامه‌ای که به آن بفرستید** | هر چیزی که پروکسی SOCKS5 یا HTTP را بلد است: مرورگرها، git، SSH، pip، npm، cargo، apt… | `zev proxy share on` (پورت 10808)، سپس `zev proxy system on` و `zev proxy ssh` | | **کل رایانه** | همهٔ برنامه‌ها، DNS و IPv6 آن‌ها، بدون هیچ تنظیمی در خودشان | `sudo zev vpn on` (لینوکس) | zev هرگز از پروکسی‌ای که انتخاب نکرده‌اید استفاده نمی‌کند و وقتی پروکسی کار نکند هرگز به اتصال مستقیم برنمی‌گردد. با این‌ها جای برنامه‌هایی مثل v2rayN، NekoRay یا Hiddify را می‌گیرد: [کوچ از v2rayN](#کوچ-از-v2rayn-nekoray-hiddify) یک دقیقه طول می‌کشد. ## یک دستور برای روشن، یکی برای خاموش ```bash zev proxy start # بار اول لینک سرورتان را می‌پرسد zev proxy stop ``` `zev proxy start` همه کار را می‌کند: سرور را ذخیره می‌کند، اگر لازم باشد موتور را نصب می‌کند، پورت اشتراکی 127.0.0.1:10808 را برای همهٔ برنامه‌ها باز می‌کند، پروکسی میزکارتان را تنظیم می‌کند و بعد نشان می‌دهد از کجا دیده می‌شوید. پس از راه‌اندازی دوبارهٔ رایانه هم روشن می‌ماند. `zev proxy stop` همهٔ آن را دوباره خاموش می‌کند. ```bash zev proxy start 'vless://…' # با یک سرور تازه (نقل‌قول‌ها را نگه دارید) zev proxy start --tun # کل رایانه: یک وی‌پی‌ان (رمز sudo را می‌پرسد) zev proxy start --tun --kill-switch # ... و اگر بایستد هیچ چیز مستقیم بیرون نمی‌رود zev proxy # روشن است؟ از کدام سرور؟ ``` بقیهٔ این صفحه هر بخش را توضیح می‌دهد، برای وقتی که کنترل بیشتری می‌خواهید. `zev proxy` در همهٔ طرح‌ها **رایگان** است: پروکسی مال خودتان است و هیچ ترافیکی از آن از Zaryn نمی‌گذرد. شبکه‌های خصوصی بخشی از [Premium](/docs/fa/billing-and-credits) هستند، پس استفاده از آن‌ها از راه پروکسی هم همین‌طور است. در ادامه: [لینک‌هایی که zev می‌شناسد](#لینکهایی-که-zev-میشناسد)، سپس چگونگی افزودن لینک خودتان. ## لینک‌هایی که zev می‌شناسد zev لینک‌های اشتراک‌گذاری برنامه‌های VPN (v2rayN، v2rayNG، Hiddify، Nekoray، Shadowrocket) و لینک‌های اشتراکی که فروشنده‌ها می‌دهند را می‌شناسد: | لینک | چیست | لازم دارد | |---|---|---| | `vless://…` | VLESS: با TLS یا REALITY، XTLS Vision، رمزنگاری VLESS (مثل `mlkem768x25519plus`)، و انتقال‌های `tcp`، `ws`، `grpc`، `xhttp` و `httpupgrade` | موتور Xray | | `vmess://…` | VMess (قالب v2rayN)، با همان TLS و انتقال‌ها | موتور Xray | | `trojan://…` | Trojan، روی TLS یا REALITY، با همان انتقال‌ها | موتور Xray | | `ss://…` | Shadowsocks: رمزهای ۲۰۲۲ (`2022-blake3-…`) و `aes-128-gcm`، `aes-256-gcm`، `chacha20-poly1305` | موتور Xray | | `hysteria2://…` یا `hy2://…` | Hysteria2 روی QUIC، با پنهان‌سازی Salamander (`obfs=salamander`) | موتور Xray | | `wireguard://…` یا `wg://…` | WireGuard، از جمله Cloudflare WARP (`reserved=`)؛ بدون نیاز به root | موتور Xray | | `socks5://user:pass@host:port` | پروکسی SOCKS5 | هیچ | | `http://…` یا `https://…` | پروکسی HTTP | هیچ | | نشانی اشتراک | فهرستی از هر کدام از این‌ها، از فروشنده‌تان: [اشتراک‌ها](#اشتراکها) را ببینید | | zev آنچه امن نیست یا کار نمی‌کند را از اول نمی‌پذیرد، نه این‌که بعداً خطا بدهد: رمزهای قدیمی جریانی Shadowsocks (`aes-256-cfb`، `rc4-md5`)، افزونه‌های Shadowsocks، و انتقال‌هایی که Xray کنار گذاشته (`h2`، `kcp`، `quic`). `insecure=1` یا `allowInsecure` در لینک هرگز بررسی گواهی را خاموش نمی‌کند؛ اگر سرورتان گواهی خودش را دارد، آن را با `pcs=` (یا برای Hysteria2 با `pinSHA256=`) سنجاق کنید، همان‌طور که برنامهٔ فروشنده‌تان می‌کند. ## پروکسی‌تان را اضافه کنید آن را با نامی که خودتان انتخاب می‌کنید ذخیره کنید. لینک شامل اطلاعات حساب شماست؛ برای این‌که در تاریخچهٔ ترمینال نماند، آن را ننویسید و وقتی پرسیده شد بچسبانید: ```bash zev proxy add work --use Paste the link, then press Enter: vless://… ✓ Saved work: vless proxy.example.com:443 tcp+tls xtls-rprx-vision mlkem768x25519plus fp=firefox sni=… pinned ``` `--use` آن را پروکسی‌ای هم می‌کند که zev از این به بعد استفاده می‌کند. لینک‌های ذخیره‌شده در `~/.config/zev/proxies` هستند و فقط خودتان می‌توانید آن را بخوانید. `zev proxy ls` آن‌ها را بدون بخش‌های محرمانه‌شان نشان می‌دهد. ## اشتراک‌ها اگر فروشنده‌تان یک نشانی اشتراک داده (یک لینک که سرورهای زیادی را فهرست می‌کند و وقتی عوض می‌شوند به‌روز می‌شود)، یک بار اضافه‌اش کنید: ```bash zev proxy sub add myvpn https://provider.example/sub/abc123 ✓ myvpn: 24 servers (12 vless, 6 trojan, 4 shadowsocks, 2 hysteria2), named myvpn-1 … myvpn-24 Pick one: zev proxy use myvpn-1 (zev proxy test myvpn-1 tries it first) ``` zev آن را از راه پروکسی‌ای که الان استفاده می‌کنید دانلود می‌کند (میزبان اشتراک‌ها هم اغلب بسته است)، و اگر نشد، مستقیم. سرورهایی که قابل استفاده نیستند با دلیلشان فهرست می‌شوند و بقیه ذخیره می‌شوند. | فرمان | چه می‌کند | |---|---| | `zev proxy sub update [<نام>]` | دوباره دانلودش می‌کند: سرورهایش با فهرست تازه جایگزین می‌شوند. اگر سروری که استفاده می‌کنید حذف شده باشد، zev می‌گوید و مستقیم وصل می‌شود | | `zev proxy sub ls` | اشتراک‌ها و تعداد سرورهای هر کدام | | `zev proxy sub rm <نام>` | فراموش کردن اشتراک و سرورهایش | قالب معمول base64 و فهرست ساده‌ی لینک‌ها هر دو کار می‌کنند. فایل‌های Clash (`proxies:`) و sing-box (JSON) لینک اشتراک‌گذاری نیستند: از فروشنده‌تان قالب v2ray / لینک اشتراک همان اشتراک را بخواهید. ## نصب موتور همه چیز به‌جز SOCKS5 و HTTP را [Xray-core](https://github.com/XTLS/Xray-core) صحبت می‌کند که zev خودش روی همین رایانه اجرایش می‌کند. یک بار نصبش کنید: ```bash zev proxy engine install ``` zev همان نسخه‌ای از Xray را که با آن آزموده شده دانلود می‌کند و پیش از باز کردن، SHA-256 آن را بررسی می‌کند. اگر GitHub بسته است، فایل zip مخصوص سیستمتان را از راه دیگری بگیرید و `zev proxy engine install --from Xray-linux-64.zip` را اجرا کنید (همان بررسی انجام می‌شود). Xrayای که از قبل دارید هم کار می‌کند: zev در `PATH` می‌گردد، یا `ZEV_XRAY=/path/to/xray` را تنظیم کنید. ## امتحانش کنید ```bash zev proxy test work: vless proxy.example.com:443 tcp+tls xtls-rprx-vision … engine ✓ Xray on 127.0.0.1:41377 (48 ms) Zaryn ✓ 200 in 310 ms internet ✓ 204 in 290 ms ``` `zev proxy test <نام>` یک پروکسی ذخیره‌شده را بدون رفتن روی آن امتحان می‌کند. اگر بررسی‌ای ناموفق باشد، آخرین خط‌های گزارش Xray زیرش نمایش داده می‌شود. برای دیدن این‌که zev دقیقاً با یک لینک چه می‌کند، `zev proxy config <نام>` پیکربندی Xrayای را که اجرا می‌کند چاپ می‌کند (رمزهای پروکسی در آن هست، پس با کسی به اشتراک نگذاریدش). ## وقتی کار نمی‌کند: zev proxy doctor `zev proxy doctor` پیدا می‌کند چه چیزی بین شما و Zaryn ایستاده، آنچه را zev خودش می‌تواند درست کند درست می‌کند، و هر درمان را پیش از نگه داشتن با یک درخواست واقعی امتحان می‌کند: ```bash zev proxy doctor ``` ```text Checking the way to Zaryn through work: vless proxy.example.com:443 tcp+tls fp=chrome … Network: wlan0 via 192.168.1.1; fixes in force: none work vless proxy.example.com:443 … ✗ DNS lies: this network answers 10.10.34.36 for proxy.example.com, DNS over HTTPS 203.0.113.9 (only that one accepts connections) fix: look names up with DNS over HTTPS (https://1.1.1.1/dns-query) ✓ TCP: 203.0.113.9:443 connects in 84 ms ✗ SNI filtering: TLS naming proxy.example.com is reset, naming www.example.com goes through · the reset comes from 3 routers away, near you: in your provider's network (the server is 14 away) Finding a way through 8 ways at once · as it is: no way through · ClientHello in pieces (split: 10-20 byte pieces): 231 ms … ✓ kept: ClientHello in pieces (split: 10-20 byte pieces) (the cheapest that works, and proven again) Result ✓ api.zaryn.xyz answers through the proxy (200 in 310 ms) ✓ saved for wlan0 via 192.168.1.1: every zev command here uses them, and zev picks them up again when you're back on this network ``` دنبال چه می‌گردد و چه می‌کند: | مشکل | zev از کجا می‌فهمد | zev چه می‌کند | |---|---|---| | **DNS دروغگو** | پاسخ شبکه برای نام پروکسی در برابر DNS روی HTTPS (که مستقیم با نشانی IP پرسیده می‌شود)؛ پاسخ متفاوتی که هیچ اتصالی نمی‌پذیرد، یا نشانی خود فیلتر (`10.10.34.x`)، دروغ است | از آن به بعد نام‌ها را با DNS روی HTTPS پیدا می‌کند، هم zev و هم Xray | | **فیلتر SNI** | TCP وصل می‌شود، ولی دست‌دادن TLS که نام سرور را می‌برد قطع می‌شود، در حالی که با نام سایتی دیگر رد می‌شود | راه‌های دور زدنش را مسابقه می‌دهد (پایین‌تر) | | **فیلتر کجاست** | دست‌دادن دوباره با TTL برابر ۱، ۲، ۳ … فرستاده می‌شود: پس از همان تعداد روتر از بین می‌رود، پس اولین فاصله‌ای که reset می‌گیرد جای فیلتر است | می‌گوید فیلتر در شبکهٔ سرویس‌دهندهٔ شماست یا نزدیک سرور | | **IPv6 خراب** | نشانی IPv6 نام به مهلت تمام‌شده می‌خورد در حالی که IPv4 وصل می‌شود (هر اتصال اول منتظر IPv6 می‌ماند) | فقط IPv4 | | **درگاه بسته** | درگاه پروکسی جواب نمی‌دهد در حالی که درگاه‌های دیگر همان نشانی جواب می‌دهند | می‌گوید کدام درگاه‌ها جواب می‌دهند: از گردانندهٔ سرور لینکی روی یکی از آن‌ها بخواهید | | **نشانی بسته** | هیچ درگاهی از آن نشانی جواب نمی‌دهد | همین را می‌گوید: سروری دیگر، یا لینکی پشت CDN | | **یخ‌زدگی** | درخواست‌های کوچک کار می‌کنند ولی دانلود پس از ۱۵ تا ۲۰ کیلوبایت می‌ایستد و دیگر ادامه نمی‌یابد (فیلترها اتصال‌هایی را که نمی‌شناسند گرسنه نگه می‌دارند) | همین را می‌گوید: لینک REALITY یا XHTTP، یا سروری دیگر، معمولاً از آن در امان است | | **کندسازی** | دانلودها می‌خزند | همین را با سرعت می‌گوید | | **ساعت** | سرآیند `Date` سرور Zaryn در برابر ساعت شما: VMess اتصال‌های بیش از ۲ دقیقه اختلاف را رد می‌کند، و با چند روز اختلاف گواهی‌ها منقضی به نظر می‌رسند | می‌گوید چطور تنظیمش کنید (به دسترسی مدیر نیاز دارد) | | **شنود TLS** | گواهی Zaryn در مسیر مستقیم معتبر نیست: چیزی به جای آن جواب می‌دهد (یا صفحهٔ ورود Wi-Fi) | هرگز بررسی گواهی را خاموش نمی‌کند؛ لینکی با گواهی پین‌شده از آن عبور می‌کند | ### پیدا کردن راهی به آن سو وقتی راه کار نمی‌کند، doctor مجبورتان نمی‌کند تنظیمات را حدس بزنید. همه را هم‌زمان در یک Xray امتحان می‌کند، هر کدام راهی جدا به سرور: - **ClientHello تکه‌تکه**، در سه اندازه (`split` ۱۰ تا ۲۰ بایت، `large` ۱۰۰ تا ۲۰۰ بایت، `tiny` ۱ تا ۵ بایت)، تا فیلتری که نام سرور را می‌خواند هرگز آن را یکجا در یک بسته نبیند؛ - **اثرانگشت‌های TLS دیگر** (Chrome، Firefox، Safari، تصادفی)، برای فیلترهایی که دست‌دادن را از شکلش می‌بندند؛ - هر دو با هم. زمان هر راه اندازه گرفته می‌شود و ارزان‌ترینی که کار می‌کند برنده است (کمی زمان اضافه به حساب تکه‌های ریز گذاشته می‌شود که هر اتصال را کند می‌کنند). سپس برنده باید در موتوری که zev واقعاً اجرا می‌کند، با یک درخواست واقعی، دوباره کار کند؛ راهی که فقط یک بار رد شده کنار گذاشته می‌شود و نوبت بعدی است. تا این امتحان قبول نشود چیزی ذخیره نمی‌شود. ### برای هر شبکه درمان‌ها **برای شبکه‌ای که رویش هستید** ذخیره می‌شوند، که zev آن را از روی روترش می‌شناسد (هشی از نشانی و نشانی سخت‌افزاری روتر؛ روی لینوکس). خانه، محل کار و هات‌اسپات گوشی هر کدام درمان‌های خودشان را دارند، و وقتی برمی‌گردید zev خودش دوباره سراغشان می‌رود. جاهای دیگر، درمان‌هایی که دستی تنظیم کرده‌اید اعمال می‌شوند. ```bash zev proxy set # این شبکه، درمان‌هایش، و شبکه‌هایی که zev به یاد دارد zev proxy set forget # فراموش کردن آنچه doctor این‌جا پیدا کرد zev proxy set fragment split # تنظیم دستی، برای همهٔ شبکه‌ها (dns <url>، ipv4 on، fp <name> … ، یا off) zev proxy doctor --no-fix # فقط نگاه کن، چیزی را عوض نکن zev proxy doctor home # بررسی پروکسی ذخیره‌شدهٔ دیگری ``` ### برای پشتیبانی و دستیارهای هوش مصنوعی `zev proxy doctor --json` کل گزارش را به شکل JSON چاپ می‌کند: هر یافته با راهنمایی‌اش، درمان‌ها، این‌که ذخیره شدند یا نه، و فاصلهٔ فیلتر. هرگز لینک یا رمزهایش در آن نیست، پس می‌شود آن را در درخواست پشتیبانی چسباند یا به یک دستیار داد. ## استفادهٔ روزمره وقتی پروکسی‌ای انتخاب شد کار دیگری لازم نیست: همهٔ فرمان‌های zev از راه آن می‌روند. موتور با اولین فرمانی که وصل می‌شود روشن می‌شود و برای فرمان‌های بعدی روشن می‌ماند. ```bash zev proxy status # کدام پروکسی، و این‌که موتور روشن است یا نه zev proxy use home # رفتن روی پروکسی ذخیره‌شدهٔ دیگری zev proxy off # دوباره اتصال مستقیم zev proxy stop # خاموش کردن همه چیز (پورت اشتراکی، میزکار، وی‌پی‌ان) zev proxy rm old # فراموش کردن یک پروکسی ``` برای یک فرمان، یا در اسکریپت‌ها و CI، `ZEV_PROXY` انتخاب را عوض می‌کند: یک نام ذخیره‌شده، یک لینک، یا `off`. ```bash ZEV_PROXY=off zev pull ZEV_PROXY=home zev push ``` ## همهٔ برنامه‌های این رایانه: zev proxy share ```bash zev proxy share on ``` از آن به بعد **127.0.0.1:10808** پورت پروکسی‌ای است که هر برنامه‌ای می‌تواند به کار ببرد؛ SOCKS5 و HTTP روی یک پورت (10808 همان پورتی است که v2rayN به کار می‌برد، پس تنظیماتی که برای آن کرده‌اید کار می‌کنند). در پس‌زمینه اجرا می‌شود، با ورودتان دوباره شروع می‌شود، و: - **دنبال انتخاب شما می‌آید:** `zev proxy use other` عوضش می‌کند، یک گروه سرور خودش به سریع‌ترین سرور سالم می‌رود، و اصلاح‌هایی که `zev proxy doctor` برای شبکه‌ای که در آن هستید پیدا کرده، وقتی بین شبکه‌ها جابه‌جا می‌شوید همراهتان می‌آیند؛ - **مراقب خودش است:** اگر موتورش بایستد دوباره راهش می‌اندازد؛ وقتی پروکسی‌ای انتخاب نشده (`zev proxy off`) پورت بسته می‌شود، به جای اینکه ترافیک مستقیم بیرون برود ([خودش درست می‌شود](#خودش-درست-میشود) بیشتر می‌گوید). ```bash zev proxy share status # در حال اشتراک؟ از کدام سرور، از کی zev proxy share on --port 1080 zev proxy share off ``` **دستگاه‌های دیگر شبکه‌تان** (گوشی، لپ‌تاپ دوم): `zev proxy share on --lan` پورت را پشت یک رمز به شبکهٔ محلی باز می‌کند که zev چاپش می‌کند. پروکسی دستگاه را روی نشانی این رایانه، پورت 10808، کاربر `zev` و همان رمز بگذارید. `zev proxy share on --local` دوباره آن را به روی شبکه می‌بندد. نشانی‌های شبکهٔ خودتان (LAN، `10.0.0.0/8`، `192.168.0.0/16` و مانند آن‌ها) مستقیم می‌روند، نه از پروکسی. ### میزکار و مرورگرها: zev proxy system ```bash zev proxy system on # تنظیم پروکسی GNOME یا KDE → پورت اشتراکی؛ ترمینال‌های تازه http_proxy و all_proxy… می‌گیرند zev proxy system off ``` مرورگرها و بیشتر برنامه‌های میزکار از تنظیم سیستم پیروی می‌کنند. ترمینال‌هایی که پس از ورود تازه باز می‌شوند `http_proxy`، `https_proxy` و `all_proxy` را می‌گیرند (از `~/.config/environment.d/90-zev-proxy.conf`). ### SSH و git: zev proxy ssh ```bash zev proxy ssh # GitHub، GitLab و Codeberg از راه پروکسی zev proxy ssh github.com myserver # یا میزبان‌هایی که نام می‌برید zev proxy ssh off ``` zev یک بخش با علامت روشن در بالای `~/.ssh/config` می‌گذارد با `ProxyCommand zev proxy connect %h %p`؛ از آن به بعد `git push` به گیت‌هاب از پروکسی می‌رود و چیز دیگری در فایل عوض نمی‌شود. `zev proxy connect <host> <port>` هر جا ProxyCommand کار کند کار می‌کند و نه `nc` لازم دارد نه پورت اشتراکی (وقتی اشتراک خاموش است از موتور خود zev استفاده می‌کند). ### یک دستور: zev proxy run ```bash zev proxy run git push zev proxy run pip install requests zev proxy run -- curl https://example.com ``` دستور، `http_proxy`، `https_proxy`، `all_proxy` و یک `GIT_SSH_COMMAND` می‌گیرد که از پروکسی می‌گذرد؛ پس HTTP، SOCKS و git از راه SSH همه از آن استفاده می‌کنند. کد خروجش همان کد خروج zev است. ## کل رایانه: zev vpn روی لینوکس، zev می‌تواند **همه چیز** را ببرد: همهٔ برنامه‌ها، بدون هیچ تنظیم پروکسی در خودشان، به‌اضافهٔ جست‌وجوهای DNS و IPv6 آن‌ها. ```bash sudo zev vpn on sudo zev vpn on --kill-switch sudo zev vpn on --exclude example.ir,192.0.2.0/24 zev vpn status sudo zev vpn off ``` - از پروکسی‌ای استفاده می‌کند که با `zev proxy use` انتخاب کرده‌اید (به‌عنوان خودتان؛ `sudo` فقط شبکه را راه می‌اندازد)، و وقتی عوضش کنید دنبالش می‌آید. - به شکل سرویس سیستم اجرا می‌شود: با روشن شدن رایانه شروع می‌شود و اگر بایستد برمی‌گردد. - **شبکهٔ محلی‌تان مستقیم می‌ماند**، و همین‌طور شبکه‌های Docker و شبکه‌های خصوصی: هر چیزی که رایانه‌تان مسیر دقیق‌تری برایش دارد. - **DNS از تونل می‌گذرد:** نام‌ها در آن سو با HTTPS پیدا می‌شوند، پس DNS آلوده‌ای در شبکه‌تان نمی‌تواند شما را جای دیگری بفرستد. - **`--exclude`** بعضی سایت‌ها یا نشانی‌ها را مستقیم می‌فرستد (نام، نشانی IP، بازهٔ CIDR). `zev proxy route iran` سایت‌های ایران را در همهٔ حالت‌ها مستقیم می‌فرستد. - **`--kill-switch`:** اگر وی‌پی‌ان به هر دلیل بایستد، هیچ چیز مستقیم بیرون نمی‌رود؛ فقط شبکهٔ محلی کار می‌کند تا وی‌پی‌ان برگردد یا `sudo zev vpn off` را اجرا کنید. چطور کار می‌کند: zev یک رابط شبکه (`zev0`) می‌سازد که موتور Xray آن را می‌خواند، و همه چیز را به آن می‌فرستد جز آنچه مسیر دقیق‌تری دارد و اتصال‌های خود موتور (که یک علامت دیوارهٔ آتش دارند تا دور نزنند). `sudo zev vpn off` رابط، مسیرها، قاعده‌ها و جدول دیوارهٔ آتش را برمی‌دارد؛ چیزی جا نمی‌ماند. روی macOS و ویندوز فعلاً `zev proxy share on` را با `zev proxy system on` به کار ببرید. ## خودش درست می‌شود پورت اشتراکی و وی‌پی‌ان هر ۳۰ ثانیه بررسی می‌کنند که ترافیک واقعاً می‌گذرد. وقتی سه بررسی پشت سر هم ناموفق باشد: 1. روی میزکار اعلانی می‌گیرید. 2. zev خودش [`zev proxy doctor`](#وقتی-کار-نمیکند-zev-proxy-doctor) را اجرا می‌کند، حداکثر هر ۱۰ دقیقه یک بار. پیدا می‌کند چه چیزی در این شبکه راه را بسته (DNS دروغ‌گو، پورت بسته، فیلتر SNI، ساعت نادرست) و اصلاحی برای همین شبکه ذخیره می‌کند. 3. موتور با آن اصلاح دوباره شروع می‌شود و اعلانی می‌گوید چه چیزی اصلاح شد؛ مثلاً *Fixed for wlo1 via 192.168.1.1: TLS fragmentation (split)*. در یک گروه سرور، سرور از کار افتاده در این میان کنار گذاشته می‌شود. وقتی کیل‌سوییچ وی‌پی‌ان روشن است، zev وی‌پی‌ان را برای doctor متوقف نمی‌کند و فقط موتور را دوباره راه می‌اندازد. ## بررسی: zev proxy check ```text $ zev proxy check Where you appear from through zev 203.0.113.9 (DE) without zev 5.160.12.34 (IR) Leaks ✓ every app goes through the VPN (they appear from the proxy's address) ✓ DNS goes through the tunnel ✓ no IPv6 way out (nothing to leak) ``` نشانی و کشوری را نشان می‌دهد که سایت‌ها از راه پروکسی و بدون آن می‌بینند، و وقتی وی‌پی‌ان روشن است، اینکه آیا همهٔ برنامه‌ها، DNS و IPv6 واقعاً از آن می‌گذرند. ## تماشا: zev proxy top ```bash zev proxy top ``` ترافیک زندهٔ پورت اشتراکی یا وی‌پی‌ان: هر بخش در کل و همین حالا چقدر فرستاده و گرفته (خود zev، پورت اشتراکی، وی‌پی‌ان، هر سرور یک گروه، آنچه مستقیم رفته). `--once` یک بار چاپش می‌کند. ## کوچ از v2rayN، NekoRay، Hiddify 1. سرورهایتان را از برنامهٔ قبلی بیرون بیاورید: بیشترشان می‌توانند یک سرور را به شکل لینک (`vless://…`) بدهند یا نشانی اشتراک را. 2. آن‌ها را به zev بدهید: ```bash zev proxy engine install # یک بار: موتور Xray zev proxy add home 'vless://…' --use # یک سرور، یا: zev proxy sub add work https://… # یک اشتراک zev proxy use work # همهٔ سرورهایش به‌عنوان یک گروه: سریع‌ترین، با جایگزینی خودکار ``` 3. برنامهٔ قبلی را ببندید (پورت 10808 را گرفته)، سپس: ```bash zev proxy share on # همان پورت 10808: تنظیم SSH و برنامه‌هایتان کار می‌کنند zev proxy system on # مرورگرها و میزکار ``` 4. یا برای همه چیز با هم: `sudo zev vpn on`. آنچه علاوه بر آن می‌گیرید: جایگزینی خودکار بین سرورها بر اساس سرعتی که اندازه گرفته می‌شود، خوددرمانی روی شبکه‌هایی که فیلتر می‌کنند، اصلاح‌های هر شبکه که همراهتان می‌آیند، بررسی نشتی، و همان تنظیمات برای اتصال‌های خود zev. ## چند سرور: سریع‌ترین، و جایگزینی خودکار روی شبکه‌های فیلترشده سرورها می‌آیند و می‌روند: یکی صبح سریع است و تا شب بسته می‌شود. چند سرور به zev بدهید تا از بهترینشان استفاده کند، و وقتی یکی دیگر جواب نداد خودش سراغ دیگری برود: ```bash zev proxy use myvpn # همهٔ سرورهای یک اشتراک zev proxy use auto # همهٔ پروکسی‌هایی که ذخیره کرده‌اید zev proxy use work,home,backup # همین‌ها ``` zev همهٔ سرورها را هم‌زمان می‌سنجد (یک درخواست کوچک از راه هر کدام)، سه تای بهتر را روشن نگه می‌دارد، و Xray هر اتصال را از سریع‌ترینی که جواب می‌دهد می‌فرستد و هر ۳۰ ثانیه دوباره بررسی‌شان می‌کند. وقتی سرور در حال استفاده از کار بیفتد، اتصال بعدی از سرور دیگری می‌رود؛ لازم نیست کاری بکنید. هر ۳۰ دقیقه، فرمان بعدی zev همهٔ فهرست را دوباره می‌سنجد تا سروری که بهتر شده برگردد. برای دیدن رتبه‌بندی، یا رتبه‌بندی همین الان: ```bash zev proxy probe Probing 4 servers at once (https://www.gstatic.com/generate_204)… server now expected answers ● work 92 ms 95+-12 100% vless proxy.example.com:443 … ● home 140 ms 151+-20 100% trojan home.example:443 … ● backup 410 ms 388+-61 83% shadowsocks 203.0.113.9:8388 … old down - 0% vmess old.example:443 … ● in use (the best 3 by expected latency and answers; Xray switches between them) ``` > **چرا «expected» و نه فقط «now»؟** یک درخواست چیز زیادی نمی‌گوید: یک پاسخ کند DNS یا یک بستهٔ گم‌شده می‌تواند یک بار سرور خوبی را بد نشان دهد. zev برای هر سرور تخمینی پیوسته نگه می‌دارد (فیلتر کالمن): نویز را صاف می‌کند، یک جهش تکی را نادیده می‌گیرد، سروری را که واقعاً کند شده دنبال می‌کند، و به اندازه‌گیری قدیمی کمتر از تازه اعتماد می‌کند. سروری که زیاد جواب نمی‌دهد پایین‌تر از سرور پایدار قرار می‌گیرد، حتی اگر آن یکی کمی کندتر باشد. اندازه‌گیری‌ها در `~/.cache/zev/proxy/health.json` نگه داشته می‌شوند، با هش هر لینک، هرگز خود لینک. `zev proxy probe <نام>`، `zev proxy probe auto` یا `zev proxy probe a,b,c` سرورهای دیگر را بدون رفتن رویشان رتبه‌بندی می‌کنند. `zev proxy status` نشان می‌دهد موتور الان کدام سرورها را اجرا می‌کند. ## زنجیره: یک سرور از راه سرور دیگر زنجیره به آخرین سرورش از راه سرورهای قبلی می‌رسد. وقتی سروری که می‌خواهید از آن بیرون بیایید از شبکهٔ شما بسته است ولی از سرور دیگری در دسترس است، از زنجیره استفاده کنید: ```bash zev proxy chain out home work # zev → home → work → Zaryn zev proxy use out ``` `home` فقط می‌بیند که به `work` وصل می‌شوید؛ Zaryn نشانی `work` را می‌بیند. هر حلقه یک پروکسی ذخیره‌شده است، از هر نوعی که بالاتر آمد. Hysteria2 و WireGuard روی UDP کار می‌کنند، پس در زنجیره فقط می‌توانند حلقهٔ اول باشند. `zev proxy ls` زنجیره‌ها را با حلقه‌هایشان نشان می‌دهد و `zev proxy rm out` یکی را فراموش می‌کند (پروکسی‌ای که حلقهٔ یک زنجیره است تا وقتی زنجیره هست پاک نمی‌شود). ## مسیرها: چه چیزی مستقیم برود بعضی جاها بدون پروکسی سریع‌ترند، یا فقط بدون آن کار می‌کنند: سروری در کشور خودتان، آینهٔ داخلی شرکت، سایت‌هایی که اتصال از خارج را رد می‌کنند. مسیرها این‌ها را مستقیم می‌فرستند و بقیه را از راه پروکسی: ```bash zev proxy route iran # سایت‌ها و نشانی‌های ایران مستقیم zev proxy route direct git.company.example 10.20.0.0/16 zev proxy route proxy blocked.example.ir # از راه پروکسی، هر چه مسیر مستقیم بگوید zev proxy route # فهرستشان zev proxy route rm git.company.example zev proxy route clear ``` | مسیر | چه چیزی را می‌گیرد | |---|---| | `example.com` | همین نام و همهٔ نام‌های زیرش (`api.example.com`) | | `.ir` | همهٔ نام‌هایی که به `.ir` ختم می‌شوند | | `full:host.example` | فقط همین نام | | `5.160.0.0/16`، `2a01:5ec0::/29`، `203.0.113.7` | نشانی‌ها | | `geoip:ir` | همهٔ نشانی‌های یک کشور (هر کد دوحرفی کشور) | | `geosite:category-ir` | فهرست سایت‌های یک کشور یا یک سرویس، که پروژهٔ Xray نگه می‌دارد | | `iran` | `.ir`، `geosite:category-ir` و `geoip:ir` با هم | مسیرها از فرمان بعدی zev روی همهٔ پروکسی‌ها اعمال می‌شوند: سرور تکی، چند سرور و زنجیره. `geoip:` و `geosite:` از داده‌های مسیریابی Xray استفاده می‌کنند که `zev proxy engine install` کنار Xray می‌گذارد؛ اگر موتور را پیش از آمدن این مسیرها نصب کرده‌اید، یک بار دیگر اجرایش کنید. با مسیری روی نشانی‌ها، Xray نام‌ها را روی همین رایانه پیدا می‌کند تا مقایسه‌شان کند؛ نام‌هایی که فقط از راه پروکسی پیدا می‌شوند همچنان از راه آن می‌روند. ## شبکه‌های خصوصی `sudo zev net up` پروکسی‌ای را که استفاده می‌کنید برمی‌دارد و همراه شبکه ذخیره می‌کند، تا سرویس پس‌زمینهٔ شبکه هم از راه آن به Zaryn و رله برسد. ترافیک رله هم داخل پروکسی می‌رود؛ به همین خاطر دستگاهی که پشت شبکه‌ای است که همه چیز دیگر را می‌بندد باز هم به تیمش وصل می‌شود. در این حالت `zev net status` عبارت `through the proxy …` را نشان می‌دهد. ```bash sudo zev net up your-name/office # با پروکسی‌ای که استفاده می‌کنید sudo zev net up your-name/office --proxy home # با پروکسی ذخیره‌شدهٔ دیگری (چند سرور یا زنجیره هم می‌شود) sudo zev net up your-name/office --no-proxy # مستقیم ``` سرویس نسخهٔ خودش از Xray را از `/var/lib/zev/net` اجرا می‌کند (فقط root)، هرگز نسخه‌ای از پوشهٔ خانهٔ شما را. دستگاه‌های پشت پروکسی از راه رله با بقیه حرف می‌زنند. ترافیکشان از این سر تا آن سر رمزنگاری‌شده می‌ماند؛ پروکسی و رله فقط بسته‌های رمزشدهٔ WireGuard را می‌بینند. ## چه چیزهایی هرگز از پروکسی نمی‌روند نشانی‌های روی رایانهٔ خودتان، شبکهٔ محلی و شبکه‌های خصوصی: `localhost`، `127.0.0.0/8`، `10.0.0.0/8`، `172.16.0.0/12`، `192.168.0.0/16`، `100.64.0.0/10` (شبکه‌های خصوصی)، `fc00::/7` و `*.zaryn.internal`. برای عوض کردن این فهرست، `ZEV_NO_PROXY` را به شکل `--noproxy` در curl تنظیم کنید (نام‌ها، `.domain`ها، بازه‌های CIDR). ## امنیت - **zev به اتصال مستقیم برنمی‌گردد.** اگر پروکسی انتخاب‌شده قابل استفاده نباشد (موتور روشن نمی‌شود، لینک خراب است)، فرمان متوقف می‌شود و دلیلش را می‌گوید. با `zev proxy off` مستقیم وصل شوید. - **بررسی گواهی روشن می‌ماند.** لینک می‌تواند گواهی سرور را سنجاق کند (`pcs=` یا `pinSHA256=`) و zev آن را به Xray می‌دهد. zev گزینهٔ `allowInsecure` را در لینک‌ها نادیده می‌گیرد: لینکی که کسی به شما می‌دهد نباید بتواند بررسی گواهی را خاموش کند. - **پورت اشتراکی برای همین رایانه است.** `zev proxy share on` فقط روی `127.0.0.1` گوش می‌دهد؛ `--lan` آن را فقط پشت یک رمز به شبکه باز می‌کند. - **وی‌پی‌ان نسخهٔ خودش از موتور را اجرا می‌کند.** `sudo zev vpn on` موتور Xray را در `/var/lib/zev/vpn` و با مالکیت root کپی می‌کند، تا سرویس root هرگز فایلی را اجرا نکند که حساب کاربری‌تان بتواند عوضش کند. - **موتور فقط مال شماست.** موتور خود zev فقط روی `127.0.0.1` و پشت یک رمز تصادفی گوش می‌دهد. curl آن رمز را از فایلی می‌گیرد که فقط شما می‌توانید بخوانید، نه از خط فرمانش؛ پس کاربران دیگر رایانه نمی‌توانند از پروکسی‌تان استفاده کنند یا آن را ببینند. - **با لینک مثل رمز رفتار کنید.** لینک کلید حساب شما روی آن سرور است. اگر جایی درز کرد (در یک گفتگو، یک اسکرین‌شات، یک مخزن عمومی)، از کسی که سرور را اداره می‌کند لینک تازه بخواهید.