راهنمای پنل
پنل بخش مدیریت یک نود است. روی میزبان نود اجرا میشود و از راه سوکت کنترل نود، کاربران و تنظیمات را عوض میکند. در مرورگر از آن استفاده کنید، یا API مدیریتی را صدا بزنید.
پیش از شروع
Section titled “پیش از شروع”نود و پنل را با راهنمای نصب نصب کنید. پنل فقط روی 127.0.0.1 گوش میدهد، پس یک وبسرور با TLS روی همان میزبان باید آن را سرو کند.
پیکربندی پنل
Section titled “پیکربندی پنل”پنل panel.json را هنگام شروع میخواند. بعد از ویرایش، sudo bash veilway.sh restart panel را اجرا کنید. فیلد ناشناخته مانع شروع پنل میشود.
| فیلد | پیشفرض | کاری که انجام میدهد |
|---|---|---|
listen |
127.0.0.1:8480 |
نشانی گوشدادن. باید loopback باشد، چون پنل TLS ندارد. |
prefix |
/panel |
مسیر مدیریت. در نصب تصادفی ساخته میشود. بدون اسلش پایانی. فقط حروف، رقم، -، _، . و /. |
sub_path |
/sub |
مسیری که وبسرور شما درخواستهای اشتراک را به آن میفرستد. هر نقطه پایانی روی این مسیر، یک اسلش و نام خودش است، مثل /sub/main. باید با prefix فرق داشته باشد و هیچکدام داخل دیگری نباشد. |
database |
panel.db |
پایگاهداده SQLite. کلیدی در آن نیست. |
keys |
panel.keys |
کلیدهای رازهای مهرومومشده. حالت 600. جدا از پایگاهداده. |
signing |
signing.keys |
کلیدهای امضای اشتراک. حالت 600. |
gateway |
gateway.keys |
کلیدهای دروازه که درخواستهای اشتراک را باز میکنند. حالت 600. کلیدهای دروازه را ببینید. |
gateway_next |
gateway.next |
جایی که پنل نیمهٔ خصوصی کلید دروازهٔ بعدی را یک بار مینویسد. حالت 600. فایل را از سرور بیرون ببرید. |
node_socket |
/run/veilway/control.sock |
سوکت کنترل نود. |
allowed_hosts |
[] |
نام میزبانهایی که صفحههای مدیریت به آنها جواب میدهند. خالی یعنی هر میزبانی، که فقط پشت وبسروری که میزبان را بررسی میکند امن است. |
trusted_proxies |
[] |
نشانیهایی که پنل X-Forwarded-For آنها را باور میکند. نشانی وبسرور خودتان را بگذارید. اگر direct برابر true نباشد لازم است. |
not_found |
یک صفحهٔ ۴۰۴ ساده | وضعیت، سرآیندها و متن پاسخ برای هر مسیری که پنل سرو نمیکند. ۴۰۴ وبسرور خودتان را در آن کپی کنید. |
trusted_mirrors |
[] |
تا ۸ آینهٔ رله، هر کدام {"name": "...", "secret": "..."}. رمز ۳۲ تا ۶۴ بایت تصادفی به base64url بدون پدینگ است. آینههای رله را ببینید. |
secure_cookies |
true |
کوکی نشست را امن علامت میزند. فقط برای آزمایش، یا HTTP ساده روی localhost خاموشش کنید. |
direct |
false |
فقط وقتی true کنید که هیچ پروکسی جلوی پنل نیست. |
update_check |
true |
هر ۶ ساعت از GitHub میپرسد نسخهٔ تازهتری از پنل هست یا نه. چیز دیگری دربارهٔ پنل فرستاده نمیشود. بهروزرسانی پنل را ببینید. |
update_request |
/var/lib/veilway-panel-update/request |
جایی که پنل درخواست بهروزرسانی را مینویسد. اسکریپت نصب پوشه را میسازد. |
two_step |
"on" |
"off" کد برنامهٔ احراز هویت را خاموش میکند. هر مقدار دیگر آن را روشن نگه میدارد. بخش «ورود دومرحلهای خاموش» را ببینید. |
پنل شروع نمیشود اگر listen loopback نباشد، prefix و sub_path قواعد بالا را بشکنند، یا trusted_proxies خالی باشد و direct برابر true نباشد.
جابهجا کردن صفحههای مدیریت
Section titled “جابهجا کردن صفحههای مدیریت”sudo bash veilway.sh panel-prefix /new-path را اجرا کنید. بدون مسیر، اسکریپت یک مسیر تصادفی برمیدارد. تأیید میگیرد، prefix را در panel.json عوض میکند، پنل را دوباره راه میاندازد و خطهایی را که وبسرور شما لازم دارد چاپ میکند. اگر پنل شروع نشود، مسیر قبلی را برمیگرداند. مسیر تازه از قواعد prefix پیروی میکند و نباید sub_path باشد، داخل آن باشد یا آن را در خود داشته باشد. نشانکها و پیکربندی وبسرور را بهروز کنید.
ورود دومرحلهای خاموش
Section titled “ورود دومرحلهای خاموش”فقط برای آموزش و دمو. با این حالت هر کس گذرواژهٔ یک مدیر را بفهمد وارد پنل میشود و به نود شما و لینک همهٔ کاربران میرسد. روی پنلی که کاربر واقعی دارد هرگز استفاده نکنید. نصب تازه میپرسد که روشن بماند یا نه، و جواب پیشفرض بله است. جواب نه، یا --no-two-step، مقدار "two_step": "off" را مینویسد (از v0.3.4).
این خط را به panel.json اضافه کنید و sudo bash veilway.sh restart panel را اجرا کنید:
"two_step": "off"نصبهای از ۲۰۲۶-۱۰-۱۹ به بعد "two_step": "on" در فایل دارند. این دو دستور آن را به off عوض میکنند و پنل را دوباره راه میاندازند:
sudo sed -i 's/"two_step": "on"/"two_step": "off"/' /etc/veilway/panel.jsonsudo bash veilway.sh restart panelنصبهای قدیمیتر این خط را ندارند (فایلی که ندارد کد را روشن نگه میدارد). آنجا دستور اول به جای آن، خط را اول فایل اضافه میکند:
sudo sed -i '0,/^{$/s//{\n\t"two_step": "off",/' /etc/veilway/panel.jsonبعد از آن curl -s http://127.0.0.1:8480/<prefix>/api/status روی سرور "two_step":false را نشان میدهد. اگر پیش از اولین راهاندازی باشد، این راهاندازی دوباره یک کد راهاندازی تازه هم میسازد و کدی که نصب چاپ کرده دیگر کار نمیکند. کد تازه را با sudo journalctl -u veilway-panel -o cat | grep 'Setup token' | tail -n 1 بخوانید.
در این حالت ورود، راهاندازی نخست، افزودن مدیر و تأیید دوباره فقط گذرواژه میخواهند. هر مدیر باز هم کلید برنامهٔ احراز هویت میگیرد، که یک بار نشان داده میشود، تا وقتی کد برگردد آماده باشد. گذرواژهٔ ۱۲ نویسه یا بیشتر، نشستها، بررسی CSRF، توکنهای API و گزارش رویدادها میمانند. ورود سختگیرانهتر است: هر مبدأ در ۱۵ دقیقه ۵ بار فرصت دارد و حسابی که بعد از چند تلاش نادرست در انتظار است تا پایان انتظار گذرواژهٔ درست را هم نمیپذیرد. پس کسی که مدام حدس بزند میتواند مدیر را هر بار تا ۱۵ دقیقه در انتظار نگه دارد.
این کلید فقط با panel.json تنظیم میشود. هیچ صفحه یا مسیر API نمیتواند آن را عوض کند، و هر کس بتواند آن فایل را بنویسد از پیش صاحب پنل است. تا وقتی خاموش است، هر صفحه بنر قرمز دارد، صفحهٔ ورود این را میگوید و پنل در هر شروع یک هشدار در گزارش مینویسد. گزارش رویدادها هر وقت مقدار با شروع قبلی فرق کند panel.two_step را با off، یا با on و تعدادهای زیر، ثبت میکند.
برای روشن کردن دوباره، مثلاً بعد از یک نمایش:
۱. تا وقتی هنوز خاموش است، وارد شوید، حساب و بعد گذرواژه و کد را باز کنید، تغییر کد احراز هویت را بزنید و کلید را به برنامهٔ احراز هویت اضافه کنید. هر مدیری که در مدت خاموشی ساخته شده باید اول این کار را بکند: در شروعی که آن را روشن میکند کلید تازهای میگیرد که کسی ندیده و نمیتواند وارد شود. ۲. روی سرور اجرا کنید:
sudo sed -i 's/"two_step": "off"/"two_step": "on"/' /etc/veilway/panel.jsonsudo bash veilway.sh restart panelدر نصب قدیمیای که فایلش این خط را نداشت، به جای آن خطی را که افزوده بودید حذف کنید. ۳. با گذرواژه و کد ۶ رقمی وارد شوید.
شروعی که آن را روشن میکند همهٔ نشستها را پایان میدهد و هر توکن API ساختهشده در مدت خاموشی را باطل میکند. گزارش رویدادها هر دو تعداد را ثبت میکند، مثلاً on, 2 sessions ended, 1 tokens revoked. مدیری که هنگام خاموشی ساخته شده در همان شروع کلید تازهای میگیرد که کسی ندیده است، پس تا وقتی کد روشن است نمیتواند وارد شود. مدیری که گام ۱ را انجام نداده را مدیر دیگری میتواند در مدیران بازنشانی کند، یا خودش آخرین حالت بخش بعد را دنبال کند.
کلید احراز هویت گم شده
Section titled “کلید احراز هویت گم شده”پنل هیچ کلید احراز هویتی را دوباره نشان نمیدهد، ولی میتوانید کلید تازه بسازید، که یک بار نشان داده میشود.
- اگر وارد شدهاید: حساب و بعد گذرواژه و کد را باز کنید و تغییر کد احراز هویت را بزنید.
- اگر مدیر دیگری میتواند وارد شود: او حساب و بعد مدیران را باز میکند و برای حساب شما بازنشانی را میزند. گذرواژه و کلید تازه میگیرید.
- اگر تنها مدیر هستید و نمیتوانید وارد شوید:
۱.
sudo bash veilway.sh admin reset <username>دو بار گذرواژهٔ تازه میپرسد و آن مدیر را از همهجا خارج میکند. فقط گذرواژه را عوض میکند: کلید قبلی میماند. ۲. ورود دومرحلهای را مثل بالا خاموش کنید و پنل را دوباره راه بیندازید. ۳. با گذرواژهٔ تازه وارد شوید و زیر گذرواژه و کد کلید تازه بسازید. ۴. آن را مثل بالا دوباره روشن کنید. آن شروع همهٔ نشستها را تمام میکند.
اولین ورود
Section titled “اولین ورود”۱. https://your-domain/<prefix>/ را باز کنید. مسیر مدیریت همان مقدار prefix است.
۲. در صفحهٔ راهاندازی، کد راهاندازی یکبارمصرف، نام کاربری و گذرواژهای با ۱۲ نویسه یا بیشتر را وارد کنید. گذرواژه را دوباره وارد کنید، این شرایط را خواندهام و میپذیرم را علامت بزنید و ساختن حساب مدیر را بزنید. تا وقتی نخستین مدیر ساخته نشده، پنل در هر شروع یک کد تازه در گزارش چاپ میکند و اسکریپت نصب هم آن را نشان میدهد. فقط تازهترین کار میکند.
۳. صفحهٔ بعد یک بار یک کلید TOTP و کد QR نشان میدهد. آن را به برنامهٔ احراز هویت اضافه کنید و افزودم، برو به ورود را بزنید. بدون این کلید نمیتوانید وارد شوید.
۴. با نام کاربری، گذرواژه و کد ۶ رقمی برنامه وارد شوید. ورود محدودیت تعداد دارد: بعد از چند تلاش نادرست چند دقیقه صبر کنید.
۵. پیش از افزودن کاربر به تنظیمات بروید. زیر ارائهدهنده نشانی نود را بدهید، زیر نقاط پایانی یک نقطه پایانی اضافه کنید و زیر کاربران تازه بازهٔ نشانی دستگاهها را تنظیم کنید. راهاندازیای که با یک دامنه انجام شده باشد (از v0.3.2) نشانی نود را همان نام گذاشته و نقطهٔ پایانی main را در https://<domain><sub_path>/main به عنوان پیشفرض افزوده است. راهاندازی با نشانی IP هر دو را به شما میسپارد، چون آن نقطهٔ پایانی پین میخواهد. بعد در ورودیها یک ورودی اضافه کنید و پروفایلش را در پروفایلها منتشر کنید. راهنمای اولین ورودی و کاربر این قدمها را نشان میدهد.
برای راهاندازی با اسکریپت، کد راهاندازی، نام کاربری و گذرواژه را به {prefix}/api/setup بفرستید. پاسخ راز TOTP را دارد، که یک بار نشان داده میشود.
بعضی تغییرها دوباره گذرواژه و کد میخواهند. تأیید پنج دقیقه معتبر است.
راهاندازی از شما میخواهد شرایط اپراتور Veilway را بپذیرید. گزارش رویدادها پذیرش، زمان آن و نسخهٔ شرایط را ثبت میکند. اسکریپت باید accepted_terms: true بفرستد.
داشبورد
Section titled “داشبورد”داشبورد صفحهٔ اول بعد از ورود است. نشان میدهد:
- سرعت لحظهای و بیشترین سرعت امروز
- ترافیک این ماه
- تعداد دستگاههایی که منتظر تأیید برنامهاند
- کاربرانی که بیش از ۸۵ درصد سهمیهشان را مصرف کردهاند
- محل خروج ترافیک، طبق آخرین گزارش نود
- تازهترین موارد گزارش رویدادها
اعداد هر ۱۰ ثانیه تازه میشوند. اطلاعیهها را هم همینجا ویرایش میکنید.
کاربران و دستگاهها
Section titled “کاربران و دستگاهها”صفحهٔ کاربران همهٔ کاربران را فهرست میکند. با نام، گروه یا یادداشت جستجو کنید و بر اساس فعال یا غیرفعال فیلتر کنید. چند کاربر را انتخاب کنید تا یکجا عوض شوند: فعال، غیرفعال، صفر کردن مصرف، بازنشانی لینکها، حذف، افزودن یا حذف گروه، تعیین سهمیه، تاریخ انقضا یا سقف دستگاه، تعیین محدودیت سرعت، یا تعیین خروجیها به همهٔ خروجیها یا مجموعهای انتخابی. خروجی پیشفرضی که در مجموعهٔ تازه نباشد پاک میشود.
بازنشانی لینکها برای هر کاربر انتخابشده لینک تازه و اعتبارنامههای تازهٔ Xray میسازد و لینکهای قبلی همان لحظه از کار میافتند. تیک دستگاههای ثبتشده با لینکهای قبلی هم حذف شوند آن دستگاهها را هم حذف میکند. بدون تیک، تا وقتی خودتان حذفشان نکنید کار میکنند. این پنجره لینکهای تازه را نشان نمیدهد. صفحهٔ کاربر را باز کنید و نمایش لینک و QR را بزنید. اگر لینکها فقط یک بار نشان داده شوند روشن باشد، پنل نسخهای نگه نمیدارد. پس لینک آن کاربر را روی صفحهٔ خودش بازنشانی کنید، که تنها وقت نشان دادن لینک است.
افزودن کاربر
Section titled “افزودن کاربر”فرم را پر کنید:
- نام: حروف کوچک انگلیسی، رقم، نقطه، خط تیره و زیرخط. برنامهها آن را نشان میدهند.
- گروهها: با ویرگول جدا کنید. قواعد مسیریابی و مجموعههای DNS میتوانند گروه را نام ببرند.
- سهمیه و شمارش از نو شروع شود: سهمیهٔ خالی یعنی بیمحدودیت. برای شروع دوباره یکی از هرگز، هر روز، هر هفته یا هر ماه را بگذارید. شروع دوباره به سهمیه نیاز دارد.
- تاریخ انقضا: خالی یعنی بدون انقضا.
- سقف دستگاه:
0یعنی سقف پیشفرض نود، ۶۴. - محدودیت بارگذاری و محدودیت دانلود: بیشترین چیزی که کاربر میفرستد و میگیرد، بر حسب Mbit/s (از 0.14 تا 100000). خالی یعنی بیمحدودیت. هر سرور محدودیت را خودش و روی مجموع همهٔ دستگاههای کاربر نگه میدارد، محدودیت سرعت را ببینید. TCP کند میشود و ترافیک دیگری که از محدودیت بگذرد دور ریخته میشود. برنامهها محدودیت را نشان نمیدهند.
- یادداشت: فقط مدیران آن را میبینند.
- فعال: کاربر غیرفعال نمیتواند وصل شود. دستگاههایش میمانند.
- خروجیها: همه خروجیها، یا فقط اینها با خروجیهایی که تیک میزنید. برنامهٔ کاربر فقط همینها را فهرست میکند، هرچند قواعد مسیریابی هنوز میتوانند ترافیکش را به خروجی مشخصی بفرستند. خروجی پیشفرض جایی است که دستگاههایش وقتی خروجی انتخاب نکنند از آن بیرون میروند، در میان همین خروجیها. پیشفرض نود آن را به پیشفرض مسیریابی نود میسپارد.
با ذخیره، لینک اشتراک برای کپی نشان داده میشود.
صفحه کاربر
Section titled “صفحه کاربر”- محدودیت سرعت هر دو محدودیت را نشان میدهد و، وقتی نود مجبور شده کاربر را نگه دارد، اینکه چند بسته دور ریخته و TCP چند ثانیه منتظر مانده است.
- ترتیب اتصالها ترتیبی را تعیین میکند که برنامهها اتصالهای این کاربر را به آن فهرست میکنند. پیروی از ترتیب سراسری (پیشفرض) ترتیب صفحهٔ پروفایلها را به کار میبرد. ترتیب دلخواه اتصالهایی را که اول میگذارید به ترتیب شما میآورد و بقیه از ترتیب سراسری پیروی میکنند. بازنشانی به ترتیب سراسری آن را برمیگرداند. ترتیب اتصالها را ببینید.
- مصرف نشان میدهد چه چیزی به سهمیه حساب میشود، از چه زمانی، و کل داده ارسالشده و دریافتشده. بازنشانی مصرف شمارش سهمیه را از نو شروع میکند و کاربری که بهخاطر گذشتن از سهمیه قطع شده بود دوباره میتواند وصل شود. میتوانید مجموع را هم صفر کنید.
- لینک اشتراک لینک و کد QR آن را دارد. هر کس لینک را داشته باشد میتواند دستگاه ثبت کند، پس آن را مثل گذرواژه بفرستید. پنل لینک را با کلیدهای
panel.keysمهرومومشده نگه میدارد و نمایش لینک و QR آن را بعد از تأیید دوباره گذرواژه و کد باز میکند. اگر لینکها فقط یک بار نشان داده شوند (بخش تنظیمات اشتراک) روشن باشد، لینک فقط هنگام ساخت یا بازنشانی نشان داده میشود. پنجره لینک Veilway و یک لینک وب برای برنامههایی که اول مرورگر باز میکنند میدهد. بازنشانی لینک لینک تازه میسازد، لینک قبلی را فوراً از کار میاندازد و اعتبارنامههای Xray کاربر را تازه میکند. انتخاب میکنید دستگاههای ثبتشده با لینک قبلی هم حذف شوند یا نه. - دانلود فایل مهرومومشده فایل
.vwsealedمیسازد که لینک را دارد و با گذرواژهای که خودتان انتخاب میکنید (دستکم ۱۰ نویسه) قفل است. برنامه هنگام باز کردن فایل گذرواژه را میپرسد و بعد مثل هر لینک ادامه میدهد. پنل گذرواژه را نگه نمیدارد و دوباره گذرواژه و کد شما را میخواهد. گزارش رویدادها فقط ثبت میکند که فایلی ساخته شد، نه گذرواژه یا لینک را. گذرواژه را از راهی غیر از راه فایل بفرستید: هر کس هر دو را داشته باشد لینک را میگیرد و لینک همان حساب است. هیچ توکن API نمیتواند این کار را بکند. قالب آن در قالب اشتراک است. - ورود پراکسی برای حساب نام و گذرواژهای برای ورودیهای SOCKS5 و HTTP نود میسازد. ورودیهای پراکسی را ببینید.
- لینکهای Xray لینک کاربر را برای هر ورودی Xray، هم متن و هم کد QR، نشان میدهد. وقتی لینک میگیرد که دستگاه داشته باشد و ورودی Xray وجود داشته باشد. دوباره گذرواژه و کد میخواهد. اعتبارنامه تازه Xray اعتبارنامهٔ تازه میسازد و لینکهای قبلی از کار میافتند. ورودیهای Xray را ببینید.
- دستگاهها هر دستگاه را فهرست میکند: منتظر تأیید برنامه است یا ثبت شده، و آخرین بار کی دیده شده. دستگاه کلید خودش را میسازد، که هرگز از آن بیرون نمیرود، یا از کلیدی استفاده میکند که پنل ساخته است. حذف دستگاه فوراً جلوی اتصالش را میگیرد. برنامهٔ v0.2.11 یا تازهتر وقتی کاربرش اشتراک را حذف کند دستگاه خودش را حذف میکند و گزارش رویدادها آن را ثبت میکند.
- پیکربندی WireGuard برای دستگاهی که پنل کلیدش را ساخته فایلی برای برنامهٔ WireGuard معمولی میدهد، بهصورت متن برای کپی، دانلود و کد QR. برای دستگاهی که کلید خودش را ساخته خاموش است، چون پنل کلید خصوصیاش را ندارد. پنل برای هر ورودی WireGuard ساده با ترنسپورت
udpکه دستگاه در بازهٔ آن نشانی دارد یک فایل میسازد، و وقتی بیش از یکی است بالای هر کدام ورودی را نام میبرد. فایل نشانی دستگاه در آن ورودی را میگیرد، همهٔ ترافیک را از تونل میفرستد، دروازهٔ ورودی را DNS میگذارد و اگر پیکربندی MTU داشته باشد آن را هم میگذارد. نشانی نود در فایل همان است که برنامهها به کار میبرند، از نشانی نود یا نشانیهای پروفایل. اگر هیچ ورودی جور نباشد، پنل میگوید چه را بررسی کنید. فایل کلید خصوصی دستگاه را دارد، پس پنل دوباره گذرواژه و کد را میخواهد، گزارش رویدادها فقط ثبت میکند که فایلی ساخته شد، و هیچ توکن API نمیتواند این کار را بکند. آن را از راهی مطمئن به دستگاه برسانید و نسخهٔ خودتان را پاک کنید. پنجره هشدار میدهد که سانسورچی WireGuard ساده را بهآسانی تشخیص میدهد: جایی به کار ببرید که این مهم نیست، و جایی که مهم است پروفایل Veilway. دستگاهی که از فایل استفاده کند کانال کنترل ندارد و اطلاعیه، فهرست خروجیها یا میزان بار نمیگیرد. - افزودن دستگاه با کلید پنل میگذارد پنل کلید خصوصی را بسازد و بهصورت فایل امضاشده صادر کند. از ثبت از خود دستگاه ضعیفتر است، پس فقط برای دستگاهی که نمیتواند لینک را باز کند.
- خروجیها تعیین میکند برنامهٔ کاربر کدام خروجیها را فهرست کند، با کشور هر خروجی و اینکه برقرار است یا نه. اگر خروجیای که کاربر به آن محدود بود از نود حذف شود، با برچسب از نود حذف شده نشان داده میشود و ذخیره خروجیها آن را از فهرست برمیدارد. دفعهٔ بعد که پنل نود را بهروز کند، خروجی پیشفرضی را که نود دیگر ندارد، یا کاربر دیگر اجازهٔ استفادهاش را ندارد، پاک میکند.
- حذف کاربر دستگاهها و لینکهای کاربر را فوراً از کار میاندازد. برگشتپذیر نیست.
فهرست کاربران خروجیهای هر کاربر را بهصورت همه خروجیها یا یک عدد، و ستون محدودیت سرعت (بدون محدودیت، یا محدودیتها بر حسب Mbit/s) نشان میدهد. تعیین محدودیت سرعت در کارهای گروهی هر دو محدودیت کاربران انتخابشده را عوض میکند. یکی را خالی بگذارید تا آن سمت بیمحدودیت باشد.
تنظیمات اشتراک
Section titled “تنظیمات اشتراک”تنظیمات یک صفحه است که تعیین میکند لینک هر کاربر به کجا اشاره کند و اسناد چطور امضا شوند. فهرستی بالای صفحه به هر بخش میپرد: ارائهدهنده، نقاط پایانی، بهروزرسانی، کاربران تازه، آینهها، آینههای ایستا، رلهها، پاسخ به ناشناسها، پروفایلهای منتشرشده، کلیدهای دروازه و کلیدهای امضا. فرم را عوض کنید و از نواری که ظاهر میشود ذخیره کنید. کلیدهای دروازه و امضا خودشان جدا اعمال میشوند.
ارائهدهنده، بهروزرسانی و کاربران تازه
Section titled “ارائهدهنده، بهروزرسانی و کاربران تازه”- نام ارائهدهنده کنار اشتراک در برنامهها نشان داده میشود.
- نشانی نود نشانی IP عمومی یا نام میزبانی است که دستگاهها با آن به این نود میرسند. پروفایلها با آن ساخته میشوند. برنامهها به IPای وصل میشوند که پروفایل امضاشده میگوید و خودشان نامی را جستوجو نمیکنند، پس جستوجویی در شبکهٔ کاربر دیده نمیشود و پاسخ جعلی DNS نمیتواند آنها را جای دیگری بفرستد. پنل هر بار که اشتراک یک کاربر را میسازد، حداکثر هر پنج دقیقه یک بار، نام میزبان را جستوجو میکند و IPهای همان لحظه را در پروفایلها میگذارد. اگر جستوجو شکست بخورد، آخرین نشانیها تا یک هفته به کار میروند. برنامهها تغییر را در بهروزرسانی بعدی میگیرند. پیش از v0.2.8 باید IP میبود. هر ورودی میتواند نشانیهای خودش را داشته باشد، پروفایلها را ببینید.
- نقاط پایانی زیر نقاط پایانی تنظیم میشوند، نقاط پایانی و جابهجایی را ببینید.
- برنامهها تغییرها را هر چند وقت بررسی کنند فاصلهٔ بهروزرسانی را به دقیقه تعیین میکند.
- سندها چند روز معتبر بمانند تعیین میکند سند امضاشده چند روز قابل استفاده است.
- حذف دستگاههایی که بهروز نشدهاند پس از دستگاههای تأییدشدهای را که برنامهشان در این تعداد روز سندش را نخواسته حذف میکند، تا جای برنامههای حذفشده و گوشیهای گمشده آزاد شود. ۰، پیشفرض، آنها را نگه میدارد. باید دستکم سه برابر فاصلهٔ بررسی باشد. دستگاههایی که پنل کلیدشان را ساخته هرگز اینطور حذف نمیشوند. حذفها در گزارش رویدادها ثبت میشوند.
- دستگاه تازه برای هر پیوند و در هر بازهٔ سرعت افزودن دستگاه با یک لینک را محدود میکنند، تا لینک لورفته کندتر استفاده شود. با یک لینک، در هر بازهٔ لغزندهٔ فیلد دوم (۱ تا ۱۴۴۰ دقیقه، پیشفرض ۶۰)، حداکثر به تعداد فیلد اول (۱ تا ۶۴، پیشفرض ۳) دستگاه تازه اضافه میشود. تلاش ردشده شمرده نمیشود و ورود لغوشده جایش را پس میدهد. سقف دستگاه در هر حال برقرار است. عدد بزرگ با بازهٔ کوتاه تقریباً بیمحدودیتی است. این دو جای فاصله بین افزودن دستگاههای تازه یک حساب را میگیرند و مقدار قدیمی منتقل میشود: انتظار ۱ دقیقه، پیشفرض قبلی، میشود پیشفرضهای تازه؛ هر انتظار دیگر میشود ۱ دستگاه در بازهای به همان اندازه؛ بدون انتظار (۰) میشود ۶۴ دستگاه در ۱ دقیقه.
- تعویض کلید ترابرد هر تعیین میکند پنل بعد از چند روز (7 تا 30، پیشفرض 30) کلید ترنسپورت تازه بسازد. کلیدهای ترنسپورت را ببینید.
- لینکها فقط یک بار نشان داده شوند یعنی پنل هیچ نسخهای از لینک نگه نمیدارد. لینک هنگام ساخت یا بازنشانی نشان داده میشود و دیگر هرگز. پیشفرض خاموش است.
- سقف دستگاه برای کاربران تازه و بازهٔ نشانی دستگاهها پیشفرض کاربران تازهاند. بازه یک شبکهٔ IPv4 از
/16تا/30است و هر دستگاه یک نشانی از آن میگیرد. پنل به دستگاه در هر ورودی Veilway دیگر و هر ورودی WireGuard ساده (ورودی ساده از v0.2.18) هم نشانی میدهد، با همان فاصله از ابتدای بازهٔ آن ورودی که در بازهٔ اصلی دارد. اگر بازهٔ ورودیای با بازهٔ اصلی همپوشانی داشته باشد ولی نشانی دستگاه را نداشته باشد، یا فاصله از انتهای بازه بگذرد یا روی دروازه بیفتد، دستگاه آنجا نشانی نمیگیرد و اشتراکش پروفایل آن ورودی را کنار میگذارد. - پاسخ به ناشناسها پاسخ به درخواست بدون توکن معتبر است. همان ۴۰۴ وبسرور شما برای مسیر ناشناخته است، پس ناشناس نمیفهمد پنلی آنجاست. پاسخ را اینجا تنظیم کنید را روشن کنید تا وضعیت، سرآیندها و متن را در پنل بگذارید. خاموش یعنی
not_foundازpanel.json.
نشانی شرایط خدمات و نشانی سیاست حریم خصوصی صفحههای خودتان بهعنوان ارائهدهندهاند. برای هرکدام نشانی https بدهید یا خالی بگذارید. هر اشتراک آنها را پیوند پشتیبانی نشان میدهد. متن نمونه در الگوهای ارائهدهنده است.
کلیدهای ترنسپورت
Section titled “کلیدهای ترنسپورت”هر ورودی veilway کلید ترنسپورتی دارد که ترنسپورتهای tls، ws و fronted آن به کار میبرند، و هر ترنسپورت ws-plain کلید مخصوص خودش را دارد. پنل وقتی زمان تعویض کلید ترابرد هر بگذرد (7 تا 30 روز، پیشفرض 30) این کلیدها را خودش میچرخاند. کلید ws-plain هر تنظیمی باشد حداکثر هر 7 روز میچرخد، چون اثباتهایش آشکار روی مسیر میروند. پنل ساعتی یک بار بررسی میکند.
چرخش کلید تازهای میسازد و کلیدهای نود را روی «تازه اول، فعلی دوم» میگذارد. کلید قبلی یک دورهٔ کامل دیگر کار میکند، پس برنامهای که در این مدت بهروز شده هنوز وصل میشود. چرخش بعدی آن را کنار میگذارد و پنل نابودش میکند. پروفایلهای منتشرشده بدون انتشار از طرف شما نیمهٔ عمومی تازه را میگیرند. پنل هیچوقت کلید خصوصی نگه نمیدارد: آن را به نود میفرستد و فقط نیمهٔ عمومی را نگه میدارد.
اگر نود چرخش را تأیید نکند، پنل برای آن کلید چرخش دیگری شروع نمیکند و هشدار نشان میدهد. بعد از 2 روز دست میکشد و بازنشانی میشود، و دور بعد ممکن است دوباره امتحان کند. گزارش رویدادها چرخش کلیدها را ثبت میکند.
کلیدهای امضا
Section titled “کلیدهای امضا”همهٔ اسناد امضا میشوند. برای عوض کردن کلیدها بدون قطع کاربران:
۱. افزودن کلید تازه را بزنید. از آن لحظه هر دو کلید امضا میکنند. ۲. صبر کنید تا همهٔ برنامهها سندی گرفته باشند که هر دو کلید را فهرست کرده. دستکم یک فاصلهٔ بهروزرسانی طول میکشد. ۳. بازنشسته کردن کلید قدیمی را بزنید.
کلید بازنشسته ۳۶۵ روز نگه داشته میشود تا بتواند ردها را امضا کند. برنامهای که کلید تازه را هرگز نگرفته باشد، سند بعدی را رد میکند و لینک تازه میخواهد، پس کلید قدیمی را زود بازنشسته نکنید.
آینهها
Section titled “آینهها”آینه نشانی دیگری برای همان اشتراک است. وقتی نقطه پایانی مسدود شود، برنامهها آینهها را امتحان میکنند. تا چهار آینه میتوانید اضافه کنید. آینهای که گواهی از مرجع صدور ندارد پینهای خودش را میخواهد، هر پین در یک خط.
آینههای رله
Section titled “آینههای رله”آینهای که در فهرست بالا میآید فقط نشانی دیگری برای همان پنل است. آینهٔ رله برنامهٔ کوچکی روی سرور و دامنهٔ دیگری است که مسیر اشتراک را سرو میکند و هر درخواست را با HTTPS به پنل شما میرساند، تا وقتی نقطهٔ پایانی اصلی مسدود است برنامهها از راه آن بهروز شوند. هر درخواست برای کلید دروازهٔ پنل شما و هر پاسخ برای درخواست خودش مهروموم است، پس آینه توکن، راز دستگاه یا سندی را نمیخواند و نمیتواند چیزی را طوری عوض یا تکرار کند که پذیرفته شود. با این حال نشانی هر بازدیدکننده و زمان بهروزرسانیاش را میبیند، پس آن را روی سرورهایی اجرا کنید که از این بابت به آنها اعتماد دارید.
۱. روی سرور دیگر sudo bash veilway.sh install mirror را اجرا کنید. باینری نود، سرویس veilway-mirror (با کاربر جدا و بدون هیچ دسترسی ویژه) و پیکربندی /etc/veilway-mirror/mirror.json را با یک راز تازه نصب میکند. پیکربندی آینه را ببینید.
۲. در آن فایل upstream را نشانی پنل برای نقطهٔ پایانیای بگذارید که آینه نمایندهٔ آن است. به sub_path پنل، یک اسلش و نام همان نقطه پایانی ختم میشود، مثل https://panel.example.org/sub/main. path را مسیری بگذارید که وبسرور شما به آینه میدهد. با veilway mirror --check --config /etc/veilway-mirror/mirror.json بررسی کنید و با sudo bash veilway.sh restart mirror راه بیندازید.
۳. در panel.json آینه و رازش را به trusted_mirrors اضافه کنید و پنل را دوباره راه بیندازید:
"trusted_mirrors": [{"name": "mirror-1", "secret": "<the secret from mirror.json>"}]۴. وبسرور خود را جلوی آینه بگذارید. آینه روی 127.0.0.1:8490 و با HTTP ساده گوش میدهد. فقط POST با دقیقاً ۱٬۰۷۳ بایت application/octet-stream به مسیر خودش را میپذیرد، یعنی درخواستی که برای پنل شما مهر شده و آینه نمیتواند بازش کند. برای هر چیز دیگر وضعیت ۵۹۹ میدهد و وبسرور باید آن را به همان پاسخی تبدیل کند که برای هر مسیر ناشناخته میدهد. در nginx:
location = /sub { proxy_pass http://127.0.0.1:8490; proxy_http_version 1.1; proxy_intercept_errors on; error_page 599 = @unknown; proxy_set_header X-Forwarded-For $remote_addr;}@unknown یک location از خود شماست که مثل بقیهٔ سایت جواب میدهد، مثلاً return 404;.
۵. نشانی عمومی آینه را بالا زیر آینهها اضافه کنید، و اگر گواهیاش از مرجع صدور نیست، پینهایش را هم. برنامهها آن را در ورود یا بهروزرسانی بعدی از سند امضاشده یاد میگیرند.
آینه نشانی واقعی هر بازدیدکننده را در سرآیند X-Veilway-Mirror که با رمز مشترک امضا شده به پنل میگوید، تا محدودیتهای هر مبدأ در پنل بازدیدکننده را بشمارند، نه آینه را. پنل این سرآیند را فقط از آینهای در trusted_mirrors، فقط تا ۶۰ ثانیه و فقط یک بار میپذیرد. درخواستی که سرآیندش در هر یک از این شرطها رد شود مثل مسیر ناشناخته جواب میگیرد. آینه پس از درخواست چیزی نگه نمیدارد و فقط با HTTPS به پنل وصل میشود. به درخواستی که سرآیندش معتبر است ولی پنل سرو نمیکند، پنل با وضعیت ۵۹۹ جواب میدهد. اگر پنل در دسترس نباشد، یا چیزی غیر از پاسخ مهرومومشده بدهد (وضعیت 200 با Content-Type: application/octet-stream و بدنهای ۹٬۴۱۳، ۳۶٬۹۷۹، ۱۴۰٬۸۶۷، ۵۳۸٬۲۰۱ یا ۱٬۰۸۹٬۴۳۷ بایتی)، آینه درخواست را مثل هر درخواست ناپذیرفتنی دیگر پس میدهد.
آینههای ایستا
Section titled “آینههای ایستا”آینهٔ ایستا جایی است که فقط فایل سرو میکند: سطل ذخیرهسازی، سرویس فایل خام یک میزبان کد، شبکهٔ توزیع محتوا یا وبسرور خودتان. پنل برای هر دستگاه یک فایل مهروموم آنجا مینویسد. برنامهها آن را آخر از همه امتحان میکنند، بعد از اینکه نقطهٔ پایانی و همهٔ آینههای رله شکست خورده باشند. فایلشان را با GET ساده میگیرند و به همان سختگیری پاسخ نقطهٔ پایانی بررسی میکنند. میزبان چیزی از شما اجرا نمیکند، توکنی نمیگیرد و نمیتواند فایلی را بخواند.
۱. در تنظیمات، زیر آینههای ایستا، نشانی پایهای را که پوشه را از آن سرو میکنید اضافه و ذخیره کنید. نشانی https است، نام میزبان دارد نه IP، به / ختم میشود، پین ندارد و نمیتواند میزبان و درگاه نقطهٔ پایانی یا یک آینهٔ رله را داشته باشد. مثال: https://raw.githubusercontent.com/<owner>/<repo>/<branch>/<folder>/ برای مخزن روی میزبان کد، و https://s3.<region>.amazonaws.com/<bucket>/<folder>/ برای سطلی که با مسیر نشانی میشود.
۲. ظرف چند دقیقه پنل اولین دور را مینویسد. بخش برای هر نشانی یک پوشه نشان میدهد، با تعداد فایلها، اندازهشان و زمان دور. دستگاه وقتی در پوشه میآید که بعد از ذخیرهٔ شما یک درخواست موفق به نقطهٔ پایانی یا یک آینهٔ رله فرستاده باشد. پس برنامه نشانی تازه را در بهروزرسانی بعدی یاد میگیرد و آینه از دور بعد از آن کمکش میکند.
۳. بعد از هر دور پوشه را به میزبان ببرید. بخش دستورهای آمادهٔ چسباندنی دارد، با مسیر پوشهٔ شما. پوشهٔ current پیوندی است که پنل وقتی دور کامل شد یکجا عوض میکند، پس کپی هرگز نیمی از یک دور را برنمیدارد. از ابزاری استفاده کنید که هرچه پوشه دیگر ندارد را هم پاک کند، چون نامهای قدیمی باید بروند:
# سرور خودتانrsync -rt --delete '/var/lib/veilway-panel/static/<folder>/current/' 'user@host:/var/www/mirror/<folder>/'
# یک سطل (rclone sync هرچه را پوشه دیگر ندارد پاک میکند)rclone sync '/var/lib/veilway-panel/static/<folder>/current/' 'remote:<bucket>/<folder>/'
# یک مخزن روی میزبان کدrsync -rt --delete '/var/lib/veilway-panel/static/<folder>/current/' '<clone>/<folder>/' && git -C '<clone>' add -A && git -C '<clone>' commit -m publish && git -C '<clone>' pushآن را با یک تایمر کمی پرتکرارتر از تنظیم انتشار در هر پنل (۱ تا ۱۲ ساعت، پیشفرض ۶) اجرا کنید. دریافت بهصورت zip (دوباره رمز و کد میخواهد) دور فعلی را فایل میدهد، برای میزبانی که فقط با دست میشود رویش بارگذاری کرد.
۴. اگر میتوانید، میزبان را طوری تنظیم کنید که Cache-Control: max-age=600 یا کمتر بفرستد. حافظهٔ نهانی که فایل را بیشتر نگه دارد فقط نسخهٔ برنامه را کهنهتر میکند، و بررسی شمارهٔ سریال سند قدیمیتر را رد میکند و برنامه به جای بعدی میرود.
انتخاب میزبان. سانسورچی فقط نام میزبان را در دستدهی TLS میبیند. نامی که فقط خودتان استفاده میکنید (دامنهٔ خودتان، name.github.io، سطلی با نام میزبان خودش) میتواند بدون مسدود شدن کس دیگری بسته شود. بستن فقط وقتی برای سانسورچی هزینه دارد که نام میزبان را سایتهای بیربط زیادی شریک باشند و پوشهٔ شما در مسیر باشد، جایی که TLS پنهانش میکند. پنل دربارهٔ هر نشانی که میزبانش در فهرست نامهای مشترکش نیست (سرویس فایل خام میزبانهای بزرگ کد، نقطههای ذخیرهسازی با نشانی مسیرمحور، jsdelivr) هشدار میدهد: «فقط شما از این نام میزبان استفاده میکنید. اگر سانسورچی آن را بفهمد میتواند بدون مسدود کردن چیز دیگری آن را ببندد.» از نام میزبان نقطهٔ پایانی استفاده نکنید.
هر دور چه میکند. پوشهٔ تازه و کاملی مینویسد و current را به آن میبرد. هر فایل را با نمک تازه دوباره مینویسد، عوض شده باشد یا نه، پس میزبان در هر دور تغییر هر فایل را میبیند و دربارهٔ اینکه کدام سند عوض شده چیزی نمیفهمد. فایل به یک هفته تعلق دارد و نامش در پایان هفته عوض میشود. فایلهای یک هفته از یک روز پیش از شروعش تا یک روز بعد از پایانش هستند، پس برنامهای که ساعتش کمتر از یک روز اختلاف دارد باز فایلش را پیدا میکند. به همین دلیل پنل هم ساعت همگام میخواهد، و تا وقتی سیستم ساعتش را همگامنشده گزارش کند، بنری در هر صفحه این را میگوید. پوشه فایلهای ساختگی از بایتهای تصادفی هم دارد، ۳۲ تا ۶۴ تا یا برای پوشهٔ بزرگ بیشتر، که میآیند و میروند. همهٔ فایلهای پوشه، ساختگیها هم، یک اندازه دارند. اندازه وقتی سندی لازم داشته باشد یکباره بزرگ میشود و فقط بعد از هشت دور پیاپی کوچک میشود که اندازهٔ کوچکتر جواب میداد. پنل هرگز نشان نمیدهد کدام فایلها واقعیاند.
میزبان چه میفهمد. نام فایلها را میبیند (هر هفته عوض میشود و در هر نشانی فرق دارد)، یک اندازه برای همه، تعدادشان، زمان نوشتن هر دور، و نشانی و زمان هر دریافت. نمیتواند فایلی را بخواند یا بفهمد فایل مال کدام حساب است. ممکن است هر نسخهٔ هر فایل را نگه دارد، همانطور که میزبان کد هر کامیت را نگه میدارد، و هر کس میتواند میزبان عمومی را فهرست کند. نشت بعدی حافظهٔ یک دستگاه فایلهای قدیمی همان دستگاه را باز میکند، به همین دلیل فایلها عدد مصرف ندارند. فایلی که نیست، قدیمی است یا تغییر کرده، برای برنامه فقط خرابی همان آینه است و هرگز نشانهٔ خاموش بودن حساب نیست. فقط ردِ امضاشده این را میگوید.
فایل فقط برای دستگاه تأییدشده هست. بازنشانی لینک، حذف دستگاه یا حذف کاربر فایلها را در دور بعد برمیدارد، نه فوراً. بهجای سند، برای کاربر خاموش یا منقضیشده ردِ امضاشده در فایل میآید.
رلهها
Section titled “رلهها”رله فرستندهٔ سادهای روی نشانی دیگر است که بایتها را بیتغییر به این نود میرساند: stream در nginx، قاعدهٔ DNAT در iptables، HAProxy، realm یا gost، و برای fronted یک شبکهٔ توزیع محتوا. TLS، اثباتها و WireGuard از برنامه تا نود میروند، پس رله چیزی نمیخواند و نمیتواند خودش را جای نود جا بزند: برنامه هنوز گواهی، پینها و کلیدهای نود را بررسی میکند. وقتی شبکهٔ کاربران نشانی خود نود را میبندد یا کند میکند و یک سرور کوچک روی نشانی دیگر رد میشود، از رله استفاده کنید. برای فرستادن کاربران به نود دوم، با خروجی در آنجا، راهنمای نود ورودی را ببینید.
تونل فقط-TCP بین سرورها، مثل ابزار تونل wss، میتواند tls و ws را برساند ولی هرگز udp یا udp-obfs را. برای ws پشت وبسرور، تونل را به درگاه HTTPS وبسرور وصل کنید.
رلهها را در تنظیمات زیر رلهها اضافه کنید. وارد کنید:
- نام
- نشانی IP یا نام میزبان رله (نام میزبان، مثلاً نام یک شبکهٔ توزیع محتوا، مثل نشانی نود جستوجو میشود)
- ترنسپورتها و ورودیهایی که میرساند
- برای هر ترنسپورتی که رله روی درگاهی جز درگاه نود گوش میدهد، آن درگاه
هر رلهٔ روشن نشانی خودش را به همان ترنسپورتها در همهٔ پروفایلها اضافه میکند، بعد از نشانی خود نود، یا با امتحان پیش از نشانی همین نود پیش از آن. برنامهها با دو نشانی اول هر ترنسپورت شروع میکنند و نشانیای را که در هر شبکه کار کند به خاطر میسپارند. تا ۱۵ رله میتوانید اضافه کنید، تا هر ترنسپورت در ۱۶ نشانیای که پروفایل میتواند داشته باشد بماند. پیشنمایش زیر فهرست نشان میدهد هر پروفایل چه خواهد داشت. ذخیره کنید و بعد در پروفایلها دوباره منتشر کنید. برنامهها در بهروزرسانی بعدی میگیرند.
درگاه برای هر ورودی. اگر رلهای دو ورودی یا بیشتر با ترنسپورت از یک نوع (مثلاً دو tls) را میرساند، برای هر ورودی و نوع یک فیلد درگاه نشان میدهد، تا برای هر کدام روی درگاه جدا گوش بدهد. درگاه هر نوع جایگزین میماند، و بدون هیچ درگاه رله از درگاه خود نود استفاده میکند. رلهای که از یک نوع یک ورودی را میرساند یک فیلد برای آن نوع دارد.
چه کسی این رله را میگیرد روی هر رله آن را به گروهها و کاربران انتخابی محدود میکند، تا نشانی رلهٔ لورفته فقط کاربرانی را نشان بدهد که برایشان بوده است. رلهای که هیچکدام را نداشته باشد به همه میرسد. هر کاربر رلههای خودش، رلههای گروههایش و رلههای همه را میگیرد و صفحهٔ کاربر آنها را فهرست میکند. وقتی یک ترنسپورت بیش از ۱۶ نشانی میداشت، سقف اول رلههای خود کاربر را نگه میدارد، بعد گروهش، بعد همه، و پیشنمایش میگوید چه را کنار گذاشته. حذف کاربر او را از همهٔ گیرندهها بیرون میبرد.
چه چیزی از چه میگذرد:
udpوudp-obfsبه فرستادن UDP نیاز دارند. شبکهٔ توزیع محتوا UDP نمیرساند.tlsوwsاز هر فرستندهٔ TCP میگذرند. فرستندهای که خودش TLS را باز کند کار نمیکند، چون برنامه گواهی نود را بررسی میکند.frontedاز شبکهٔ توزیع محتوا میگذرد: نشانی لبهٔ آن را وارد کنید. برنامه همان نام پوششی را که بررسی میکند نگه میدارد.- رلهای که
udpیاudp-obfsو یک ترنسپورت TLS را روی یک نشانی میرساند باعث میشود برنامهها آن ترنسپورت TLS را «قابل شناسایی» رتبه بدهند. برای حفظ رتبه دو رله بسازید.
نود هر کاربری را که از رله میآید با نشانی رله میبیند، پس محدودیتهای هر مبدأ آنها را با هم میشمارد. برای رلهٔ پرکار replay.per_source را بالا ببرید (مرجع پیکربندی).
در مثالها نود روی 192.0.2.10 است و رله روی همان درگاههای نود گوش میدهد. stream در nginx برای tls روی درگاه TCP 443:
stream { server { listen 443; proxy_pass 192.0.2.10:443; }}stream در nginx برای udp-obfs روی درگاه UDP 51821. زمان انتظار طولانی نگاشت نشست آرام را نگه میدارد:
stream { server { listen 51821 udp; proxy_pass 192.0.2.10:51821; proxy_timeout 10m; }}DNAT در iptables در هسته میفرستد و برای UDP از همه بهتر است. با دسترسی root روی رله و با فوروارد روشن اجرا کنید:
sysctl -w net.ipv4.ip_forward=1iptables -t nat -A PREROUTING -p udp --dport 51821 -j DNAT --to-destination 192.0.2.10:51821iptables -t nat -A POSTROUTING -p udp -d 192.0.2.10 --dport 51821 -j MASQUERADEبرای ترنسپورت TCP در هر دو قاعده -p tcp بگذارید. این قاعدهها بعد از راهاندازی دوباره از بین میروند، مگر ذخیرهشان کنید، مثلاً با iptables-save.
نصب رله با اسکریپت
Section titled “نصب رله با اسکریپت”روی سرور Debian یا Ubuntu، نصبکننده فوروارد را برایتان راه میاندازد. با دسترسی root روی رله اجرا کنید، با نشانی IPv4 نود و یک --transport برای هر ترنسپورتی که رله میرساند، به شکل name:port:
sudo bash veilway.sh install relay 192.0.2.10 --transport tls:443 --transport udp:51820ترنسپورتها tls و ws (TCP) و udp و udp-obfs (UDP) هستند. درگاه همان است که رله روی آن گوش میدهد و نود هم از همان استفاده میکند. برای درگاه دیگری روی نود، با یک دونقطهٔ دوم اضافه کنید: --transport tls:443:8443 روی 443 گوش میدهد و به 8443 نود میفرستد. بدون --transport اسکریپت میپرسد کدام ترنسپورتها.
محدودیتها برای هر نشانی مبدأاند. --rate 50 یعنی ۵۰ اتصال تازه در ثانیه و --conns 256 یعنی ۲۵۶ اتصال TCP همزمان. هر دو اختیاریاند.
اسکریپت nftables را نصب میکند، فوروارد IP را روشن میکند، سرویس nftables را فعال میکند و یک جدول مخصوص خودش، veilway_relay، را در /etc/nftables.d/veilway-relay.nft مینویسد. یک خط هم به /etc/nftables.conf اضافه میکند تا سرویس جدول را هنگام بوت بارگذاری کند و جدول دیگری را دست نمیزند. نشانی نودی را که loopback، چندپخشی یا رزرو باشد، یا خصوصی باشد و این سرور مسیری به آن نداشته باشد، یا نشانی خود این سرور باشد، نمیپذیرد. درگاهی را هم که چیزی روی این سرور به آن گوش میدهد نمیپذیرد. در پایان جعبهای چاپ میکند با آنچه باید در پنل وارد کنید. با --dry-run همهٔ مراحل را بدون تغییر میبینید.
برای حذف رله sudo bash veilway.sh uninstall relay را اجرا کنید. جدول و فایلهایش پاک میشوند و آنچه نصب اضافه کرده بود برمیگردد: بستهٔ nftables اگر نصبکننده نصبش کرده بود، سرویس اگر نصبکننده فعالش کرده بود، و فوروارد IP به مقدار قبلی. توقف nftables.service همهٔ جدولهای nftables را پاک میکند، این یکی هم، پس فقط عمداً متوقفش کنید.
پروفایلهای منتشرشده
Section titled “پروفایلهای منتشرشده”پروفایلهای منتشرشده آنچه اشتراک سرو میکند را نگه میدارد، بهصورت فرم یا فهرست JSON تا ۶۴ شیء. انتشار پروفایلها در صفحهٔ پروفایلها آن را مینویسد. پروفایل اینجا نمیتواند دستگاه را نام ببرد، چون پنل دستگاه هر کاربر را به آن اضافه میکند.
کلیدهای دروازه
Section titled “کلیدهای دروازه”هر درخواست اشتراک با یک کلید دروازه مهر میشود، تا شبکه و سرورهای میانی نتوانند بخوانندش. پنل در اولین شروع دو کلید میسازد: فعال و بعدی. قواعد در قالب اشتراک است.
لینکها کلید فعال را دارند. هر سند امضاشده اول کلید فعال و بعد کلید بعدی را فهرست میکند، پس برنامهها کلید بعدی را خیلی پیش از نیاز دارند.
کلیدها کجا هستند
Section titled “کلیدها کجا هستند”gateway.keysکلید فعال و کلیدهای بازنشسته (نیمهٔ خصوصی) را دارد، بهعلاوهٔ نیمهٔ عمومی و شناسهٔ کلید بعدی.gateway.nextنیمهٔ خصوصی کلید بعدی را دارد. پنل آن را یک بار مینویسد تا از سرور بیرون ببرید و آفلاین نگه دارید. تا وقتی پنل این فایل را روی میزبان ببیند، در صفحهٔ کلیدهای دروازه و در گزارش هشدار میدهد، چون کلید بعدیِ مانده روی سرور همراه کلید فعال برداشته میشود.
هر دو فایل حالت 600 دارند و بیرون از پایگاهدادهاند. مسیرشان فیلدهای gateway و gateway_next پیکربندی است. پشتیبان پنل gateway.keys را دارد و هرگز نیمهٔ خصوصی کلید بعدی را ندارد، پس gateway.next را جدا و دور از سرور پشتیبان بگیرید.
برای بیرون بردن کلید بعدی از سروری که اسکریپت نصب راه انداخته، آن را روی رایانهٔ خودتان کپی کنید و آن کپی را آفلاین نگه دارید (روی فلش یا در مدیر گذرواژه). بعد روی سرور پاکش کنید، که هشدار را برمیدارد:
scp root@your-server:/var/lib/veilway-panel/gateway.next .ssh root@your-server rm /var/lib/veilway-panel/gateway.nextتنظیمات > کلیدهای دروازه اینها را نشان میدهد:
- کلید فعال: شناسه و اثر انگشت آن.
- کلید بعدی: شناسه، و اینکه فایلش هنوز روی میزبان هست یا نه.
- کلیدهای بازنشسته: هرکدام کی نابود میشود، و چند حساب در ۳۰ روز گذشته زیر آن درخواست فرستادهاند.
- چند حساب هنوز دستگاهی ندارند.
- شمارندههای خطا: اندازه، کلید، بازشدن، درخواست، پنجره، تکرار، منبع و پر بودن حافظه.
- هشدار ساعت، وقتی سیستم ساعتش را همگامنشده گزارش میکند.
تعویض برنامهریزیشده
Section titled “تعویض برنامهریزیشده”۱. بارگذاری کلید بعدی را بزنید.
۲. نیمه خصوصی کلید بعدی را بچسبانید، یا خالی بگذارید تا از gateway.next خوانده شود.
۳. پنل آن کلید را فعال میکند و کلید بعدی تازهای میسازد. نیمهٔ خصوصی آن را در gateway.next مینویسد و یک بار نشان میدهد. از سرور بیرونش ببرید.
کلید قدیمی به اندازهٔ نگهداشتن کلید بازنشسته روز بازنشسته میماند (۳۰ تا ۳۶۵، پیشفرض ۱۲۰) و بعد نابود میشود. تا وقتی نگه داشته شود لینکهای قدیمی کار میکنند. بعدش ورود اول با لینک قدیمی شکست میخورد و لینک باید دوباره نشان داده شود.
وقتی کلید فعال از ۱۸۰ روز پیرتر شود، صفحه یادآوری میگذارد. آن وقت تعویض کنید.
کلید دزدیدهشده
Section titled “کلید دزدیدهشده”کلید دزدیده شد را بزنید و کلید بعدی را مثل بالا بار کنید. پنل همان لحظه همهٔ کلیدهایی را که دارد نابود میکند، بازنشستهها هم، چون هر که فایل را برده همه را برده. برنامهها به کلید بعدی برمیگردند.
اگر دزد ضبط درخواستها را داشته باشد (درخواست از شبکهٔ توزیع محتوا، پروکسیای که TLS را تمام میکند، آینهٔ رله یا مسیر http ساده گذشته باشد)، هر درخواست ضبطشده باز میشود و تعویض این را پس نمیگیرد.
پنل حسابهایی را که زیر هر کلید نابودشده درخواست فرستادهاند فهرست میکند. تنها کارش بازنشانی توکن حسابهای آسیبدیده است. اول شمار را نشان میدهد، بهصورت اجرای آزمایشی، بعد لینک تازه میدهد. تعویض تنها را فقط برای دزدیای به کار ببرید که مطمئنید بدون ضبط بوده.
کلید گمشده
Section titled “کلید گمشده”اگر پنل حساب دارد ولی کلید فعال قابلخواندن ندارد، نقطهٔ پایانی به هر درخواست مثل مسیر ناشناخته جواب میدهد. صفحه و هر بنر صفحه این را میگویند و گزارش هر ساعت در سطح خطا مینویسد. پنل هرگز خودش کلید نمیسازد.
- اگر کلید بعدی دستتان است، بارش کنید. برنامهها با بازگشت خود دنبال میکنند.
- اگر نیمهٔ خصوصی کلید فعال قبلی را نگه داشتهاید، بارگذاری کلیدی که نگه داشتهام را بزنید، آن را بچسبانید و شمارهای را که پنل برایش نشان داد بدهید. فعال میشود، کلید بعدی تازهای ساخته میشود و لینکهایی که این کلید را دارند دوباره کار میکنند. پنل تأیید میخواهد و کار را در گزارش رویدادها مینویسد. فقط وقتی کار میکند که روی سرور فایل کلید نباشد، پس فایل غیرقابلاستفاده را اول درست کنید یا کنار بگذارید. پنل هرگز روی آن کلید تازه نمینویسد.
- اگر کلیدی ندارید، ساخت کلیدهای دروازه تازه را بزنید. لینکهای قدیمی برای ورود اول کار نمیکنند. برنامهها کلید تازه را فقط از سند جدیدتر روی آینهٔ ایستا یا از لینکی که دوباره نشان داده شود یاد میگیرند. توکنها و دستگاهها معتبر میمانند.
ساعت و تکرار
Section titled “ساعت و تکرار”پنل ساعت همگام (NTP) میخواهد. فقط وقتی به درخواستی عمل میکند که زمانش تا ۳۰۰ ثانیه با ساعت خودش فاصله داشته باشد، با معیار بالاترین مقدار ساعتی که از شروع دیده، و اگر ساعت عقب برود هشدار ثبت میکند. تا وقتی سیستم ساعتش را همگامنشده گزارش کند، در هر صفحه هشدار میدهد.
حافظهٔ درخواستهای دیدهشده فقط در RAM است و حداکثر ۲۰۰٬۰۰۰ درخواست نگه میدارد. درخواستی که باز شود پیش از نگاه به توکنش ثبت میشود، تا هر کس کلید دروازه را میداند نتواند آن را پر کند. وقتی پر شد، پنل به درخواستهای تازه مثل مسیر ناشناخته جواب میدهد تا بعضی منقضی شوند (درخواست حداکثر ده دقیقه نگه داشته میشود)، آنها را پر بودن میشمارد و حداکثر دقیقهای یک بار هشدار ثبت میکند. نقطهٔ پایانی مبدأها را در محدودکنندهٔ جدایی میشمارد و مبدأ IPv6 را با /48، پس سیل درخواست روی نقطهٔ پایانی نمیتواند مدیری را بیرون نگه دارد. بعد از راهاندازی دوباره، پنل هر زمان پیش از شروع را رد میکند، پس دستگاهی که ساعتش عقب است حداکثر ۳۰۰ ثانیه چیزی نمیگیرد.
http ساده و آینههای رله
Section titled “http ساده و آینههای رله”آینهٔ رله بایتهای مهرشده را همانطور میفرستد و توکنی نمیبیند. گام آینه تا پنل باید https باشد. به درخواستی با سرآیند معتبر آینه، پنل هرچه را که به مسیر ناشناخته جواب میداد با وضعیت ۵۹۹ جواب میدهد. آینه فقط یک ۲۰۰ با یکی از پنج اندازهٔ پاسخ را عبور میدهد.
هر طرف چه میبیند:
| چه کسی | میبیند | نمیبیند |
|---|---|---|
شبکه، روی نقطه پایانی https |
نام میزبان، زمانها و اندازهها | مسیر، درخواست، پاسخ |
شبکه، روی نقطه پایانی http ساده |
میزبان، مسیر، سرایندها، شناسهٔ کلید، زمانها و اندازههای دقیق | توکن، کلید دستگاه، سند |
| وبسرور یا شبکه توزیع محتوا که TLS را تمام میکند | نشانیها، مسیر، شناسهٔ کلید، اندازهها، اینکه پاسخ مهرشده بود یا نه | توکن، کلید دستگاه، سند |
| آینهٔ رله | همانها، و بایتهای مهرشده را میرساند | همانها |
| پنل | همهچیز | هیچچیز |
نقاط پایانی و جابهجایی
Section titled “نقاط پایانی و جابهجایی”نقطهٔ پایانی نشانی عمومیای است که برنامهها با آن به پنل میرسند. تا ۱۶ تا میتوانید داشته باشید.
افزودن نقطه پایانی
Section titled “افزودن نقطه پایانی”به تنظیمات > نقاط پایانی بروید. هر نقطه پایانی اینها را دارد:
- نام:
a-z،0-9،-و_. - نشانی:
https://host/path، یا برای نقطه پایانی سادهhttp://host/path. - پینها (اختیاری): یک یا دو پین SPKI از نوع SHA-256 به base64 استاندارد، فقط برای
https. وقتی میزبان نشانی IP است لازماند، یعنی گواهی خودامضا.
یکی از نقطهها پیشفرض است. اولین نقطهٔ پایانی که اضافه میکنید خودش پیشفرض میشود. با بیش از یکی، آن را زیر نقطه پایانی پیشفرض، پایین فهرست، انتخاب کنید. هر نقطهٔ پایانی میزبان و درگاه خودش را میخواهد.
هر نقطهٔ پایانی مسیر خودش را روی پنل دارد: sub_path، یک اسلش و نام نقطهٔ پایانی. وبسرور شما میزبان و مسیر عمومی هر نقطهٔ پایانی را به آن مسیر پنل میبرد، مثلاً https://sub.example.org/s را به http://127.0.0.1:8480/sub/main. پنل نقطهها را فقط با همین مسیر از هم تشخیص میدهد و هرگز سرآیند Host را نمیخواند، چون هر کس در راه میتواند چیزی در آن بنویسد. درخواست به مسیری زیر sub_path که هیچ نقطهٔ پایانی ندارد مثل مسیر ناشناخته جواب میگیرد. خود sub_path به هیچ نقطهٔ پایانی نامگذاریشده نمیرسد: جواب میدهد (پنلی بدون نقطهٔ پایانی نامگذاریشده همانجا سرو میشود) و اسنادش پین ندارند. سند پینهای نقطهٔ پایانیای را دارد که درخواست به آن رسیده.
پینهای یک نقطهٔ پایانی فقط به شکلی عوض میشوند که دستکم یکی از پینهای فعلی را نگه دارد، چون برنامه فهرست تازه را فقط وقتی میپذیرد که یکی از آنها را داشته باشد. پنل تغییری را که هیچکدام را نگه ندارد رد میکند. بارگذاری کلید ذخیره آن را نگه میدارد. هر ورودی فهرست آینهها با همان قواعدی خوانده میشود که برنامهها میخوانند: ورودی با میزبان و درگاه یک نقطهٔ پایانی همان نوع بررسی را دارد و، اگر پیندار است، یکی از پینهای آن را. پنل هر تنظیمی را که برنامهها در سند امضاشده رد میکردند هنگام ذخیره رد میکند.
http ساده
Section titled “http ساده”نقطه پایانی http ساده این هشدار را نشان میدهد: «شبکه میتواند بفهمد که شما از این برنامه استفاده میکنید، همین حالا و بعداً در گزارشهایش.»
تبادل محرمانه میماند، اما پنهانماندن از دست میرود. جایی استفاده کنید که دامنه ندارید، یا خود دستدهی TLS مسدود میشود. شکل لینکش veilway://sub-plain/ است.
هر کاربر کدام نقطه را میگیرد
Section titled “هر کاربر کدام نقطه را میگیرد”پنل اولین مورد منطبق را برمیدارد:
۱. نقطه پایانی خود کاربر. ۲. نقطه پایانی اولین گروه کاربر که نقطه دارد. ۳. نقطه پایانی پیشفرض.
نقطه را در صفحهٔ کاربر، در فرم افزودن کاربر و زیر نقطه پایانی هر گروه تنظیم کنید.
جابهجایی کاربران به نقطه دیگر
Section titled “جابهجایی کاربران به نقطه دیگر”نقطهٔ پایانی را روی یک کاربر، یک گروه یا چند کاربر انتخابشده بگذارید. برای تعداد زیاد از انتقال به نقطه پایانی استفاده کنید. اول اجرای آزمایشی را نشان میدهد: چند کاربر منتقل میشوند و چند نفر میمانند.
بعد از انتقال، اسناد این کاربران main_endpoint امضاشده دارند. بعدش:
- پنل روی نقطه قدیمی هم پاسخ میدهد، پس لینکهای قدیمی همانجا کار میکنند.
- اولین سند از برنامه میخواهد جابهجا شود. کاربر یک بار در برنامه تأیید میکند.
- اسناد نقطه تازه تازه امضا میشوند، با شماره ترتیب بالاتر.
بخش نقاط پایانی نشان میدهد چند حساب منتقلشده هنوز روی نقطهٔ قدیمی بهروز میشوند. وقتی صفر شد، میتوانید آن را کنار بگذارید. نقطهای را که کاربران هنوز استفاده میکنند نمیشود حذف کرد.
لینکی که دوباره نشان داده شود، نقطه پایانی فعلی کاربر و کلید دروازهٔ فعال را دارد.
پنج صفحه آنچه نود اجرا میکند را نشان میدهند: ورودیها، خروجیها و مسیریابی (با زبانههای خروجیها، مسیریابی و اتصالهای بیرونی)، DNS و گزارشها، پروفایلها و پیوندها.
هر تغییر پیش از رسیدن به نود بازبینی میشود. ویرایش یا حذف بازبینی تغییرات را باز میکند و تا وقتی اعمال روی نود را نزنید چیزی به نود نمیرسد. بازبینی نشان میدهد:
- چه چیزی اضافه، تغییر و حذف میشود و کدام ورودیها راهاندازی مجدد میشوند. راهاندازی مجدد همهٔ دستگاههای آن ورودی را قطع و دوباره وصل میکند.
- چند کاربر دیگر نمیتوانند وصل شوند.
- هشدارهای نود.
- مشکلهایی که نود نمیپذیرد. درستشان کنید و دوباره بازبینی کنید.
اگر پیکربندی از وقتی صفحه را باز کردهاید تغییر کرده باشد، بازبینی میگوید. پیکربندی را دوباره بارگذاری کنید و تغییر را دوباره انجام دهید. برگرداندن ویرایشهایم تغییرهای اعمالنشده را کنار میگذارد. هر بخش نمای JSON کل خودش را هم دارد.
ورودیها
Section titled “ورودیها”ورودی تونلی است که دستگاهها به آن وصل میشوند، با ترنسپورتهایی که از آنها به آن میرسند. صفحهٔ ورودیها ورودیهای خود نود و ورودیهای افزونهٔ Xray را با هم فهرست میکند. نمایش بر پایهٔ نوع فیلتر میکند.
بعد از افزودن ورودی یا تغییر ترنسپورتها، پورتها یا نشانیهایش، در پروفایلها انتشار پروفایلها را بزنید. برنامهها فقط از پروفایل منتشرشده و در بهروزرسانی بعدی خود از تغییر باخبر میشوند.
- Veilway یعنی WireGuard همراه با کانال کنترل. ترنسپورتهای مبهمشده به آن نیاز دارند.
- WireGuard ساده برای برنامههای WireGuard معمولی است. دستدهیاش را بهراحتی میشود تشخیص داد. برای دستگاهی که پنل کلیدش را ساخته میشود فایل WireGuard داد، صفحهٔ کاربر را ببینید.
خاموش کردن ورودی یا ترنسپورت. ستون روشن فهرست برای هر ورودی یک کلید دارد، و فرم ورودی ورودی روشن است را. ترنسپورت در بخش خودش از فرم ترابرد روشن است را دارد. خاموش یعنی enabled: false در پیکربندی. در پیکربندی میماند و نشانیاش را نگه میدارد، بازبینی مثل بقیه بررسیاش میکند، ولی نود روی آن گوش نمیدهد. فهرست کنار ورودی خاموش خاموش را نشان میدهد. وقتی اعمال میکنید:
- نشستهای ترنسپورت خاموش تمام میشوند و ترنسپورتهای دیگر آن ورودی ادامه میدهند.
- دستگاههای ورودی خاموش نمیتوانند از آن وصل شوند و جریانهای بازشان تمام میشود.
- ورودیهای Xray تغییری نمیکنند. کلید ندارند.
دستگاهها تغییر را فقط در انتشار بعدی میفهمند. ورودی خاموش پروفایل نمیگیرد و پروفایل قبلیاش برداشته میشود. ترنسپورت خاموش از پروفایل ورودیاش کنار گذاشته میشود. بعد از اعمال کلید، صفحه یادآوری میکند که منتشر کنید، با دکمهای به پروفایلها. پروفایل آنجا میگوید این ورودی روی گره خاموش است یا این ترنسپورت روی گره خاموش است، و اینکه روشنش کنید و دوباره منتشر کنید.
هر ورودی کلید خصوصی دارد. ساخت کلید کنار فیلد یکی را در مرورگر میسازد، یا veilway genkey را روی نود اجرا کنید و نیمهٔ خصوصی را بچسبانید. پنل نیمهٔ عمومی را برای پروفایل ورودی میسازد. کلید ترنسپورتهای tls، ws و fronted هم همین است: ساخت کلید یکی میسازد و پنل هنگام اعمال ورودی نیمهٔ عمومیاش را در پروفایل میگذارد. فرم نشانیهای دروازه (هر کدام در یک خط) و MTU هم دارد. MTU پیشفرض 1420 است، یا 1390 با udp-obfs.
ترنسپورتها اینها هستند:
| ترنسپورت | توضیح |
|---|---|
WireGuard ساده روی UDP (udp) |
همان WireGuard معمولی، روی UDP |
UDP در پوشش مخصوص Veilway (udp-obfs) |
UDP با پوشش مخصوص خود Veilway |
TLS که نود خودش تمام میکند (tls) |
نود خودش اتصال TLS را تمام میکند |
WebSocket پشت وبسرور شما (ws) |
یک WebSocket که وبسرور شما به نود میفرستد |
درخواستهای HTTP از طریق CDN (fronted) |
درخواستهای HTTP که یک CDN به نود میفرستد |
WebSocket روی HTTP ساده (ws-plain) |
یک WebSocket روی HTTP ساده که وبسرور شما بدون TLS به نود میفرستد. ضعیفترین ترنسپورت. |
دستدهی یک سایت واقعی، قرضگرفته (آلفا) (faketls) |
نود گواهی ندارد و هر چه را از کاربران نباشد به یک سایت واقعی که نامش را میدهید میرساند. آلفا. حالت سایت قرضی را ببینید. |
ws-plain برای شبکههایی است که TLS به سرور شما در آنها بسته یا کند است و HTTP ساده رد میشود. فرم هنگام انتخاب هشدار میدهد: شبکه نام این سرور را میبیند و میفهمد مردم از این برنامه استفاده میکنند، چه زمانی و چقدر، ولی آنچه میفرستند را نمیبیند. کلید و کوکی خودش را دارد. ساخت کلید کلید را میسازد. پنل نیمهٔ عمومی را در پروفایل میگذارد و کلید را حداکثر هر 7 روز میچرخاند (کلیدهای ترنسپورت را ببینید). توکن در کوکیای میآید که زیر بخش کلید ترنسپورت ورودی نام برده شده، پس نامی بگذارید که سایت خودتان هیچوقت نمیگذارد. path آن نباید path ترنسپورت tls، ws یا fronted هیچ ورودیای باشد و نباید شنونده را با ترنسپورتی جز ws-plain شریک شود. پنل هر دو را رد میکند. برای نام میزبان و درگاهی که برنامهها به کار میبرند پروفایلها را ببینید.
ترنسپورتهای tls، ws و fronted بیشتر از آنچه فرم نگه میدارد لازم دارند: گواهی، مبدأ فریب، پروکسیهای مورد اعتماد و کلیدهای ترنسپورت. اینها را در نمای JSON تنظیم کنید.
خطهای وبسرور. ترنسپورت ws، fronted یا fronted-shaped یک ورودی Veilway پشت وبسرور شماست و وبسرور باید مسیرش را به شنوندهٔ نود برساند. وقتی مسیر و نشانی گوشدادن درست باشند، ترنسپورت خطهای وبسرور را نشان میدهد: بلوک Caddy (handle <path>* با reverse_proxy به شنونده، نه handle_path، و header_down -Server تا پاسخهای آن مسیر مثل هر صفحهٔ دیگر یک فیلد Server داشته باشند) و بلوک location در nginx (HTTP ساده به شنونده، سرآیندهای Upgrade و Connection، X-Forwarded-For، و برای fronted بدون بافر)، هر کدام با دکمهٔ کپی. یکی را در فایل سایتی که نصبکننده نوشته بگذارید، /etc/caddy/conf.d/veilway-panel.caddy داخل بلوک سایت یا /etc/nginx/conf.d/veilway-panel.conf داخل بلوک server، و وبسرور را دوباره بارگذاری کنید. اگر نشانی گوشدادن loopback نباشد (شنونده نباید از اینترنت در دسترس باشد) یا پروکسیهای مورد اعتماد نشانی loopback نداشته باشند (وبسرور از 127.0.0.1 وصل میشود)، همین بخش هشدار میدهد. نصبکننده سایت سادهاش را روی 127.0.0.1:8080 هم سرو میکند، که مبدأ فریب پیشفرض است. افزودن به وبسرور همین سرور (از v0.3.9) روی سروری که وبسرورش را veilway.sh راه انداخته این کار را برایتان میکند: همهی مسیرهای ws و fronted نود را یکجا میفرستد، سرویس root سرور هر مسیر را بررسی میکند، آنها را در پوشهای که فایل سایت شامل میکند مینویسد، پیکربندی را آزمایش میکند، وبسرور را دوباره بارگذاری میکند و اگر نپذیرد برشان میگرداند. نتیجه زیر دکمه نشان داده میشود. مسیری که دکمه کنار میگذارد (شنوندهای که روی 127.0.0.1 نیست، یا مسیری که با مسیر خود پنل تداخل دارد) با دلیلش فهرست میشود.
حالت سایت قرضی (آلفا)
Section titled “حالت سایت قرضی (آلفا)”این یک ترنسپورت از ورودی Veilway است، در صفحهٔ ورودیها. نوع ترنسپورت را روی دستدهی یک سایت واقعی، قرضگرفته (آلفا) بگذارید. فرم هشدار آلفا، بازبینینشده، رتبهٔ قابلشناسایی و این فیلدها را نشان میدهد:
- گوش میدهد روی: نشانی و درگاهی که نود روی آن اتصال میپذیرد. نشانی و درگاه مخصوص خودش را میخواهد، با هیچ ترنسپورت دیگری شریک نیست و نمیتواند پشت وبسرور، CDN یا
trusted_proxiesباشد. پنل نشانی مشترک را رد میکند. - نام سایت: سایت واقعیای که قرض گرفته میشود، بهشکل نام DNS با حروف کوچک مثل
www.example.com. برنامهها آن را بهعنوان نام سرور میفرستند و نود هنگام اتصال به سایت هم همین را به کار میبرد. - نامهای اضافه: تا ۴ نام دیگر که برنامهها میتوانند بفرستند. اگر نام سایت بس است خالی بگذارید.
- درگاه سایت: درگاه سایت. خالی یعنی ۴۴۳.
- نشانی سایت: نشانی و درگاهی که بهجای جستوجوی نام به آن وصل شود، مثل
192.0.2.10:443. خالی یعنی نام در هر شروع و بارگذاری دوباره جستوجو میشود. پنل نشانیای را که خود این نود روی آن گوش میدهد رد میکند، چون اتصال هر غریبه به خود نود برمیگشت. - کلید ترابرد، نیمهٔ خصوصی: ساخت یک کلید یکی میسازد، یا یکی ۴۴ نویسهای بچسبانید. باید فقط مال همین ترنسپورت باشد و با هر کلید ترنسپورت دیگر نود فرق کند. پنل هنگام اعمال نیمهٔ عمومی را نگه میدارد و کلید دیگر نشان داده نمیشود. بعداً که ترنسپورت را ویرایش میکنید، فیلد نشانگری دارد که کلید فعلی را نگه میدارد.
- میدانم سایت با این کار موافقت نکرده و پاسخگوی استفاده از نام آن هستم: لازم است. نود بدون آن ترنسپورت را اجرا نمیکند.
- غریبههای فرستادهشده به سایت در یک زمان (۲۵۶) و اتصال تازه به سایت در هر ثانیه (۱۶): محدودیتهایی که نمیگذارند نود به سایت فشار بیاورد. وقتی دومی تمام شود، کاربران همچنان سرویس میگیرند و فقط غریبهای که به اتصال نیاز دارد بسته میشود.
بازبینی تغییرات را بزنید، بعد اعمال روی نود، و درگاه TCP شنونده را در فایروال سرور باز کنید.
انتخاب سایت. پروژه سایتی پیشنهاد نمیکند، چون فهرست سایتهایی که کار میکنند فهرست سایتهایی است که باید زیر نظر گرفت. سایت خوب:
- TLS 1.3 حرف میزند و از نشانی نود بدون چالش، مسدودسازی یا محدودیت نرخ در دسترس است،
- از شبکههای کاربران شما در دسترس است و آنجا مسدود نیست،
- پرطرفدار و پایدار است، تا بازدید از یک نشانی عجیب جلب توجه نکند و دستدهیاش کم عوض شود،
- در همان شبکهٔ نود میزبانی میشود، یا تا جای ممکن نزدیک به آن، چون نشانی نود نشانی سایت نیست،
- دامنهٔ خودتان نیست. برای سایتی که مال شماست،
tlsیاwsانتخاب بهتری است.
پنل فقط بررسی میکند نامها، درگاهها و نشانیها درست نوشته شده باشند و هرگز به سایت وصل نمیشود. خودتان از روی نود بررسی کنید، مثلاً با openssl s_client -connect www.example.com:443 -tls1_3 -servername www.example.com. نود در شروع ۸ بار سایت را میسنجد، بعد هر ۶ ساعت یک بار، و آنچه پیدا میکند را در گزارش مینویسد.
پروفایل. این ترنسپورت در پروفایلها پروفایل جدا دارد، با نامی مثل main (borrowed site, alpha) و نشان آلفا. بخش اول نامی است که به پروفایل آن inbound دادهاید، یا اگر نامی ندادهاید برچسب آن inbound. پایان نام همیشه میماند. برنامهای که ترنسپورت را نشناسد کل پروفایلی را که آن را دارد رد میکند، پس پنل هرگز آن را با پروفایل ترنسپورتهای دیگر قاطی نمیکند. پروفایل وقتی آماده است که اینها را داشته باشد:
- کلید عمومی ورودی، مثل هر پروفایل دیگر،
- کلید عمومی ترنسپورت، که پنل فقط وقتی دارد که کلید را کامل دیده باشد. اگر پروفایل میگوید ندارد، در فرم ترنسپورت کلید تازهای انتخاب کنید و اعمال کنید،
- نشانیای که برنامهها بتوانند به آن وصل شوند: نشانی نود زیر تنظیمات، نشانیهای پروفایل، یا شنوندهای که به IP عمومی بسته شده است. هر کدام درگاه شنونده را میگیرد. نشانیهای بیشتر، مثل نشانی یک فرستنده، در جایگزین
faketls_addressesمیآید، فهرستی از نشانیهای IP.
ترنسپورتی که پنل نتواند بیرون بدهد با دلیلش زیر از این پروفایل کنار گذاشته شد فهرست میشود. پروفایلی که هیچ ترنسپورتش آماده نباشد منتشر نمیشود. رله هرگز faketls را نمیرساند و فقط رله آن را کنار میگذارد. وقتی آماده را نشان داد انتشار پروفایلها را بزنید، و بعد از هر تغییر سایت دوباره.
کاری که کاربران باید بکنند. برنامهها این ترنسپورت را فقط بعد از اینکه کاربر روشهای انتقال آلفا را در تنظیمات برنامه روشن کند به کار میبرند (در خط فرمان، veilway connect --alpha). برنامه هر بار که کاربر آن را روشن میکند هشدار نشان میدهد و کاربر باید بپذیرد. تا آن وقت برنامه میگوید اتصال فقط با راهی ساخته میشود که خاموش است. راهنما را ببینید.
آنچه شبکه هنوز میتواند ببیند. این حالت آلفاست، رتبهٔ Detectable، بدون بازبینی بیرونی. نشانی نود جزو نشانیهای سایت نیست و یک جستوجوی نام این را نشان میدهد. زمان رفتوبرگشت و رفتار TCP مال نود است، نه سایت. سایت هر زمان میتواند دستدهیاش را عوض کند و برای هر غریبه و هر کاربر اتصالهای کوتاهی از نشانی نود میبیند. اتصالی که تونل را میرساند یک اتصال بلند است با ترافیک در هر دو جهت. هر کس اشتراک دارد نشانی، نام و کلید را میداند. فهرست کامل زیر «What remains detectable» در صفحهٔ پروتکل است.
ورودیهای Xray
Section titled “ورودیهای Xray”اگر افزونهٔ Xray نصب باشد (sudo bash veilway.sh addon xray install، افزونهٔ Xray را ببینید)، بخش افزونهٔ Xray در صفحهٔ ورودیها نسخه و ورودیهایی را که اینجا ساخته شده نشان میدهد، با دکمهٔ افزودن ورودی Xray. بدون افزونه، بخش این را میگوید و دستور نصب را نشان میدهد. VLESS، Trojan یا Shadowsocks و یک درگاه انتخاب کنید. برای VLESS و Trojan فایلهای گواهی و کلید روی نود و یک وبسرور فریب هم بدهید. هر کاربر فعلی و بعدی برای ورودی اعتبارنامه میگیرد. میزبان در لینکها نام میزبانی است که لینکها دارند. خالی یعنی اولین نشانی عمومی نود. Shadowsocks درگاهش را برای UDP هم به کار میبرد، پس هر دو را باز کنید. ورودی Xray را بعداً میشود ویرایش کرد: درگاه، نشانی گوشدادن، فایلهای گواهی، وبسرور فریب، میزبان، و برای Shadowsocks کلید سرور تازه. کاربران اعتبارنامهشان را نگه میدارند، ولی لینکشان با تغییر درگاه، میزبان یا کلید سرور عوض میشود. لینکهای هر کاربر در صفحهٔ خود اوست.
ورودی Xray روی نشانی خود سرور، کنار پروفایلهایی که ارائه میدهید، جواب میدهد. هر کس آن را پیدا کند میفهمد این نشانی سرور پروکسی است، پس پنل پروفایلهای همان نشانی را در اشتراکها حداکثر «قابل شناسایی» نگه میدارد و بازبینی پیش از اعمال این را میگوید. از v0.2.4 فقط پروفایلهایی که با ورودی Xray نشانی مشترک دارند محدود میشوند. ورودیای که روی همهٔ نشانیها گوش میدهد (پیشفرض) همه را محدود میکند. ورودی روی یک IP جدای سرور، با نام میزبان خودش، پروفایلهای نشانیهای دیگر را دست نمیزند. نامی که پنل نتواند حل کند، یا به نشانی Xray برسد، مشترک حساب میشود.
ورودیهای پراکسی (SOCKS5 و HTTP)
Section titled “ورودیهای پراکسی (SOCKS5 و HTTP)”ورودی پراکسی به نرمافزارهای دیگر اجازه میدهد از نود مثل پراکسی ساده استفاده کنند: مرورگر، اسکریپت، یا برنامهای که پراکسی SOCKS5 یا HTTP میگیرد. تونل نیست و پروفایل ندارد. مردم با نام حساب و گذرواژهٔ پراکسی وارد میشوند و آنچه میفرستند از همان قواعد، خروجیها، سهمیه و شمارندههای ترافیک تونل آن حساب میگذرد. روی نود و پنل به v0.2.17 یا جدیدتر نیاز دارد.
افزودن ورودی. در ورودیها افزودن ورودی را بزنید و پراکسی SOCKS5، پراکسی HTTP یا SOCKS5 و HTTP روی یک پورت را انتخاب کنید. آخری هر دو نوع کلاینت را روی یک پورت جواب میدهد. بعد پر کنید:
- برچسب، مثل هر ورودی.
- گوش دادن روی: نشانی و پورت TCP که کلاینتها به آن وصل میشوند، مثل
127.0.0.1:1080. فقط loopback را بیرونیها نمیرسند. - UDP از راه پراکسی (SOCKS5 و ترکیبی): به کلاینتهای SOCKS5 اجازه میدهد UDP بفرستند، برای DNS، تماس و بازی. برای حمل فقط TCP خاموشش کنید.
- اجازهٔ UDP برای کلاینتهای پشت NAT: وقتی UDP روشن است و نشانی loopback نیست دیده میشود. کلاینت پشت NAT پورتی را که از آن میفرستد نمیداند و پورت ۰ میخواهد، و بدون این گزینه UDP نمیگیرد. با روشن بودنش، اولین بستهٔ رسیده از نشانی کلاینت همبستگی UDP را میگیرد، پس کسی که نشانی عمومی کلاینت را با او شریک است میتواند زودتر بفرستد و آن را بگیرد. خاموشش نگه دارید مگر کلاینتها پشت NAT باشند.
- چه کسی میتواند وارد شود: هر حسابی که ورود پراکسی دارد، یا فقط حسابها و گروههای انتخابشده که در آن زیر حسابها و گروهها تیک میزنید. تا وقتی هیچ حسابی که ورودی میپذیرد ورود پراکسی نداشته باشد فرم هنوز کسی نمیتواند وارد شود را نشان میدهد.
- پیشرفته: ظرفیت این ورودی: کل اتصالها (۱۰۲۴)، اتصال برای هر مبدأ (۶۴، مبدأ یک IPv4 یا یک /64 از IPv6 است) و هنوز واردنشده (۲۵۶). فیلد خالی مقدار پیشفرض نوشتهشده در خودش را نگه میدارد.
نشانیها. نشانی loopback چیز بیشتری نمیخواهد. نشانی خصوصی (مثل 10.x، 192.168.x، 100.64.x) نشانی خصوصی تضمینی نیست را نشان میدهد: روی میزبان ابری ممکن است به نشانی عمومی برسد، و در شبکهٔ محلی ماشینهای دیگری هم هست. هر نشانی دیگر، 0.0.0.0 هم، نشانی عمومی است. فرم هر کسی به این نشانی میرسد را نشان میدهد و تا میدانم که ترافیک و گذرواژهها بدون رمزگذاری از شبکه میگذرند را تیک نزنید جلو نمیرود. ورودی عمومی در فهرست نشان نشانی عمومی را نگه میدارد. پنل نشانیای را که شنوندهٔ دیگری از نود به کار میبرد رد میکند. مثل هر ورودی بازبینی و اعمال کنید.
چه کسی میتواند وارد شود. ورود پراکسی مال یک حساب است. حساب با نام خودش بهعنوان نام کاربری و گذرواژهٔ پراکسیاش وارد میشود، و فقط اگر ورودی آن را بپذیرد. حساب غیرفعال، منقضی یا ردشده از سهمیه مثل همهجا رد میشود. حساب میتواند ورود پراکسی داشته باشد و دستگاه نداشته باشد، برای کسانی که فقط پراکسی به کار میبرند. پروفایلهای تونل دست نمیخورند: ورودی پراکسی هرگز در پروفایلها نمیآید.
ورود پراکسی حساب. بخش ورود پراکسی در صفحهٔ حساب از لینک اشتراک و کلیدهای دستگاه جداست.
- ساختن ورود پراکسی گذرواژهای از ۳۲ حرف و رقم میسازد و همان لحظه نشان میدهد. دوباره گذرواژهٔ شما را میخواهد، و کد شما را وقتی ورود دومرحلهای روشن است. پنل آن را با کلیدهای
panel.keysمهروموم نگه میدارد و به نود میفرستد. - نمایش ورود بعد از تأیید دوباره گذرواژهٔ شما آن را باز میکند. پنل نام کاربری و گذرواژه را فهرست میکند، و برای هر ورودی پراکسی که حساب را میپذیرد یک خط برای کپی، به شکل نشانی
socks5://وhttp://با ورود داخلش، برای هر ورودی و نوع. برای نشانی wildcard نشانی نود را از تنظیمات میگذارد، یا تا وقتی ننوشتهاید یک جانگهدار. خط ورودی loopback فقط از خود نود کار میکند. پنهان کردن آن را میبندد. - ساختن گذرواژهٔ تازه آن را عوض میکند. گذرواژهٔ قبلی همان لحظه از کار میافتد و اتصالهای پراکسی حساب قطع میشود.
- حذف ورود را برمیدارد. اتصالهایش تمام میشود و حساب تا وقتی ورود تازهای نسازید نمیتواند به هیچ ورودی پراکسی وارد شود. حذف خود حساب هم همین را میکند.
هیچ توکن API نمیتواند ورود پراکسی بسازد یا نشان بدهد. گزارش رویدادها ثبت میکند که ساخته، نشان داده یا حذف شد، هرگز گذرواژه را.
شمارندهها. ردیف ورودی در ورودیها نشان میدهد چند اتصال باز است، چقدر برده، و چند ورود رد شده، مثلاً «۳ باز، ۱٫۲ گیگابایت، ۰ ورود ردشده». وقتی کلاینت پشت NAT رد میشود، شمار بستههای UDP از پورت نادرست کنارش میآید: نشانهٔ اینکه اجازهٔ UDP برای کلاینتهای پشت NAT را روشن کنید یا کلاینت را به TCP ببرید. بایتها زیر برچسب ورودی در ترافیک هم هست.
نود برای شما چه میکند. مبدأیی که در یک دقیقه ۱۰ ورود به یک نام را ناموفق بزند تا پایان آن دقیقه آن نام را رد میگیرد، و هر حدس غلط ردِ بعدی همان نام را کندتر میکند. اتصالهایی که هرگز وارد نشوند بعد از ۱۰ ثانیه بسته میشوند. تغییر در ورودی، یا در اینکه چه کسی را میپذیرد، اتصالهایی را که دیگر نمیپذیرد ظرف یک ثانیه تمام میکند. جزئیات در ورودیهای پراکسی در مرجع پیکربندی است.
اتصالهای بیرونی
Section titled “اتصالهای بیرونی”زبانهٔ اتصالهای بیرونی در خروجیها و مسیریابی نشان میدهد نود چطور به بیرون وصل میشود.
- مستقیم از نشانی خود نود وصل میشود.
- پراکسی SOCKS5 از راه پراکسیای که خودتان اداره یا اجاره میکنید وصل میشود. نشانیاش را بدهید و، اگر دارد، نام کاربری و رمز را.
- سرور Xray (از v0.2.18) از راه سرور VLESS، VMess، Trojan یا Shadowsocks که اجاره کردهاید وصل میشود و افزونهٔ Xray اجرایش میکند. سرورهای Xray را ببینید.
- سرور WireGuard (از v0.3.6) از راه سرور WireGuard مثل Mullvad یا سرور خودتان وصل میشود، با تونلی که خود نود اجرا میکند. سرورهای WireGuard را ببینید.
اتصال مستقیم دو فیلد اختیاری دارد. نشانی مبدأ یک IP محلی سرور است که ترافیک از آن بیرون میرود. از v0.2.8، رابط شبکه نام یکی از رابطهای شبکهٔ سرور است، مثلاً eth1. ترافیک اتصالی که رابط دارد از همان رابط بیرون میرود، هر چه جدول مسیریابی بگوید. به لینوکس یا macOS نیاز دارد. اگر رابطی هنگام شروع نود نباشد، گزارش هشدار میدهد و جریانهای آن اتصال تا آمدن رابط شکست میخورند.
سرورهای Xray
Section titled “سرورهای Xray”اتصال بیرونی سرور Xray میگذارد یک خروجی از راه سرور ارائهدهندهٔ دیگری که VLESS، VMess، Trojan یا Shadowsocks حرف میزند بیرون برود، تا بدون نود Veilway دوم از سروری که اجاره کردهاید بهعنوان خروجی استفاده کنید. آموزش اتصال بیرونی Xray مرحلهبهمرحله میرود. افزودن اتصال بیرونی را بزنید، نوع را روی سرور Xray بگذارید و روش افزودن را انتخاب کنید:
- چسباندن پیوند در پیوند اشتراک پیوند
vless://،vmess://،trojan://یاss://را میگیرد. نود آن را یک بار میخواند و فیلدها را نگه میدارد، نه خود پیوند را. اگر پیوند را نپذیرد، پنل دلیلش را ساده میگوید: نوع جریان پشتیبانینشده، پنهانسازی سرآیند، تنظیمات امنیتی، بررسی گواهی خاموششده یا گواهی سنجاقشده، تنظیم رمزنگاری، flow،alterIdدر VMess، رمزی که در فهرست نیست، کلیدی که با رمزش جور نیست، افزونهٔ Shadowsocks یا تنظیمات ناقص Reality. - پر کردن فیلدها فرم را میدهد: پروتکل، نشانی پراکسی (میزبان و درگاه) و اعتبارنامه، شناسه کاربر برای VLESS و VMess، گذرواژه برای Trojan و Shadowsocks، رمز برای VMess و روش برای Shadowsocks. بعد ترابرد (TCP، WebSocket، gRPC، HTTPUpgrade یا XHTTP) با مسیر، سرآیند Host، نام سرویس، Authority یا حالت XHTTP، و امنیت (هیچ، TLS یا Reality) با نام سرور (SNI)، اثر انگشت مرورگر، ALPN، یا برای Reality سایت قرضی، کلید عمومی و شناسه کوتاه. جریان (Flow) Vision را پیشنهاد میدهد، برای TCP با TLS یا Reality. اجازه نشانی خصوصی بهطور پیشفرض خاموش است، و نشانیهای loopback و link-local همیشه رد میشوند. فرم پیش از بازبینی میگوید نود چه چیزی را رد میکند: VLESS و Trojan به TLS یا Reality نیاز دارند، مسیر
?ندارد، گذرواژهٔ کوتاه Shadowsocks، و اینکه Reality روی WebSocket یا HTTPUpgrade کار نمیکند.
اعتبارنامه بعد از ذخیره دیگر نشان داده نمیشود. برای نگه داشتن مقدار ذخیرهشده همانطور بگذارید. نود نشانی پراکسی را که نام باشد جستوجو میکند، نه Xray، با DNS ساده روی UDP. وقتی نام ارائهدهنده باید پنهان بماند، IP بنویسید.
پنل هشدار میدهد که ارائهدهنده آنچه این خروجی حمل میکند را میبیند. وقتی افزونه نصب نیست، هشدار افزونه Xray نصب نیست هم میدهد. باز هم میتوانید اتصال بیرونی را ذخیره کنید، ولی هر خروجی که از آن استفاده کند تا نصب افزونه روی نود از کار میماند (پیوندی نشان میدهد چطور نصب کنید). افزودن، تغییر یا حذف اتصال بیرونی Xray، Xray را دوباره راه میاندازد، پس کاربران ورودیهای Xray لحظهای قطع میشوند و با تلاش بعدی دوباره وصل میشوند. اتصال بیرونی Xray فقط روی نودهای لینوکسی کار میکند.
ستون وضعیت فهرست در حال حمل، از کار افتاده با دلیل نود زیرش، یا هنوز گزارشی نیست را میگوید. هر 10 ثانیه تازه میشود. هر خروجی که از اتصال بیرونیِ از کار افتاده استفاده کند خودش هم از کار افتاده است و چیزی دورش نمیچرخد.
در خروجیای که از سرور Xray میگذرد، انتخاب UDP زیر ترافیکی که اتصال بیرونی نمیبرد فقط رد کردن و دور ریختن بیصدا را میدهد. فرم میگوید اتصال بیرونی خودش UDP را حمل میکند، و تا وقتی سرور از کار افتاده جریان تمام میشود. بقیه را نود بررسی میکند. جزئیات و محدودیتها زیر خروجیهای xray در مرجع پیکربندی است.
سرورهای WireGuard
Section titled “سرورهای WireGuard”اتصال بیرونی سرور WireGuard میگذارد یک خروجی از راه سرور WireGuard یک طرف دیگر بیرون برود. نود کلاینت WireGuard است و رابط شبکه نمیخواهد. آموزش اتصال بیرونی WireGuard مرحلهبهمرحله میرود. افزودن اتصال بیرونی را بزنید و نوع را روی سرور WireGuard بگذارید.
- درونریزی پیکربندی WireGuard. متن یک فایل
.confرا بچسبانید و خواندن پیکربندی را بزنید. در همان صفحه خوانده میشود و هیچجا فرستاده نمیشود، و متن بعد از خواندن پاک میشود. پنل فیلدها را پر میکند و آنچه نادیده گرفته، مثل سرورهای DNS و اسکریپتها، فهرست میکند. فایلی را که بیش از یک[Peer]یا کلید گمشده یا نشانی بد داشته باشد نمیپذیرد و میگوید کدام خط. - فیلدها نشانی سرور (
host:port)، کلید عمومی سرور، کلید خصوصی، کلید پیشاشتراکی (اختیاری) و نشانیهای درون تونل (یک IPv4 و حداکثر یک IPv6) هستند. تنظیم دقیق و شبکه MTU، Keepalive، بیشترین جریان باز و نشانی مبدأ و رابط شبکهٔ اختیاری را دارد، مثل اتصال مستقیم.
کلیدها بعد از ذخیره دیگر نشان داده نمیشوند. برای نگه داشتن مقدارهای ذخیرهشده همانطور بگذارید. اگر سرور یا کلید عمومیاش را عوض کنید کلید خصوصی را دوباره بنویسید.
پنل هشدار میدهد که صاحب سرور میبیند این خروجی چه میبرد، و میگوید مسیر تا سرور WireGuard ساده است که سانسورچی میتواند ببندد. جایی که WireGuard بسته است سرور Xray بگذارید.
ستون وضعیت در حال حمل یا از کار افتاده را با مدت و دلیل میگوید. زیرش آخرین دستدهی، نشانی سروری که نود الان استفاده میکند و تعداد جریانهای باز است. هر 10 ثانیه تازه میشود. هر خروجی که از اتصال بیرونیِ از کار افتاده استفاده کند خودش هم از کار افتاده است و چیزی دورش نمیچرخد. در چنین خروجیای UDP زیر ترافیکی که اتصال بیرونی نمیبرد فقط رد کردن و دور ریختن بیصدا را میدهد. جزئیات و محدودیتها زیر خروجیهای wireguard در مرجع پیکربندی است.
ارائهدهندگان دیگر
Section titled “ارائهدهندگان دیگر”بالادست (upstream) اشتراک Veilway ارائهدهندهٔ دیگری است که نود شما از آن بهعنوان خروجی استفاده میکند. زبانهٔ ارائهدهندگان دیگر زیر خروجیها و مسیریابی برای هر کدام یک کارت دارد و استفاده از ارائهدهندهٔ دیگر بهعنوان خروجی یکی اضافه میکند. از v0.3.6 کارت نشان میدهد تونل نود چه میکند و میگذارد هدایتش کنید.
- تونل. در حال اتصال، در حال اتصال دوباره، متصل (با مدت اتصال)، ناموفق، یا متوقف با دلیل: سهمیه تمام شده، حساب منقضی شده، حساب غیرفعال شده یا این نود در حال توقف است. کارت همچنین نشان میدهد حساب کی تمام میشود، سهمیه هر چند وقت از نو شروع میشود، اعلانهای ارائهدهنده (با نشان هشدار یا بدون آن)، و فهرست پروفایلهایی که این نود حالا نمیتواند استفاده کند با دلیلهای ساده و بدون نشانی.
- آنچه این نود میخواهد. چهار انتخاب که گذرواژهٔ تازه نمیخواهند:
- خروجی ارائهدهنده. وقتی تونل بالا آمد خروجیهای ارائهدهنده را نشان میدهد. خروجی تازه روی تونل در حال کار گرفته میشود و در این فاصله چیزی از خروجی قبلی بیرون نمیرود.
- نمایه. خودکار همهٔ پروفایلها را به ترتیب ارائهدهنده امتحان میکند. انتخاب یکی فقط همان را به کار میبرد.
- پروفایلهای دیگر هم امتحان شوند. وقتی یک پروفایل انتخاب شده، اگر آن قابل استفاده نبود سراغ بقیه میرود.
- ترابرد. خودکار از میان همهٔ ترابردهایی که پروفایل فهرست کرده انتخاب میکند. انتخاب یکی فقط همان نوع را به کار میبرد.
- پروفایل یا ترابرد تازه تونل را دوباره راه میاندازد و کارت این را میگوید. خروجی تنها این کار را نمیکند. این انتخابها چیزی را که ارائهدهنده بتواند علیه نود به کار ببرد عوض نمیکنند: لینک، کلیدها و ردهٔ ترابردهای مجاز اینجا نیستند.
خروجیها
Section titled “خروجیها”زبانهٔ خروجیها نشان میدهد ترافیک کاربر از کجا بیرون میرود. کاربران از میان خروجیهایی که مسیریابی اجازه میدهد انتخاب میکنند. هر خروجی نامی دارد که کاربران میبینند، و کد کشور دو حرفی مثل DE. خروجی از یکی از اینها بیرون میرود:
- یک اتصال بیرونی: هر جریان دوباره از راه یک اتصال بیرونی وصل میشود.
- هستهٔ سیستم: بستهها به یک دستگاه TUN میروند و هسته هدایتشان میکند. فقط لینوکس. رابط پیشفرض
veilway0است. - هیچجا، مسدود: هرچه به این خروجی فرستاده شود دور ریخته میشود.
- نود دیگر: ترافیک از راه پیوند نود ادامه مییابد.
میزان بار. در فرم یک خروجی گزارش میزان شلوغی به اپها را روشن کنید (از v0.2.18) تا برنامهها به کاربران نشان دهند خروجی چقدر شلوغ است: خلوت، شلوغ یا خیلی شلوغ. اندازهگیری بر اساس را انتخاب کنید: اتصالهای باز (جریانهای بازِ خروجی برای همهٔ کاربران با هم) یا پهنای باند مصرفی (بالا و پایین با هم به مگابیت بر ثانیه، میانگین 30 ثانیه). بعد شلوغ از و خیلی شلوغ از را بگذارید، عدد صحیح تا 1,000,000، دومی بزرگتر از اولی. تنظیم تازه از 50 و 200 اتصال شروع میشود. پیشفرض خاموش است و خروجی مسدود باری ندارد. برای خروجیای که گزارش نمیدهد برنامهها چیزی نشان نمیدهند. نود هر 10 ثانیه نگاه میکند، سطح را فقط بعد از دو نگاه پشتسرهم عوض میکند و تغییر را حداکثر دقیقهای یک بار به دستگاه میگوید، پس آنچه برنامهها میبینند عمداً درشت و کمی دیر است. خط خروجی در فهرست سطح فعلی برنامهها را نشان میدهد، یا میزان بار هنوز اندازهگیری نشده.
مسیریابی
Section titled “مسیریابی”قواعد از بالا به پایین بررسی میشوند. اولین قاعدهای که تطبیق کند تصمیم میگیرد. ترافیکی که هیچ قاعدهای با آن تطبیق نکند، به خروجی پیشفرض میرود.
خروجیهایی که خودکار میتواند به آنها برود خروجیهایی را فهرست میکند که دستگاهِ روی خودکار وقتی خروجی خودش کار نمیکند از آنها بیرون میرود، مثلاً خروجی SOCKS5 که پراکسیاش دیگر جواب نمیدهد. دستگاه اولین خروجی انتخابشده را میگیرد که کار میکند و کاربر اجازهاش را دارد، و وقتی خروجی خودش دوباره کار کرد برمیگردد. اگر هیچکدام انتخاب نشود، دستگاهها روی خروجی خودشان میمانند. روی نود ورودی خالی بگذارید، تا چیزی دور پیوند قطع نرود. در پیکربندی routing.fallback است.
نود تازه کاربران را از هم جدا نگه میدارد. اولین قاعدهاش، isolate-users، ترافیک به tunnel:users، یعنی نشانیهای تونل همهٔ دستگاهها، را رد میکند، پس هیچ دستگاهی به دستگاه دیگر نمیرسد، حتی دستگاه دیگر همان کاربر. آن قاعده را فقط وقتی بردارید، یا قاعدهای بالای آن بگذارید که tunnel:users را برای یک گروه اجازه دهد، که کاربران باید به هم برسند، مثلاً برای بازی روی شبکهٔ مشترک. ترافیک بین کاربران را ببینید.
هر قاعده شرط دارد و هر شرطی که اضافه کنید باید برقرار باشد تا قاعده تطبیق کند. شرطها: کاربر، گروه، ورودی، ترابرد، پیوند نود، شبکهٔ مقصد، دامنه، پروتکل، درگاه، نوع ICMP و کد ICMP. دامنه زیردامنههایش را هم میگیرد.
ترابرد (همان ترنسپورت) قاعده را به نوع نشستی میبندد که جریان روی آن شروع شده: udp، udp-obfs، tls، ws، ws-plain، fronted، fronted-shaped، faketls، socks5 یا http. فهرست ترنسپورتهای ورودیهایتان را پیشنهاد میدهد. همهٔ ترابردها را نشان بده، با آنهایی که هیچ ورودی ندارد بقیه را هم فهرست میکند، و بررسی پیکربندی دربارهٔ چنین موردی هشدار میدهد، چون هرگز منطبق نمیشود. جریان ترنسپورتی را که با آن شروع شده نگه میدارد: دستگاهی که به ترنسپورت دیگری برود جریانهای قدیمیاش را همانجا که شروع شده نگه میدارد و جریانهای تازهاش از قاعده پیروی میکنند. برچسب ورودی پراکسی هم زیر ورودی انتخاب میشود، پس قاعده میتواند فقط یک ورودی پراکسی را بپوشاند. ترافیک افزونهٔ Xray نه ترنسپورت دارد نه ورودی، پس قاعدهای با هرکدام هرگز با آن منطبق نمیشود. ترنسپورت را ببینید.
بعد، قاعده ترافیک را به یکی از اینها میفرستد:
- این خروجی: یکی از خروجیهای نود را انتخاب کنید، بدون توجه به انتخاب کاربر. اگر بعداً آن خروجی حذف شود، بازبینی قاعده را فهرست میکند و نود تغییر را نمیپذیرد تا قاعده جای دیگری اشاره کند.
- خروجیای که کاربر انتخاب کرده، در میان خروجیهایی که آن کاربر مجاز است.
- هیچجا، بیصدا: ترافیک بدون پاسخ دور ریخته میشود.
- هیچجا، با رد: به دستگاه گفته میشود نمیتواند وصل شود، پس برنامهها فوراً دست میکشند.
در فهرست شبکهٔ مقصد، host:self نشانیهای خود این سرور است. کاربران به آنها میرسند مگر اینکه قاعدهای ردشان کند، پس اگر سرویسهای دیگری روی این سرور اجرا میشود قاعدهای با host:self و هیچجا، با رد اضافه کنید، و بالای آن قاعدهای بگذارید که یک کاربر یا درگاه را عبور میدهد. دسترسی به خود سرور را ببینید.
هر قاعده نامی دارد که تا نام خودتان را ننویسید از کار قاعده ساخته میشود. برای تغییر ترتیب، قاعده را با دستگیرهاش بکشید، از دکمههای پیکان استفاده کنید، یا روی دستگیره Space بزنید و با کلیدهای جهت جابهجایش کنید. ترتیب تازه مثل هر تغییر دیگر بازبینی میشود.
یک قاعده را میشود خاموش کرد. در فهرست میماند و نادیده گرفته میشود. برای شبکهٔ خانگیای که تلفن باید از راه نود به آن برسد، شبکهٔ خانگی را ببینید.
پروفایلها
Section titled “پروفایلها”صفحهٔ پروفایلها برای هر ورودی Veilway یک پروفایل دارد که از پیکربندی نود ساخته میشود. وقتی منتشرشان کنید، برنامهها آنها را از راه اشتراکشان میگیرند. پنل فهرست میکند هر پروفایل هنوز چه کم دارد، بیشتر وقتها نشانیای که برنامهها با آن میرسند. نشانیها در پروفایل، IPها یا نامهای میزبانی است که برنامهها با آن به آن ورودی میرسند، با ویرگول جدا، برای ورودیای که IP یا دامنهٔ خودش را دارد. هر ترنسپورت درگاه خودش را اضافه میکند. اگر خالی باشد، ورودیای که روی IP عمومی گوش میدهد همانجا در دسترس است و بقیه با نشانی نود در تنظیمات. ترنسپورت ws یا fronted-shaped از نظر درگاه استثناست: پشت وبسرور شماست که TLS را تمام میکند و مسیر را به شنوندهٔ HTTP سادهٔ نود میرساند، پس برنامهها به درگاه وبسرور وصل میشوند. این درگاه 443 است، مگر درگاه وبسرور را در پروفایل بگذارید. پیش از v0.2.13 درگاه شنوندهٔ نود به برنامهها داده میشد، که آنجا نمیتوانستند وصل شوند. وقتی ورودی با کلیدهای خصوصیاش اعمال شود، پنل کلید عمومی ورودی و ترنسپورت را خودش پر میکند. ورودی اضافهشده پیش از v0.2.7 هنوز آن را میخواهد: کلید خصوصیاش را در ورودیها دوباره وارد و اعمال کنید، یا نیمهٔ عمومی چاپشدهٔ veilway genkey را بچسبانید. هر پروفایل جایگزینها هم دارد، یک شیء JSON از فیلدهایی که جای فیلدهای ساختهشده را میگیرند. نمیتواند id یا device داشته باشد. وقتی همه آمادهاند انتشار پروفایلها را بزنید. برنامهها در بهروزرسانی بعدی میگیرند.
اثر انگشت گواهی. برای ترنسپورت tls که خودش گواهی میسازد (self_signed)، برنامهها گواهی را از راه پین آن قبول میکنند. از v0.2.18 پنل پین را از نود میپرسد و در هر کاندید tls پروفایل که پین ندارد میگذارد. پروفایل پین گواهی از نود: را با پین نشان میدهد، یا پین گواهی از یک بازنویسی: وقتی بازنویسیهای خودتان پین دارند، که برتری دارند. بدون پین میگوید برنامهها گواهی را از راه زنجیرهاش بررسی میکنند. پین هش کلید نود است و نود هنگام تمدید گواهی کلید را نگه میدارد، پس فقط وقتی عوض میشود که نود کلید تازه بسازد، مثلاً وقتی عمداً فایل کلید را پاک کنید. آن وقت پروفایل پین گواهی از زمان انتشار تغییر کرده است را نشان میدهد. پروفایلهای منتشرشده هنوز پین قدیمی را دارند، پس دستگاههایی که آن را دارند تا تازهسازی بعدی نمیتوانند با tls وصل شوند، و ترنسپورتهای دیگر کار میکنند. برای فرستادن پین تازه دوباره منتشر کنید.
نام میزبان HTTP ساده و درگاه HTTP ساده روی پروفایلی میآیند که ورودیاش ترنسپورت ws-plain دارد. نام میزبان نام وبسرور شما برای HTTP ساده است. شبکه آن را میبیند، پس باید با هر نامی که ترنسپورتهای دیگر هر پروفایل به کار میبرند فرق کند. بدون آن ترنسپورت ws-plain ارائه نمیشود و پروفایل دلیلش را میگوید. درگاه جایی است که برنامهها وصل میشوند، و اگر خالی باشد 80. هیچکدام در پیکربندی نود نیستند: مثل درگاه وبسرور، بازنویسیهای پروفایلاند.
فقط رله: نشانی این نود به برنامهها داده نشود کلیدی روی هر پروفایل است. وقتی روشن باشد، برنامهها فقط نشانی رلههای روشنی را میگیرند که آن ورودی را میرسانند، نه نشانی خود نود را. ترنسپورتی که هیچیک از رلههایی که به آن کاربر میرسند نمیرسانند از پروفایل او بیرون میماند. faketls و ws-plain همیشه بیرون میمانند، چون رله نمیتواند جلوی آنها بنشیند. کاربری که هیچ رلهای به او نمیرسد برای آن ورودی پروفایل نمیگیرد. لینکهای Xray تغییری نمیکنند. اگر کلید روشن باشد و هیچ رلهٔ روشنی آن ورودی را نرساند، صفحه هشدار میدهد. بعد از تغییر دوباره منتشر کنید.
ترتیب اتصالها
Section titled “ترتیب اتصالها”برنامهها اتصالهای یک کاربر را به ترتیب اشتراک فهرست میکنند. از v0.3.6 خودتان آن را تعیین میکنید.
- ترتیب سراسری. در صفحهٔ پروفایلها، ترتیب در اشتراکها پروفایلهای همهٔ سرورها را فهرست میکند. یکی را با دستگیره یا دکمههای گامش جابهجا کنید و ذخیره ترتیب را بزنید. پروفایلی که جا ندادهاید آخر میرود. استفاده از ترتیب پیشفرض آن را پاک میکند. بدون ترتیب، اول پروفایلهای همین سرور میآیند، بعد سرورهای دیگر به ترتیب جایگاهشان.
- برای هر کاربر. صفحهٔ کاربر میتواند ترتیب خودش را بگذارد. آن پروفایلها به همان ترتیب اول میآیند و بقیه از ترتیب سراسری پیروی میکنند.
- پروفایلهای نود راه دور پیشتر از شناسهٔ نود پیروی میکردند و حالا از جایگاه آن در صفحهٔ سرورها.
پیوندهای نود
Section titled “پیوندهای نود”صفحهٔ پیوندها پیوندهای نود را فهرست میکند. پیوند نود این نود را به نود دیگری وصل میکند، تا کاربران اینجا از آنجا بیرون بروند، یا برعکس. برای اینکه وقتی ارتباط بینالمللی قطع است کاربران با یک سرور در داخل و یک سرور در خارج وصل بمانند، راهاندازی نود ورودی را دنبال کنید. صفحهٔ پیوندها یک راهاندازی گامبهگام با سه شروع دارد: راهاندازی بهعنوان نود ورودی، راهاندازی بهعنوان خروجی یک نود ورودی و تونل معکوس. هرکدام جهت، کدها و اثرانگشتها را پشتسرهم میبرد، بعد خروجیای را که از پیوند بیرون میرود اضافه میکند (در ورودی) یا مشخص میکند پیوند از چه چیزی میتواند استفاده کند (در خروجی)، همه در یک تغییر بازبینیشده. بهصورت دستی، دو اپراتور در چهار مرحله نودها را جفت میکنند:
۱. یک اپراتور ساخت پیشنهاد را میزند، ورودیای را که پیوند به آن وصل میشود، جهت، ترنسپورتها و نشانیهای تونل را انتخاب میکند و مدت باز ماندن پیشنهاد را تعیین میکند. کد پیشنهاد را برای اپراتور دیگر میفرستد. پیشنهاد رازی ندارد، ولی آن را از کانالی بفرستید که به آن اعتماد دارید. ۲. اپراتور دیگر چسباندن پیشنهاد را میزند و آن را میخواند. پنل پیش از هر پاسخی نشان میدهد نود او به کجا وصل میشود. میپذیرد و کد پاسخ میفرستد. ۳. اپراتور اول چسباندن پاسخ را میزند و پاسخ را میگیرد. ۴. هر دو با هم تماس میگیرند و مقایسهٔ اثرانگشتها را انجام میدهند. هرکدام هشت گروه خودش را بلند میخواند و گروههای طرف مقابل را تایپ میکند. اگر کدی در راه عوض شده باشد، گروهها نمیخوانند. فقط وقتی خواندند جفتسازی را تأیید کنید.
در پیشنهاد، هر ترنسپورت پروفایل ورودی یک چکباکس دارد، با درگاه، مسیر و نام TLS آن و توضیح کوتاهی که میگوید در شبکه چطور دیده میشود (از v0.2.19). ترنسپورتهایی را که پیوند نباید استفاده کند بردارید و دستکم یکی را نگه دارید. پیوند میتواند از udp، udp-obfs، tls و ws استفاده کند، ولی نه از Encrypted Client Hello، پس دلیل انتخابنشدنی بودنش کنارش نوشته میشود. ترنسپورت tls با گواهی خودامضا از v0.3.6 قابل انتخاب است: نود دیگر آن را فقط از راه پینش قبول میکند و اثرانگشتی که مقایسه میکنید کل بررسی است. ترنسپورت ws اینطور نیست. پنل پین هر ترنسپورت tls را در پیشنهاد میگذارد، گواهی گرفته از مرجع گواهی هم که پیشتر کنار گذاشته میشد. پینها و پیوندهای خودامضا را ببینید. بین دو کشور tls معمولاً امنترین انتخاب است، چون UDP اغلب کند یا قطع میشود. ویرایش بهصورت JSON فهرست را دستی عوض میکند.
دو جهت اینها هستند:
- کاربران آنجا از اینجا بیرون میروند. این نود خروجی است، و نود دیگر به آن وصل میشود.
- کاربران اینجا از آنجا بیرون میروند. این نود ورودی است و نود دیگر به آن وصل میشود. وقتی از آن نود دیگر نمیشود به این نود رسید، از این استفاده کنید.
نشانیهای تونل باید از شبکهای باشند که هیچ بازهٔ ورودی در هیچکدام از دو نود از آن استفاده نمیکند. نشانی خصوصی فقط وقتی کار میکند که هر دو نود در آن شبکه باشند. ترنسپورت WebSocket از وبسرور اپراتور دیگر میگذرد، که میتواند زمانبندی ترافیک را ببیند.
پیوند یکی از این وضعیتها را دارد: برقرار، در حال اتصال، در دسترس نیست، رد شد، کلید عوض شد یا پایانیافته. کلید عوض شد یعنی گواهی سرور دیگر کلید تازه دارد و پیوند باید دوباره جفت شود. وقتی ترنسپورت tls این سرور کلید تازه میگیرد، سرورها و پیوندهایی که کلید قدیمی را پین کردهاند کلید گواهی روی درگاه N عوض شد را نشان میدهند، و پیوند میگوید سرور دیگر شاید هنوز کلید قدیمی را پین کرده باشد. کنار گذاشتن جفت جفتی را که هنوز منتظر است برمیدارد.
مدیریت روی هر پیوند آن را بعد از جفتسازی عوض میکند. پیوند روشن آن را بدون از دست دادن کلیدهایش خاموش میکند: تا دوباره روشنش نکنید نه تماس میگیرد نه جواب میدهد. روی نودی که خروجی است اینها را هم تعیین میکنید:
- ترافیک پیوند وقتی هیچ قاعدهای خروجی نام نمیبرد از کجا بیرون برود
- از کدام خروجیها بتواند استفاده کند
- قواعد از راه آن به شبکههای خصوصی برسند یا نه
- چند اتصال همزمان بتواند داشته باشد
- سهمیه و دورهٔ آن
- اجازه بده این پیوند از پیوند دیگری ادامه پیدا کند: بهطور پیشفرض خاموش. وقتی روشن باشد، خروجیهای بالا میتوانند خروجیهایی باشند که به پیوندهای دیگر میروند، و سرور بعدی نشانی پیوند این سرور را میبیند. حداکثر 3 پیوند پشتسرهم، و هرگز از بالادست ارائهدهندهٔ دیگر. انتخابگر خروجیها چنین خروجیهایی را فقط وقتی کلید روشن است میدهد، و پیوند به پیوندهای دیگر داده شد را نشان میدهد، یعنی بستههایی که این سرور از آن به پیوند دیگری فرستاده است. زنجیرهکردن را ببینید.
روی هر دو طرف میتوانید تاریخ انقضا و MTU را تعیین کنید. حذف با نام نود دیگر تأیید میخواهد و بعد بازبینی میشود. نود دیگر نیمهٔ خودش را نگه میدارد تا اپراتورش آنجا بردارد، و پیوند دوباره به جفتسازی تازه نیاز دارد.
چند سرور
Section titled “چند سرور”یک پنل میتواند بیش از یک سرور را اداره کند. نود از راه دور از طریق یک پیوند نود تحت مدیریت به این سرور وصل میشود و پنل API کنترلش را از همان پیوند میرساند. برای راهاندازی یکی، افزودن سرور دوم را دنبال کنید. صفحهٔ سرورها هر سرور را با وضعیت، آخرین تماس، کاربران، میزان استخر و ترافیک نشان میدهد. افزودن سرور جفتسازی را در یکی از دو جهت شروع میکند.
| فیلد | کاری که میکند |
|---|---|
| نام | نامی که در پنل نشان داده میشود، و در نام پروفایلهای کاربر وقتی بیش از یک سرور دارد. |
| جایگاه | عدد کوچکتر، زودتر فهرست میشود. |
| بازهٔ نشانی | بازهٔ IPv4 دستگاههای این سرور. فقط وقتی هیچ دستگاهی در آن نشانی ندارد عوضش کنید. |
| مصرف این سرور شمرده شود | خاموش، ترافیک این سرور را از جمع کل کاربر بیرون میگذارد. |
| سریعترین رشد مصرف | بیشترین رشد مصرف یک سرور در ثانیه. پیشفرض ۱٫۲۵ گیگابایت بر ثانیه است. جهش بزرگتر کم میشود و ثبت میشود. |
در صفحهٔ کاربر، سرورهایی که این کاربر میتواند استفاده کند همهٔ سرورها است یا فقط این سرورها با سرورهایی که انتخاب میکنید. مصرف برای هر سرور جدا نشان داده میشود.
حذف سرور از نود میخواهد خودش را خالی کند و پیوند را بردارد، و رمز و کد شما را دوباره میپرسد. وقتی سرور تصرف شده یا از بین رفته، گزینهٔ سرور از دست رفته است را بزنید. پنل پیوند را بدون پرسیدن از نود برمیدارد.
تونلها
Section titled “تونلها”تونل یک پورت TCP یا UDP این نود را از راه یک پیوند نود به یک نشانی در نود آنسو میفرستد، مثلاً سروری در خانه که پورت باز ندارد. کسی وارد نمیشود: هر که به پورت برسد به مقصد میرسد. کارت تونلها در صفحهٔ پیوندها زیر پیوندها فهرستشان میکند. تونل اول به یک پیوند و یک خروجی که از آن میگذرد نیاز دارد، چون فقط همین خروجیها در فیلد خروج میآیند.
دو پیشتنظیم زیر راهاندازی گامبهگام تونل را با پروتکل از پیش تعیینشده شروع میکنند:
- فرستادن یک پورت به سرور خانه یک تونل TCP میسازد، برای وب، SSH، پایگاه داده و بیشتر سرویسها.
- فرستادن یک پورت UDP به سرور خانه یک تونل UDP میسازد، برای بازی، تماس صوتی و DNS.
برای افزودن تونل بدون پیشتنظیم، روی کارت افزودن تونل را بزنید. فرم این فیلدها را دارد:
- نام: ۱ تا ۶۴ حرف کوچک انگلیسی، رقم، خط تیره یا زیرخط. در شمارندهها نشان داده میشود.
- خروج: خروجیای که از پیوند میگذرد.
- پروتکل: TCP یا UDP. پیشتنظیمها آن را تعیین میکنند.
- گوش دادن روی: نشانی و پورتی از این نود که مردم به آن وصل میشوند، مثل
203.0.113.5:8443. نشانی IPv6 داخل کروشه نوشته میشود. - مقصد: نشانی و پورتی که نود آنسو به آن وصل میشود، مثل
192.168.1.10:8080. - مبدأهای مجاز: در هر خط یک نشانی یا شبکه، مثل
203.0.113.0/24. فقط اینها میتوانند وصل شوند. خالی یعنی هر که به پورت برسد. - بیشترین همزمان: اتصال همزمان، یا نشست برای UDP. خالی یعنی ۲۵۶. هر مبدأ حداکثر ۱۶ تا نگه میدارد.
- تونل روشن: خاموش آن را در فهرست نگه میدارد، اما پورت را باز نمیکند.
چند قاعده اعمال میشود:
- تونل UDP روی نشانی غیر loopback به مبدأهای مجاز نیاز دارد و پنل بدون آنها ذخیره نمیکند. نشانی مبدأ جعلشدنی است، پس مبدأها تعیین میکنند چه کسی جواب میگیرد، و مقصد باید مشتریان خودش را بسنجد.
- تونل TCP روی نشانی غیر loopback بدون مبدأهای مجاز هشدار نشان میدهد، چون هر که به پورت برسد میتواند وصل شود.
- مقصدی در شبکهٔ خصوصی، مثل
192.168.1.10، فقط وقتی میرسد که مدیر نود آنسو اجازه دسترسی قوانین به شبکههای خصوصی را برای آن پیوند زیر مدیریت روشن کند. بدون آن نود آنسو اتصال را رد میکند و این نود نمیتواند عوضش کند. - هر تغییر بازبینی میشود. هر نود حداکثر ۶۴ تونل دارد و همهٔ تونلها با هم حداکثر ۱۶٬۳۸۴ اتصال.
هر کارت هر ۱۰ ثانیه تازه میشود و وضعیت و شمارندههایش را نشان میدهد. وضعیت در حال گوش دادن است وقتی پورت باز است، اجرا نمیشود وقتی نیست، و خاموش وقتی تونل خاموش است.
- خروج خروجیای است که تونل از آن میگذرد. باز، هماکنون تعداد اتصال یا نشست باز است، از سقفش.
- باز شده اتصالها یا نشستهایی را میشمارد که از شروع نود ساخته شدهاند.
- ردشده ردها را میشمارد و دلیل هرکدام را میگوید: مبدأ در فهرست نبود، سقف پر بود، از یک مبدأ زیاد بود، از یک مبدأ بیش از حد تند بود، پیوند قطع بود، یا پورت آزاد نبود.
- فرستاده به مقصد و برگشتی بایتهای هر جهتاند.
طرز کار تونل و محدودیتهایش در بخش تونلها در پیوند نودها آمده است.
اطلاعیهها
Section titled “اطلاعیهها”داشبورد دو فهرست اطلاعیه دارد. شبیه هماند ولی جور دیگری به کاربران میرسند.
اطلاعیهها برای کاربران تا چهار اطلاعیهٔ کوتاه نگه میدارد، هرکدام اطلاع یا هشدار. برنامههای وصل در چند ثانیه آنها را به همان زبانی که نوشتهاید نشان میدهند. برنامههایی که نمیتوانند وصل شوند هرگز آنها را نمیبینند، چون روی کانال کنترل میروند. متن یک خط تا ۲۸۰ بایت است (هر حرف فارسی دو بایت). ویرایشگر هنگام نوشتن بایتها را میشمارد و اطلاعیه را همانطور که برنامهها نشان میدهند نمایش میدهد. تغییرها مثل بقیهٔ پیکربندی نود بازبینی میشوند.
اطلاعیهها در اشتراک (از v0.2.18) تا چهار اطلاعیه نگه میدارد که در هر سند اشتراک امضاشده میروند. برنامهها آنها را از آخرین بهروزرسانی نگه میدارند و حتی وقتی نمیتوانند وصل شوند نشان میدهند، پس راه رسیدن به کاربرانی است که اتصالشان مسدود است. با افزودن اطلاعیه یکی اضافه کنید، نوع و متنش را بدهید و ذخیرهٔ اطلاعیهها را بزنید.
- زبانهای دیگر زیر هر اطلاعیه تا ۸ ترجمه اضافه میکند، هرکدام با برچسب زبان مثل
fa،de،pt-BRیاzh-Hansو متنش. برنامه متن زبان خودش را نشان میدهد و برای بقیه متن اصلی را. فهرست زیر اطلاعیه به زبانهای برچسبهایش را مینویسد. - متن قاعدههای اطلاعیه برای کاربران را دارد: یک خط ۱ تا ۲۸۰ بایت، بدون نویسهٔ نامرئی. پنل متنی را که قاعدههای نمایش خود برنامهها عوض کنند رد میکند، تا برنامهها همان چیزی را نشان دهند که نوشتهاید.
- چیزی برای انتشار نیست. اطلاعیهها تنظیم پنلاند و هر بهروزرسانی با آنچه ذخیره شده امضا میشود. برنامهها تغییر را در بهروزرسانی بعدی میگیرند. کاربرانی که فقط به آینهٔ ایستا میرسند آن را در دور بعدی آینه میبینند، آینههای ایستا را ببینید. بازبینی نود ندارد.
- متنی که در هر دو فهرست باشد یک بار نشان داده میشود. برنامهٔ وصل که اطلاعیهای از اشتراکش با همان متنِ یکی از تونل دارد، آن را یک بار نشان میدهد.
DNS و گزارشها
Section titled “DNS و گزارشها”صفحهٔ DNS و گزارشها سه بخش دارد که هرکدام جدا بازبینی و اعمال میشود.
- DNS: سرورهایی که نود برای همهٔ تونلها از آنها میپرسد، یک تا چهار تا، به ترتیب. پاسخ به همه پرسشهای DNS به DNSای که برنامه روی درگاه ۵۳ به هر سروری بفرستد در خود نود جواب میدهد، تا از این سرورها دور نزند. سرورهای DNS برای برخی کاربران کاربران، گروهها یا ورودیهایی را که یک مجموعه نام میبرد به سرورهای خودش میفرستد. مجموعهای که کاربر را نام ببرد بر مجموعهٔ گروهش مقدم است و آن بر مجموعهٔ ورودی. مجموعهها به روشن بودن پاسخ به همه پرسشهای DNS نیاز دارند.
- گزارش نود: نود چقدر در گزارشش بنویسد. ثبت مقصد کاربران میگذارد خطهای گزارش نام سایتها و نامهای DNS را که کاربران میروند بیاورند. آنوقت هر که گزارشهای سرور را بخواند میفهمد هر کاربر کجا رفته، پس فقط هنگام پیدا کردن مشکل روشنش کنید.
- محافظت در برابر تکرار: ترنسپورتهای مبهمسازیشده چند اثبات پذیرفته را به خاطر بسپارند و هر مبدأ چند اثبات بیاورد. تعداد بهخاطرسپرده بعد از راهاندازی دوبارهٔ نود اعمال میشود. محدودیتهای هر مبدأ بیدرنگ عوض میشوند.
ترافیک
Section titled “ترافیک”صفحهٔ ترافیک سرعت لحظهای، تعداد کاربران آنلاین، و آنچه هر کاربر، ورودی، خروجی و اتصال بیرونی برده را نشان میدهد. بازهای انتخاب کنید: روز، هفته، ماه یا سال. برای نمودار سرعت میانگین یک نام، آن را در جدول انتخاب کنید.
پنل هر ۱۰ ثانیه نود را بررسی میکند. اگر نود جواب ندهد، صفحه آخرین دادهای را که فرستاده نشان میدهد و تاریخچهٔ مصرف تا جواب دادن دوبارهٔ نود فاصله دارد. هر خروجی و اتصال بیرونی هم نشان میدهد رابط یا پیوندش بالاست یا نه، و UDP حمل میکند یا نه.
توکنهای API
Section titled “توکنهای API”توکنها به نرمافزارهای دیگر اجازه میدهند API مدیریتی را صدا بزنند. هر توکن یک محدوده دارد:
| محدوده | کاری که میتواند انجام دهد |
|---|---|
| فقط خواندن | کاربران، مصرف و تنظیمات را میخواند. چیزی را عوض نمیکند. |
| کاربران | کاربران، دستگاهها و لینکها را مدیریت میکند. |
| کامل | هر کاری که توکن API مجاز است. |
میتوانید انقضا و فهرستی از نشانیهای مبدأ مجاز تعیین کنید، هر نشانی یا شبکه در یک خط. فهرست خالی یعنی هر نشانی. پنل توکن را یک بار نشان میدهد و فقط هشی از آن نگه میدارد. آن را بهصورت توکن Bearer بفرستید.
لغو توکن را فوراً از کار میاندازد. برگشتپذیر نیست. توکن هرگز به ورود مدیر، کلیدهای امضا، توکنهای دیگر، یا مسیرهایی که نشست کامل مدیر میخواهند نمیرسد.
صفحه حساب شش زبانه دارد.
- نشستها مرورگرهایی را که به حساب شما وارد شدهاند فهرست میکند. هر نشستی را میتوانید پایان دهید. این مرورگر علامت دارد.
- گذرواژه و کد گذرواژهتان را عوض میکند، یا برای برنامهٔ احراز هویت کلید تازه میسازد. عوض کردن گذرواژه همهٔ نشستهای دیگر را پایان میدهد. کلید تازه کلید قبلی را از کار میاندازد و همهٔ نشستهای دیگر را هم پایان میدهد.
- مدیران همهٔ کسانی را که میتوانند وارد شوند فهرست میکند. افزودن مدیر یک نام (۳ تا ۳۲ نویسه از حروف کوچک لاتین، رقم، نقطه، خط تیره و زیرخط) و گذرواژهٔ ۱۲ تا ۲۵۶ نویسهای میگیرد و بعد کلید برنامهٔ احراز هویت مدیر تازه را یک بار نشان میدهد. هر دو را حضوری یا از راهی که به آن اعتماد دارید تحویل بدهید. بازنشانی به مدیر گذرواژه و کلید احراز هویت تازه میدهد (کلید یک بار نشان داده میشود) و نشستهایش را پایان میدهد. حذف نشستها و توکنهای API او را پایان میدهد و خطهایش در گزارش رویدادها میمانند. نمیتوانید خودتان یا آخرین مدیر را حذف کنید. هرکدام دوباره گذرواژه و کد شما را میخواهد و هیچ توکن APIای نمیتواند آنها را انجام دهد.
- گزارش رویدادها ورودها و هر تغییری را که در پنل یا با یک توکن انجام شده ثبت میکند. این گزارش هرگز لینک، توکن یا کلید ندارد.
- پشتیبانگیری و بازیابی زیر «پشتیبان و رازها» توضیح داده شده است.
- نمایش ظاهر (سیستم، تیره یا روشن)، زبان و جهت صفحه را تعیین میکند: خودکار (پیرو زبان)، چپ به راست یا راست به چپ، که در همین مرورگر میماند. در فارسی، فیلدهای تاریخ از تقویم هجری شمسی استفاده میکنند، مثل
1405/02/15.
API مدیریتی
Section titled “API مدیریتی”API مدیریتی زیر {prefix}/api است. توضیحش در {prefix}/api/openapi.json است و همیشه با کد در حال اجرا یکی است، چون یک جدول مسیر هم روتر و هم آن فایل را میسازد.
مرورگر از نشست خودش استفاده میکند و با هر تغییر توکن CSRF میفرستد. اسکریپت توکن API را در سرآیند Bearer میفرستد:
curl -H "Authorization: Bearer <token>" https://panel.example.com/3f9c0a7e21b84d65/api/usersهر عملیات در فایل در فیلد x-access میگوید چه میخواهد:
read،usersوfullهمان محدودههای توکن بالا هستند.sessionوsession-reauthمدیر واردشده میخواهند. توکن هرگز به آنها نمیرسد.publicچیزی نمیخواهد.
پشتیبان و رازها
Section titled “پشتیبان و رازها”پنل پنج فایل را جدا نگه میدارد، و هرکدام فقط برای مالکش خواندنی است:
- پایگاهداده کلیدی ندارد.
panel.keysکلیدهای رازهای مهرومومشده را دارد.signing.keysکلیدهای امضای اشتراک را دارد.gateway.keysکلیدهای دروازه را دارد. پشتیبان پنل این فایل را دارد.gateway.nextکلید دروازهٔ بعدی را دارد، تا وقتی آن را از سرور بیرون ببرید.
panel.keys را هم مثل پایگاهداده پشتیبان بگیرید. بدون panel.keys نقطهٔ پایانی اشتراک مثل مسیر ناشناخته جواب میدهد و هیچ رازی باز نمیشود. پشتیبان اسکریپت نصب کل پوشهٔ دادههای پنل را دارد، پس این فایلها را دارد، و gateway.next را هم تا وقتی آن فایل هنوز روی سرور است. آرشیو را خصوصی نگه دارید. پشتیبان خود پنل هرگز gateway.next را ندارد، کلیدهای دروازه را ببینید.
گذرواژهها با Argon2id هش میشوند. ورود مدیر علاوه بر گذرواژه کد هم میخواهد.
پشتیبانگیری و بازیابی از خود پنل
Section titled “پشتیبانگیری و بازیابی از خود پنل”در حساب، پشتیبانگیری و بازیابی یک فایل .vwbackup میسازد با نسخهٔ یکدست پایگاهداده، panel.keys، signing.keys و gateway.keys. نیمهٔ خصوصی کلید دروازهٔ بعدی در آن نیست. عبارت رمزی دستکم ۱۲ نویسهای انتخاب میکنید و فایل با آن رمزگذاری میشود (Argon2id و ChaCha20-Poly1305). هر دو کار میخواهند گذرواژه و کد را دوباره تأیید کنید و در گزارش رویدادها ثبت میشوند. هیچ توکن APIای نمیتواند از آنها استفاده کند.
فایل همهٔ رازهای کاربران و کلیدهای پنل را دارد، پس خصوصی نگهش دارید. عبارت رمز گمشده بازیافتنی نیست و فایل بدون آن بیفایده است.
برای بازیابی، فایل را انتخاب کنید و عبارت رمزش را بنویسید. بعد پنل:
۱. پیش از هر تغییر فایل را بررسی میکند
۲. پایگاهداده و کلیدهای فعلی را در پوشهٔ pre-restore-<time> کنار پایگاهداده ذخیره میکند
۳. فایلها را جایگزین میکند
۴. دوباره راه میافتد
پنل با کد خروج ناموفق متوقف میشود تا مدیر سرویس (اسکریپت نصب Restart=on-failure میگذارد) آن را روی فایلهای بازیابیشده دوباره راه بیندازد. همهٔ نشستها بسته و همهٔ توکنهای API باطل میشوند، پس با یکی از مدیران پشتیبان دوباره وارد شوید. پشتیبان پنل جدیدتر پذیرفته نمیشود. اگر کلیدهای دروازه روی سرور همان کلیدهای پشتیبان نباشند، پنل کلیدهای پشتیبان را بازمیگرداند و پیش از ادامه میگوید: لینکهایی که زیر کلیدی ساخته شدهاند که پشتیبان ندارد دیگر باز نمیشوند. فایلی که جایش را میگیرد در پوشهٔ pre-restore-<time> است.
بهروزرسانی پنل
Section titled “بهروزرسانی پنل”پنل هنگام شروع و هر ۶ ساعت از GitHub میپرسد نسخهٔ منتشرشدهٔ تازهای (نه پیشنویس و نه پیشانتشار) از پنل و از نود هست یا نه. برای خاموش کردنش در panel.json مقدار update_check را false بگذارید. نسخهٔ نود را با نسخهای میسنجد که نود همان سرور گزارش میدهد. اگر هرکدام تازهتر باشد، بنری نسخهها را با پیوند یادداشتهای انتشارشان نشان میدهد، با بهروزرسانی پنل، بهروزرسانی نود یا بهروزرسانی هر دو، هرکدام که لازم باشد. هر دکمه تأیید دوباره گذرواژه میخواهد، در گزارش رویدادها ثبت میشود و هیچ توکن APIای نمیتواند از آن استفاده کند. بهروزرسانی نود آن را دوباره راه میاندازد و همهٔ تونلهای باز لحظهای قطع میشوند، و پنل پیش از پرسیدن این را میگوید.
پنل خودش را بهروز نمیکند. کلمهٔ panel، node یا both را در فایلی در /var/lib/veilway-panel-update/ مینویسد. سرویس rootای که path unit در systemd راه میاندازد فایل را پاک میکند و فرمان panel-update-request اسکریپت را اجرا میکند، که همان veilway.sh update <word> --yes را میکند و پیش از نصب امضای انتشار را بررسی میکند. از محتوای فایل جز همین کلمه چیزی استفاده نمیشود. نصبکنندهٔ سرورهای نصبشده پیش از v0.2.2 فقط panel را میشناسد. یک بار روی آنها curl -fsSL https://raw.githubusercontent.com/veilway-project/veilway/main/scripts/veilway.sh | sudo bash -s update را اجرا کنید.
بررسی بهروزرسانی، کنار راهاندازی دوبارهٔ نود و راهاندازی دوبارهٔ پنل در پیوندها، همین الان از GitHub میپرسد و منتظر بررسی بعدی نمیماند، حداکثر دقیقهای یک بار. اعلان بهروزرسانی را تازه میکند و میگوید چیزی تازهتر هست یا نه. مسیر API آن POST /update/check است.
راهاندازی دوبارهٔ نود و راهاندازی دوبارهٔ پنل، روی کارت همین نود در پیوندها، همینطور کار میکنند: پنل restart-node یا restart-panel را مینویسد و اسکریپت veilway.sh restart را اجرا میکند. دوباره گذرواژه میخواهند و در گزارش رویدادها ثبت میشوند. راهاندازی دوبارهٔ نود همهٔ دستگاههای وصل را لحظهای قطع میکند. تغییر پیکربندی هرگز به آن نیاز ندارد، چون نود آن را همان لحظه اعمال میکند. اسکریپت v0.2.9 یا جدیدتر راهاندازی دوباره را انجام میدهد. اسکریپت قدیمیتر درخواست را نادیده میگیرد و بهروزرسانی بعدیاش اسکریپتی میگذارد که انجامش میدهد.