WireGuard، OpenVPN، REALITY؛ انتخاب درست برای استفاده‌ی واقعی

8 دقیقه مطالعه

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

باتری مهم است.

اگر بین WireGuard، OpenVPN و گزینه‌هایی مثل VLESS+REALITY گیر کرده‌اید، بهتر است انتخاب را از زاویه‌ی «چه شبکه‌ای دارم و چه چیزی می‌خواهم» ببینید، نه از روی محبوبیت توییتری یا اسکرین‌شات‌های سرعت.

پروتکل دقیقا چه چیزی را تعیین می‌کند؟

پروتکل یعنی قرارداد ارتباط: بسته‌ها چطور کپسوله می‌شوند، روی UDP هستند یا TCP، چطور کلیدها ردوبدل می‌شود، و مهم‌تر از همه چطور در برابر دستکاریِ مسیر (NAT، فایروال، DPI) واکنش نشان می‌دهد. روی کاغذ ممکن است دو سرویس هر دو «VPN» باشند، ولی یکی روی اینترنت موبایل نرم و سبک کار کند و دیگری هر بار که بین دکل‌ها جابه‌جا می‌شوید (roaming) قهر کند.

همه‌چیز به شبکه بستگی دارد.

یک نکته‌ی ساده اما تعیین‌کننده: در ایران، مسئله فقط رمزنگاری نیست. مسئله «قابل‌تشخیص‌بودن ترافیک» و «تاب‌آوری در برابر محدودیت» هم هست. بنابراین پروتکلی که برای یک دیتاسنتر اروپایی عالی است، ممکن است روی اینترنت موبایل داخل کشور، زیر فشار packet loss یا محدودیت‌های UDP، از نفس بیفتد.

WireGuard؛ سریع، کم‌حرف، اما گاهی لجباز

WireGuard را دوست دارم چون بی‌حاشیه است. کد کم‌تر، پیچیدگی کم‌تر، و روی خیلی از سناریوها latency عالی می‌دهد. از نظر طراحی هم مدرن است و کلیدها و handshake تمیزتر از نسل‌های قدیمی‌تر جمع‌وجور شده‌اند.

ولی تجربه‌ی روزمره‌اش همیشه «بهترینِ مطلق» نیست. WireGuard به‌طور پیش‌فرض روی UDP کار می‌کند. UDP وقتی مسیر سالم باشد، فوق‌العاده است؛ اما روی شبکه‌هایی که packet loss بالاتر دارند (به‌خصوص بعضی اپراتورها در ساعات شلوغ)، می‌تواند باعث نوسان سرعت شود. از آن طرف، بعضی فایروال‌ها با UDP سر ناسازگاری دارند یا به شکل نامنظم rate limit می‌کنند.

یک دردسر عملی دیگر: MTU. اگر روی موبایل یا اینترنت‌های اشتراکی (مثل بعضی وای‌فای‌های عمومی) WireGuard وصل می‌شود ولی «صفحه‌ها نیمه‌کاره لود می‌شوند»، خیلی وقت‌ها پای fragmentation و MTU وسط است. این بخش آزاردهنده است چون تا وقتی خودتان یک‌بار گیرش نیفتاده باشید، اصلا به چشم نمی‌آید.

از نظر مصرف باتری، WireGuard معمولا خوب رفتار می‌کند، چون رفت‌وبرگشت و سربار اضافی کم دارد. با این حال، روی بعضی گوشی‌ها وقتی دائم بین 4G و 5G یا وای‌فای و دیتای موبایل سوییچ می‌کنید، ممکن است reconnectهای ریز به‌وجود بیاید و همان باعث بیدارماندن رادیو و مصرف بیشتر شود. تفاوتش را وقتی می‌فهمید که یک روز کامل بیرون باشید.

OpenVPN؛ قدیمی، ولی هنوز به‌دردبخور

OpenVPN برای خیلی‌ها یادآور سال‌های قدیمی‌تر VPN است، اما به‌عنوان یک ابزار «سازگار با همه‌چیز» هنوز جای خودش را دارد. برگ برنده‌اش انعطاف است: هم UDP دارد هم TCP، و می‌تواند روی پورت‌های مختلف اجرا شود. وقتی مجبور می‌شوم روی یک شبکه‌ی شرکتی یا هتلی که UDP را بسته، کار کنم، OpenVPN روی TCP (حتی روی پورت 443) هنوز یکی از گزینه‌های قابل‌اتکاست.

البته هزینه هم دارد. TCP-over-TCP در سناریوهای خاص (مثلا وقتی خودِ ترافیک شما هم TCP است) می‌تواند باعث کندی و «لرزش» شود؛ همان حالتی که دانلود یا تماس تصویری انگار موجی می‌شود. CPU هم بیشتر درگیر می‌شود، مخصوصا روی موبایل‌های میان‌رده. اگر زیاد از VPN برای کارهای سنگین استفاده می‌کنید، این تفاوت را روی دمای گوشی و مصرف باتری می‌بینید.

از منظر عبور از محدودیت، OpenVPN اگر بدون لایه‌های کمکی اجرا شود، قابل‌شناسایی‌تر از بعضی روش‌های جدید است. برای همین است که در عمل خیلی‌ها سراغ کانفیگ‌های ترکیبی یا پروتکل‌های مبدل می‌روند. اگر محیط شما حساس است، صرفا «OpenVPN بودن» تضمین نمی‌دهد که همیشه وصل می‌ماند.

