Skip to content

یک پورت برای چند اینباند ​

اینگرس (ingress) اینباندی است که صاحب یک پورت است، معمولاً ۴۴۳، و هر اتصال را بر اساس نامی که کلاینت خواسته، ALPN آن، یا مسیرش به اینباند دیگری می‌سپارد. با آن VLESS با REALITY، Trojan روی WebSocket و بقیه می‌توانند پورت ۴۴۳ را روی یک نود شریک شوند، و هر کدام کاربرها، آمار و محدودیت‌های خودش را نگه می‌دارد.

به چه کاری می‌آید ​

  • فقط یک پورت باز، معمولاً ۴۴۳، و چند اینباند که می‌خواهید روی آن ارائه کنید.
  • نام‌های مختلف روی یک آدرس: a.example.com به یک اینباند و b.example.com به اینباندی دیگر.
  • جواب دادن مثل یک وب‌سرور معمولی به هر چیزی که یکی از کاربرهای شما نیست.

اینگرس کاربر خودش را ندارد و هیچ‌وقت در اشتراک ظاهر نمی‌شود. فرزندانش ظاهر می‌شوند، با پورت اینگرس.

ساختن آن ​

  1. اول اینباندهایی را که پشتش قرار می‌گیرند بسازید (فرزندان). ببینید اینباندها.
  2. اینباندها ← افزودن، نوع ingress. Port با ۴۴۳ شروع می‌شود.
  3. حالت را روی زبانه‌ی TLS تعیین کنید (پایین‌تر).
  4. روی زبانه‌ی Protocol، برای هر فرزند با افزودن قانون یک قانون اضافه کنید، سپس یک پیش‌فرض.
  5. ذخیره کنید و اینگرس و فرزندانش را روی یک قالب بگذارید.

قانون‌ها ​

قانون‌ها از بالا به پایین بررسی می‌شوند و اولین تطابق برنده است، پس دقیق‌ترین را اول بگذارید (انتقال به بالا، انتقال به پایین).

فیلدبا چه تطبیق می‌دهد
نام سرور (SNI)نامی که کلاینت خواسته. دقیق، یا وقتی با نقطه شروع شود یک پسوند (.example.com). خالی با هر نامی تطبیق می‌خورد
ALPNپروتکل کاربردی‌ای که مذاکره شده، مثل h2 یا http/1.1
مسیر (path)مسیری که یک فرزند WebSocket یا HTTPUpgrade می‌خواهد، تا چند فرزند بتوانند یک نام را شریک شوند. / در انتها با یک پیشوند تطبیق می‌خورد. فقط در حالت terminate
ارسال بهیک اینباند فرزند، یا آدرس بیرونی… با یک آدرس و پورت

شرط‌های یک قانون همه باید تطبیق بخورند؛ چند مقدار در یک شرط جایگزین هم‌اند. برای آدرس بیرونی، پروتکل PROXY آدرس واقعی کلاینت را به سروری می‌دهد که آن را می‌خواند، مثل nginx. اینباند فرزند چنین چیزی لازم ندارد: همیشه آدرس واقعی کلاینت را می‌بیند.

پیش‌فرض هر اتصالی را که با هیچ قانونی تطبیق نخورده می‌گیرد. همیشه یکی تنظیم کنید؛ گزینه‌ها به حالت بستگی دارند.

دو حالت: کدام طرف TLS را انجام می‌دهد ​

دقیقاً یک طرف می‌تواند TLS را انجام دهد: اینگرس یا فرزندانش.

حالت peek: TLS روی اینگرس خاموش ​

اینگرس فقط اولین پیام handshake TLS را می‌خواند که نام سرور و ALPN را دارد، و کل اتصال را عبور می‌دهد. هر فرزند TLS خودش را انجام می‌دهد: گواهی خودش، یا REALITY.

  • هر فرزند باید TLS یا REALITY داشته باشد، وگرنه چیزی برای مسیریابی نیست.
  • قانون‌های مسیر (path) در دسترس نیستند: همه‌چیز بعد از handshake رمزشده است.
  • پیش‌فرض می‌تواند یک آدرس بیرونی… باشد که یک وب‌سرور واقعی رویش اجرا می‌شود و با گواهی خودش جواب می‌دهد.

این حالت برای بردن اینباندهای REALITY پشت یک اینگرس است.

حالت terminate: TLS روی اینگرس ​

