Skip to content

درون یک تونل ​

یک تونل ترافیک را از یک نود، یعنی رله، به نودهای دیگری، یعنی مقصدها، می‌برد که آن را به اینترنت می‌فرستند. این صفحه بخش‌هایی را توضیح می‌دهد که در فرم نمی‌بینید: دو سر تونل چطور به هم اعتماد می‌کنند، چند راه حمل یک تونل چطور یک مخزن می‌شوند، و یک کاربر چطور همان آدرس خروجی را نگه می‌دارد. راه‌اندازی تونل در تونل‌ها آمده است.

درون یک تونل
اپ کاربران
همان لینک‌های قبلی
رله
کاربران اینجا وصل می‌شوند
نود خروجی
exit-de
نود خروجی
exit-nl
اینترنت
پنل
می‌سازد، ذخیره نمی‌کند

روی هر جعبه بزنید تا ببینید آنجا چه اتفاقی می‌افتد.

ترافیک کاربرانپیکربندی و آمار، روی TLS دوطرفه

دو نیمه ​

تونل دو نیمه روی دو نوع نود است، و هر نیمه جداگانه پیکربندی می‌شود:

  • نیمه‌ی رله یک اوتباند روی رله است. هر چیزی که مسیریابی رله به آن بفرستد وارد تونل می‌شود. وقتی رله دقیقاً یک تونل دارد، پنل خودش آن را اوتباند final رله می‌کند، تا همه‌ی ترافیکی که قانون‌های قالب به آن رسیدگی نمی‌کنند به داخل تونل برود.
  • نیمه‌ی مقصد یک راه ورود روی هر نود مقصد است. جریان‌هایی را که رله باز می‌کند می‌پذیرد و به مسیریابی خود مقصد می‌سپارد، که آن‌ها را مثل هر ترافیک دیگری که آنجا برسد جلو می‌فرستد.

اینکه کدام طرف گوش بدهد و کدام طرف وصل شود انتخاب جداگانه‌ای است: حالت. در حالت معکوس (پیش‌فرض) رله گوش می‌دهد و هر نود مقصد به آن وصل می‌شود، پس مقصد پورت بازی لازم ندارد و می‌تواند پشت NAT باشد. در حالت مستقیم رله به هر مقصد وصل می‌شود. در هر دو حالت ترافیک در یک جهت جریان دارد: کاربرها، رله، مقصد، اینترنت.

هیچ‌کدام از دو نیمه به کاربرها، اینباندها یا قانون‌های route نود دست نمی‌زند. تونل پورت و اطلاعات ورود خودش را دارد؛ هیچ حسابی برایش ساخته نمی‌شود و از هیچ اینباندی استفاده نمی‌شود.

اطلاعات ورود مشتق می‌شوند، هرگز ذخیره نمی‌شوند ​

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

به همین دلیل هم نام تونل را بعد از ذخیره نمی‌شود عوض کرد: تگی که هر دو نیمه دارند، اطلاعات ورود و نام گواهی همه از روی آن ساخته می‌شوند.

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

پروفایل‌ها: چند راه روی یک تونل ​

پروفایل یکی از راه‌های حمل تونل است: پورت خودش، امنیت خودش و ترنسپورت خودش. یک تونل می‌تواند تا هشت پروفایل داشته باشد. این‌ها تونل‌های جداگانه نیستند: هر لینک، روی هر پروفایل، با همان هویت مقصد به یک مخزن نشست می‌پیوندد.

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

با دو پروفایل یا بیشتر، توزیع بار تعیین می‌کند مخزن چطور استفاده شود:

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

کاربر به یک مقصد می‌چسبد ​

برای هر اتصال تازه، رله به این ترتیب انتخاب می‌کند:

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

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

چند آدرس: جایگزینی گرم ​