VLESS+REALITY؛ وقتی بحث، شناسایی ترافیک است

اینجا وارد قلمرو Xray و دوستانش می‌شویم: VLESS، REALITY، گاهی هم کنارشان Shadowsocks-2022. این‌ها دقیقا «VPN کلاسیک» نیستند، بیشتر ابزارهای تونلینگ‌اند که برای شرایط سخت‌تر طراحی شده‌اند.

REALITY را اگر بخواهم خیلی زمینی توضیح بدهم: تلاش می‌کند ترافیک شما شبیه چیزی شود که در اینترنت عادی زیاد دیده می‌شود، بدون این‌که نیاز باشد حتما یک دامنه و گواهی TLS واقعی روی سرور خودتان ست کنید. این ویژگی در عمل یعنی احتمال این‌که ترافیک‌تان با امضاهای ساده‌ی DPI جدا شود، پایین‌تر می‌آید. اما بهایش چیست؟ تنظیمات حساس‌تر، و وابستگی بیشتر به این‌که کلاینت و سرور درست و هماهنگ کانفیگ شده باشند.

من روی Android معمولا بین NekoBox و Hiddify جابه‌جا می‌شوم. روی iOS هم Shadowrocket برای این سبک کانفیگ‌ها رایج است. V2RayNG هنوز محبوب است، ولی برخی buildها و فورک‌ها در مدیریت پروفایل‌ها و Ruleها تجربه‌ی روان‌تری می‌دهند. برای آدمی که هر روز چند سرور را تست می‌کند، همین جزئیات ریز مهم است.

گاهی VPN قطع می‌شود.

نکته‌ی دیگر: VLESS+REALITY روی بعضی شبکه‌ها خیلی پایدارتر از WireGuard جواب می‌دهد، اما همیشه سریع‌تر نیست. اگر مسیر شلوغ باشد یا سرور ضعیف انتخاب کنید، latency بالا می‌رود. این‌جا انتخاب دیتاسنتر، کیفیت peering و حتی load سرور، اثر بیشتری از اسم پروتکل دارد.

انتخاب عملی: من جای شما چه می‌کردم؟

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

  • برای بازی آنلاین، کار روزمره، و وقتی UDP مشکل ندارد: WireGuard
  • برای شبکه‌هایی که UDP را محدود کرده‌اند یا می‌خواهید روی 443 کار کنید: OpenVPN (ترجیحا با تنظیمات درست)
  • برای شرایط سخت‌تر و حساس به شناسایی ترافیک: VLESS+REALITY
  • برای راه‌حل سبک و قابل‌حمل روی بعضی کلاینت‌ها: Shadowsocks-2022 (بسته به پیاده‌سازی)

این‌ها قانون نیست. یک جور نقطه‌ی شروع است. بعدش باید روی همان شبکه‌ای که استفاده می‌کنید تست کنید: خانه، محل کار، اینترنت موبایل، یا حتی OpenWrt روی روتر.

چیزهایی که اسم پروتکل رویشان سایه می‌اندازد

خیلی وقت‌ها مشکل کاربران «پروتکل» نیست، جزئیات کنار آن است.

اول DNS. اگر DNS درست هندل نشود، یا کند می‌شود یا نشتی (leak) می‌دهد. بعضی کلاینت‌ها روی Android وقتی Private DNS فعال است، رفتار متفاوتی نشان می‌دهند. من بارها دیده‌ام کاربر فکر می‌کند VPN کند است، ولی در واقع DNS روی مسیر بدی افتاده. قابلیت‌های جانبی مثل کنترل DNS، Kill Switch، یا Split Tunneling گاهی از انتخاب بین WireGuard و OpenVPN مهم‌تر می‌شود. برای دیدن این‌که یک سرویس دقیقا چه چیزهایی ارائه می‌دهد، بهتر است مستقیم صفحه‌ی امکانات DuduVPN را نگاه کنید و ببینید روی پلتفرم مدنظر شما چه گزینه‌هایی واقعا در دسترس است.

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

سوم، مدیریت پروفایل‌ها و کلاینت. روی Windows و macOS انتخاب کلاینت برای WireGuard راحت است، اما برای VLESS+REALITY باید سراغ کلاینت‌هایی بروید که Xray را درست پیاده کرده‌اند. روی روترهای OpenWrt هم WireGuard معمولا تجربه‌ی تمیزتری دارد؛ OpenVPN روی سخت‌افزار ضعیف‌تر ممکن است CPU را پر کند و سرعت سقف بخورد.

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

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

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

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

بعد سراغ تنظیمات کلاینت بروید: Kill Switch گاهی کمک می‌کند اپ‌ها وسط قطع‌ووصلی به شبکه‌ی عادی نپرند. Split Tunneling هم اگر درست تنظیم شود، می‌تواند هم سرعت را بهتر کند هم مصرف باتری را. اگر با خطاهای تکراری یا سوال‌های تنظیمات گیر کردید، معمولا پاسخ‌های واضح‌تری را در سوال‌های متداول پیدا می‌کنید تا توی کانال‌های پراکنده.

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

پیشنهاد کوتاه، برای کسی که می‌خواهد کمتر آزمون‌وخطا کند

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

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

مقالات مرتبط