اینگرس خودش handshake TLS را کامل می‌کند، با گواهی روی زبانه‌ی TLS خودش، و به هر فرزند یک جریان ساده می‌سپارد. فرزندان TLS ندارند.

  • قانون‌های مسیر (path) در دسترس قرار می‌گیرند، برای فرزندانی که HTTP/1.1 حرف می‌زنند (WebSocket، HTTPUpgrade). gRPC و هر چیزی روی HTTP/2 مسیرش را به شکل فشرده حمل می‌کند؛ آن‌ها را به‌جایش با ALPN از هم جدا کنید.
  • قانون ALPN فقط با پروتکلی تطبیق می‌خورد که اینگرس ارائه می‌دهد. آن را به فهرست ALPN اینگرس روی زبانه‌ی TLS آن اضافه کنید، وگرنه پنل ذخیره را رد می‌کند.
  • پیش‌فرض، یا هر قانونی، می‌تواند یک پاسخ وب شبیه‌سازی‌شده… باشد که مثل یک وب‌سرور معمولی جواب می‌دهد: یک صفحهٔ ثابت، یک سایت واقعی (پراکسی) یا یک پوشهٔ فایل (یک مسیر مطلق روی نود). سایت واقعی باورپذیرترینِ این سه است.
  • لینک‌های کاربرها تنظیمات TLS خود را از اینگرس می‌گیرند، چون تنظیمات خود فرزند هیچ‌وقت به کلاینت نمی‌رسد.

پاسخ شبیه‌سازی‌شده‌ای که نمی‌شود راهش انداخت (پوشه‌ای که وجود ندارد، آدرسی نادرست) فقط قانون خودش را از کار می‌اندازد؛ بقیه‌ی فرزندان به کار ادامه می‌دهند.

فرزندان ​

این نوع‌های اینباند می‌توانند پشت یک اینگرس بنشینند: VLESS، VMess، Trojan، AnyTLS، Snell، Shadowsocks، ShadowTLS، Sudoku، SSH، SOCKS، HTTP، mixed و direct. پروتکل‌های UDP (Hysteria2، TUIC و بقیه)، NaiveProxy، Mieru، MTProxy، TrustTunnel و یک اینگرس دیگر نمی‌توانند، و پنل قانونی را که یکی از این‌ها را نام ببرد رد می‌کند.

یک فرزند به دو شکل می‌تواند وجود داشته باشد:

فرزنداز کجا در دسترس استدر اشتراک‌ها
با پورت خودشمستقیم، و از راه اینگرسدو ورودی: ورودی خودش، و یکی با نام <child>-<ingress>
بدون پورتفقط از راه اینگرسیک ورودی، از راه اینگرس

ورودی‌ای که از راه اینگرس است پورت اینگرس و نام سرور قانون را حمل می‌کند. اینباندی که نه پورت دارد و نه اینگرسی به آن مسیر می‌دهد، در فهرست اینباندها با غیرقابل‌دسترس علامت می‌خورد و تا وقتی پورت یا قانونی به آن ندهید از اشتراک‌ها کنار گذاشته می‌شود.

وقتی TLS یک جفت با حالت جور نیست (هر دو طرف TLS دارند، یا هیچ‌کدام)، یا قانونی اینباندی را نام می‌برد که وجود ندارد، پنل هشدار می‌دهد ولی باز هم ذخیره می‌کند. اینگرس اغلب پیش از فرزندانش نوشته می‌شود، پس این‌ها را در حین کار درست کنید.

قالب‌ها و نودها ​

یک قالب می‌تواند فقط بعضی از فرزندان یک اینگرس را داشته باشد: یک قالب VLESS و Trojan را روی ۴۴۳ ارائه می‌دهد و قالبی دیگر فقط VLESS را. روی هر نود، قانونی که فرزندش آنجا نیست کنار گذاشته می‌شود، و اینگرسی که هیچ قانونی برایش نمانده کنار گذاشته می‌شود.

پشت CDN ​

خود اینگرس را نمی‌شود پشت فرانت برد، ولی فرزندی که با CDN جور است را می‌شود. CDN اتصال خودش را به نود شما باز می‌کند و نام میزبان فرانت را حمل می‌کند، نه نام فرزند را. پس قانون باید نام میزبان فرانت (یا پسوندی مثل .cdn.example.com) را فهرست کند. وگرنه اتصال به پیش‌فرض می‌رود و کاربر هیچ‌وقت نمی‌رسد. پنل روی فرانت درباره‌ی این هشدار می‌دهد. ببینید دامین فرانتینگ.

پیشرفته ​

ClientHello timeout (پیشرفته، روی زبانه‌ی Protocol) مدتی است که اینگرس پیش از کنار کشیدن، منتظر اولین پیام handshake کلاینت می‌ماند.

متن و تصویرها با مجوز CC BY 4.0.