طرفی که وصل می‌شود به همه‌ی آدرس‌های لینک نود شنونده هم‌زمان وصل می‌شود، با یک هویت. همه وصل می‌مانند، پس نسخه‌ی آماده‌به‌کاری نیست که باید بیدار شود: اگر یک آدرس مسدود شود، لینک‌هایی که حمل می‌کرد قطع می‌شوند و بقیه از قبل ترافیک را حمل می‌کنند. آدرسی که نمی‌تواند وصل شود، مثل آدرس CDN‌ای که تونل نمی‌تواند از آن رد شود، در حالت عقب‌نشینی (backoff) می‌ماند در حالی که بقیه کار می‌کنند.

تغییرها زنده به نودها می‌رسند ​

ساختن، ویرایش، غیرفعال کردن یا حذف یک تونل هسته‌ی هیچ‌کدام از دو نود را ری‌استارت نمی‌کند.

  • اعضا زنده تغییر می‌کنند: افزودن یا حذف یک مقصد، چرخاندن اطلاعات ورود، صدور دوباره‌ی گواهی یک طرف. لینک‌هایی که برقرارند برقرار می‌مانند؛ لینک‌های مقصد حذف‌شده قطع می‌شوند و بیرون نگه داشته می‌شود.
  • شکل نیمه‌ی همان تونل را بازسازی می‌کند: پورت‌ها، امنیت، ترنسپورت، توزیع بار یا پنجره‌ها. فقط همان تونل تحت تأثیر قرار می‌گیرد؛ همه‌ی آیتم‌های دیگر روی نود به کار ادامه می‌دهند.
  • اوتباند final رله به‌عنوان بخشی از یک به‌روزرسانی زنده‌ی مسیریابی تغییر می‌کند.

برای اینکه تغییرهای زنده و بازسازی‌ها به‌طور کلی چطور کار می‌کنند، ببینید تغییر بدون ری‌استارت.

ترافیک و حسابداری ​

ترافیک کاربرها جایی شمرده می‌شود که وصل می‌شوند: روی رله، به حساب خودشان، یک بار. روی نود مقصد، ترافیک تونل به حساب کاربرها گذاشته نمی‌شود و آدرس‌های مبدأش در محدودیت آدرس شمرده نمی‌شوند، چون مبدأ آنجا رله است. نمودار مصرف خود تونل محتوایی را نشان می‌دهد که از آن گذشته، خوانده‌شده از رله.

سلامت ​

سلامت یک تونل را نمی‌شود از تنظیماتش خواند، پس پنل از نودها می‌پرسد.

  • سالم یعنی رله لینک دارد: n لینک برقرار.
  • هیچ لینکی وصل نیست یعنی رله جواب می‌دهد ولی هیچ مقصدی به آن وصل نیست.
  • رله در دسترس نیست یعنی پنل نمی‌تواند به رله برسد.

وضعیت زنده از همه‌ی نودهای تونل می‌پرسد: برای هر مقصد، لینک‌ها و جریان‌هایش، و در طرفی که وصل می‌شود، اتصال‌های مورد نیاز، زمان انتظار تا تلاش بعدی و آخرین خطا. طرفی که پی‌درپی شکست می‌خورد فاصله‌ی بین تلاش‌ها را تا یک دقیقه بیشتر می‌کند.

وقتی پیکربندی درست است ولی چیزی جریان ندارد ​

لینک‌هایی که برقرارند ولی چیزی حمل نمی‌کنند، یا طرف وصل‌شونده‌ای که بعد از مسدودیتی که دیگر برداشته شده هنوز منتظر پایان backoff است، دقیقاً همان پیکربندی‌ای هستند که پنل می‌خواهد، پس همگام‌سازی چیزی برای تغییر پیدا نمی‌کند. ریست نیمه‌ی تونل را روی همه‌ی نودها از روی پایگاه داده بازسازی می‌کند: لینک‌ها قطع می‌شوند و طرف وصل‌شونده فوراً از نو شروع می‌کند. ترافیک روی آن تونل تا وصل شدن دوباره متوقف می‌شود.

یک تونل برای هر رله ​

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

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