سرور خود را پشت یک پروکسی معکوس قرار دهید
شبکهای که آدرس IP سرور شما را مسدود میکند، نمیتواند مانع اپلیکیشنهایی شود که به آن وصل نمیشوند. در پشت یک پروکسی معکوس مانند Cloudflare، اپلیکیشنها به پروکسی متصل میشوند و پروکسی این ارتباط را به سرور شما هدایت میکند.
نحوه کارکرد
دامنه شما به جای سرور، به پروکسی هدایت میشود. اپلیکیشنها دامنه را بررسی کرده و به پروکسی وصل میشوند؛ پروکسی نیز درست مانند هر وبسایتی که میزبانی میکند، رمزنگاری را باز کرده و سپس آن را مجدداً به سمت سرور شما رمزنگاری میکند. ترافیک آنها از طریق WebSocket منتقل میشود که Cloudflare آن را عبور میدهد. سایر پروکسیهای معکوس نیز در صورتی که WebSocket را هدایت کرده و با TLS به سرور شما وصل شوند، قابل استفاده هستند.
اپلیکیشنها فقط در صورتی دامنه را جستجو میکنند که کلید آنها دامنه را بهعنوان یک نام معتبر ثبت کرده باشد؛ این کار نیازمند گواهی از یک مرجع صدور گواهی (CA) است.
یک کلید میتواند آدرس مستقیم سرور شما را نیز داشته باشد. در این حالت اپلیکیشنها از هر دو مسیر متصل میشوند: در صورت مسدود بودن آدرس، پروکسی ارتباط را برقرار نگه میدارد، اما هر دارنده کلید میتواند آدرس را ببیند. کلیدی که بدون آدرس سرور باشد، همه اپلیکیشنها را مستقیماً از پروکسی هدایت میکند.
نکات مهمی که باید بدانید
- مسدودسازی: شبکه همچنان میتواند آدرسهای Reverse Proxy یا دامنه شما را مسدود کند. البته آدرسهای Cloudflare میزبان وبسایتهای بسیار دیگری نیز هستند؛ بنابراین مسدود کردن آنها هزینه بالایی دارد.
- DNS: اپلیکیشنها پیش از اتصال، دامنه شما را از طریق DNS شبکه جستجو میکنند. اگر شبکه این پاسخ را مسدود یا دستکاری کند، اپلیکیشنها از آدرسهای موجود در کلید استفاده میکنند؛ بنابراین کلیدی که فقط حاوی دامنه باشد متصل نخواهد شد.
- حریم خصوصی: Reverse Proxy درست مانند سرور شما، محتوای درون تونل را میبیند: مقصدی که کاربران به آن متصل میشوند و هر داده رمزگذارینشدهای که ارسال میکنند. ترافیک HTTPS آنها همچنان رمزگذاریشده باقی میماند. از یک Reverse Proxy قابل اعتماد استفاده کنید.
- فقط TCP: سرور شما پورتهای UDP و QUIC خود را به اپلیکیشنهایی که از طریق پروکسی متصل میشوند ارائه نمیدهد.
- قوانین و شرایط: مطمئن شوید که شرایط ارائهدهنده شما اجازه عبور ترافیک VPN را میدهد. استفاده برای یک گروه کوچک (حدود ۵۰ کاربر یا کمتر) معمولاً مشکلی ایجاد نمیکند.
پیش از شروع
- یک دامنه یا زیردامنه به همراه گواهی معتبر صادرشده از یک مرجع صدور گواهی (CA) روی سرور شما: راهنمای استفاده از نام دامنه و گواهی معتبر نحوه انجام آن را نشان میدهد. این مرحله را ابتدا انجام دهید، زمانی که رکورد دامنه هنوز مستقیماً به سرور اشاره میکند.
- تنها یک سرور پشت دامنه قرار داشته باشد. رکوردهایی که به دو سرور مختلف اشاره میکنند ممکن است اتصالات یک نشست (Session) را بین هر دو سرور تقسیم کرده و اتصال را قطع کنند.
- سرور باید روی پورت TCP به شماره
443یا پورت دیگری که پروکسی آن را عبور میدهد شنود کند. Cloudflare ترافیک HTTPS را تنها روی پورتهای443, 2053, 2083, 2087, 2096, 8443هدایت میکند.
فعالسازی پروکسی
- در Cloudflare، رکوردهای DNS دامنه خود را باز کنید و رکوردی را که به سرور شما اشاره میکند روی حالت Proxied قرار دهید؛ در صورت وجود، رکورد AAAA را نیز به همین شکل تنظیم کنید.
- در بخش SSL/TLS، حالت رمزگذاری را روی Full (strict) بگذارید. در این حالت، Cloudflare از طریق TLS به سرور شما متصل شده و گواهی آن را بررسی میکند. حالت Flexible از HTTP معمولی استفاده میکند که سرور آن را نمیپذیرد.
نرمافزار VpnHood! MANAGER گواهیهای خود را با پروتکل ساده HTTP روی پورت 80 (پروتکل TCP) و از طریق دامنه تمدید میکند و Cloudflare آن را به سرور شما هدایت مینماید. در سرورهای مدیریتشده، گزینه Always Use HTTPS را غیرفعال بگذارید؛ در غیر این صورت درخواست به HTTPS هدایت شده و تمدید گواهی با خطا مواجه میشود.
روی سرور مدیریتشده
گواهی فارم را برای دامنه بررسی کنید: در بخش Signature باید مقدار CA Signed و در بخش Visibility مقدار PublicInToken ثبت شده باشد. در این صورت کلیدها حاوی نام دامنه خواهند بود و اپلیکیشنها آن را جستجو میکنند.
برای عبور تمام اتصالات اپلیکیشنها از پروکسی، آدرسهای مستقیم سرور را از طریق بخش Access Points سرور از کلیدها خارج کنید:
- گزینه Automatic Configuration را خاموش کنید.
- هر آدرس را ویرایش کرده و گزینه Mode آن را روی Private تنظیم کنید.
- گزینه Listen را روی Yes باقی بگذارید تا سرور همچنان شنود کند و پروکسی بتواند به آن متصل شود.
تنها در صورتی MANAGER اجازه میدهد کلیدها بدون آدرس باشند که گواهی CA Signed باشد. بخش تنظیم آدرسهای IP سرور هر تنظیم را توضیح میدهد.
در صورت انتخاب PublicInToken، آدرسها در کلیدها باقی میمانند و اپلیکیشنها هم از آنها و هم از پروکسی استفاده میکنند؛ در نتیجه، حتی با مسدود شدن یک آدرس، پروکسی اتصال کاربران شما را حفظ میکند.
اپلیکیشنهایی که کلید قدیمی دارند، در اتصال بعدی کلید جدید را دریافت میکنند؛ زیرا Push token to clients بهطور پیشفرض فعال است.
دامنه به یک سرور هدایت میشود؛ بنابراین در مجموعهای از چند سرور، تمام اپلیکیشنهایی که از طریق پروکسی متصل میشوند به همان سرور میرسند.
روی سرور مستقل
بررسی کنید که سرور از گواهی دامنه استفاده کند و IsValidHostName روی true تنظیم شده باشد؛ راهنمای استفاده از نام دامنه و گواهی معتبر نحوه انجام آن را نشان میدهد. کلیدهایی که از آن پس ساخته شوند، دامنه را در بر دارند و اپلیکیشنها از آن استفاده میکنند.
سرور مستقل همیشه آدرسهای خود را در کنار دامنه داخل کلیدها قرار میدهد، بنابراین اپلیکیشنها هم از آنها و هم از پروکسی استفاده میکنند. پروکسی در صورت مسدود شدن یک آدرس اتصال کاربران را حفظ میکند، اما هر فردی که کلید را داشته باشد میتواند آدرس را بخواند.