خطای TLS handshake timeout در V2ray و چند راه‌حل

در هفته‌های گذشته برای خیلی از کاربران V2ray پیش آمده که موقع اتصال به حساب کاربری خود و تست ping ناگهان با خطای net/http: TLS handshake timeout رو به رو بشوند. گاهی حتی اتفاق می‌افتد که علیرغم اتصال دو دستگاه (مثلا ویندوزی و اندرویدی) به یک اینترنت واحد، کلاینت V2ray در یکی بدون مشکل کار کند ولی در دیگری چنین خطایی بدهد.به هرحال راهکار یکسانی برای حل این مساله وجود ندارد، فقط می‌دانیم مشکل هرچه هست به پروتکل TLS ربط دارد و نه الزاما به کانفیگ نادرست. پس در اینجا به روش‌های مختلفی می‌پردازیم که توانسته این مشکل را حل کند (منتها موارد سه و چهار، مختص کاربران سرویس کلاودفلر است که پنل X-UI را نصب کرده‌اند. در حال حاضر اکثر کاربران ایرانیِ V2ray در همین دسته جای می‌گیرند!).اول: بروزرسانی تنظیمات تاریخ و زماناز ابتدای امسال (1402) ساعت رسمی کشور تغییر نکرد، در حالی که دستگاه‌های الکترونیکی به طور خودکار و پیش‌فرض تغییر را اعمال کردند. بنابراین به احتمال زیاد اکثر کاربران به طور دستی ساعت دستگاه‌ها را یک ساعت عقب کشیده‌اند. این در حالیست که V2ray نسبت به ساعت دستگاه شما خیلی حساس و سختگیر است. در نتیجه موارد متعددی بوده که با تغییر ساعت دستگاه به حالت پیش‌فرض (بروزرسانی خودکار) مشکل رفع شده.https://guide.v2fly.org/en_US/prep/start.htmlدوم: تغییر تنظیمات uTLS و alpn و allowinsecure در نرم‌افزار V2rayاگر از نرم‌افزاهای معروفی مثل V2rayN در ویندوز و V2rayng در اندروید استفاده می‌کنید، می‌توانید تنظیمات حساب V2ray خود را تغییر بدهید (فقط یادتان نرود که اول V2ray را قطع کنید تا امکان ذخیره تغییرات به شما داده شود). در فیلدهای uTLS و alpn گزینه‌های متعددی به شما داده شده (مثلا اولی را می‌توانید در حالت Chrome قرار دهید و دومی را در حالت h2,http/1.1 و یا هر ترکیب دلخواهی از گزینه‌هایی که برای شما تعریف شده). در آخر هم مقدار allowinsecure را به True تغییر بدهید و تست بگیرید.سوم: بررسی ورژن TLS در Cloudflareاگر برای راه‌اندازی V2ray خود دامنه خریده و از سرویس کلاودفلر استفاده کرده‌اید، از قسمت SSL/TLS- Edge Certificates بررسی کنید که حداقل ورژن TLS شما 1.2 باشد (به علاوه بهتر است در همان بخش گزینه Always Use HTTPS هم تیک بخورد و ضمنا از بخش overview هم حالت SSL/TLS روی Full قرار بگیرد).چهارم: تغییر زیردامنه در رکورد DNS کلاودفلراگر دامنه گرفته‌اید و برای پنهان کردن آی‌پی پشت دامنه از سرویس کلاودفلر استفاده می‌کنید، پس قبلا حتما یک رکورد DNS به شکل زیر اضافه و ثبت کرده‌اید که با آن کاری نداریم.در این روش اما باید یک رکورد جدید اضافه کنید. در اینجا مثلا برای دامنه domain.com، یک رکورد جدید از نوع A با نام host2 ایجاد شده که به آی‌پیِ سرور اشاره دارد و ضمنا تیک Proxied هم فعال شده تا این آی‌پی سرور پشت آی‌پی کلاودفلر پنهان شود.الآن زیردامنه شما به صورت host2.domain.com در آمده و حالا می‌خواهیم برای این زیردامنه گواهی SSL بگیریم تا نهایتا در کانفیک V2ray استفاده کنیم. روش کار همانی است که روز اولِ راه‌اندازی V2ray برای گرفتن SSL استفاده کرده‌اید، با یک تفاوت کوچک که در ادامه به آن می‌رسیم.در اینجا دستورات لازم برای دریافت گواهی SSL رایگان آمده. حالا بعد از اتصال به سرور لینوکس، ابتدا دستور زیر را وارد می‌کنید (به جای host2.domain.com آدرس جدید خودتان را قرار دهید):~/.acme.sh/acme.sh --issue -d host2.domain.com --standalone در قدم دوم به سراغ دستور زیر می‌رویم. تنها تفاوت این دستور با آنچه در اینجا گفته شده اینست که نام فایل‌های cert.crt و private.key به cert2.crt و private2.key تغییر داده شده. به این خاطر که شما قبلا برای دامنه خودتان گواهی SSL گرفته‌اید و بنابراین در پوشه root، فایل‌های crt و key از قبل موجودند؛ پس نام‌ فایل‌ها تغییر داده شده‌اند تا تداخلی ایجاد نشود. در نتیجه کافیست دستور زیر را (مجددا با تغییر host2.domain.com به آدرس خودتان) اجرا کنید و تمام.~/.acme.sh/acme.sh --installcert -d host2.domain.com --key-file /root/private2.key --fullchain-file /root/cert2.crt در قدم آخر، به مرحله ساخت یک user جدید در پنل X-UI می‌رسید. همه تنظیمات مثل سابق هستند، با این تفاوت که این بار در قسمت TLS، نام زیردامنه جدید (host2.domain.com) قرار می‌گیرد و در مسیرهای Public key file و key file هم آدرس فایل گواهی‌های جدید، یعنی:/root/cert2.crt/root/private2.keyالآن اگر این حساب جدید را به کلاینت V2ray وارد کنید و تست بگیرید، به احتمال زیاد مشکل حل شده و اتصال شما برقرار می‌شود.اگر گواهی SSL کلاودفلر را برای دامنه و زیردامنه‌ها فعال کرده‌اید، ابتدا باید از SSL/TLS ->Edge Certificates گواهی SSL سراسری را غیرفعال کنید و بعد با ریموت زدن به سرور یا استفاده از نرم‌افزارهای FTP مثل FileZilla، کلیدها را از روت پاک کنید و سپس مراحل بالا را طی کنید.پنجم: تغییر پورتدر صورت فعال بودن پروکسی کلاودفلر، فقط تعداد محدودی پورت https ساپورت می‌شود. در مواردی با تغییر پورت و ساخت یک کانفیگ جدید با آن پورت مساله حل شده (برای استفاده از پورت‌هایی به جز پورت‌های زیر در ساخت کانفیگ‌های جدید باید تیک DNS proxy خاموش باشد).ششم: بروزرسانی اپلیکیشن V2rayng به ورژن 1.8.0 و بالاتردر زمان نوشتن این مطلب آخرین ورژن رسمی V2rayng در گوگل پلی استور 1.7.38 است، اما طی یک ماه گذشته ورژن‌های بالاتری هم از آن آمده که فعلا به صورت پیشاانتشار (pre-release) در گیت‌هاب موجودند (اینجا) و ناگفته نماند که ورژن +1.8.0 از پروتکل جذاب Reality هم پشتیبانی می‌کند. اگر نصب این آپدیت با خطا روبرو شد (unable to install)، ناگزیر باید نسخه نصب‌شده در اندروید را پاک و به جایش نسخه جدید را نصب و تست کنید.هفتم؛ تغییر آی‌پی سرورمشکل عجیبی که این اواخر بروز کرده اینست که علیرغم سالم بودن آی‌پی سرور، اما اتصال به سرور از طریق ترمینال با این آی‌پی مقدور نیست و با خطای عدم اتصال و Timeout روبرو می‌شود. در این حالت راهی نیست جز تغییر آی‌پی سرور. دستکم در سرورهای هتزنر فرایند تعویض آی‌پی بسیار ساده است و نیازی نیست که سرور کنونی حذف و یک سرور جدید به جایش گرفته شود! در مطلب آموزش تعویض آی‌پی سرورهای هتزنر این موضوع به همراه یک نکته کاربردی و مهم که اغلب فراموش می‌شود توضیح داده شده.نکته آخردر نهایت تمام راهکارهای بالا به فرض آنست که آدرس دامنه فیلتر نشده. در غیر این صورت هیچ‌یک از گزینه‌های بالا جواب نمی‌دهد و به ناچار یا باید دامنه را تعویض کرد (و البته اتصال ورودی آی‌پی‌های چینی به سرور و اتصال خروجی سرور به سایت‌ها و اپ‌های ایرانی را مسدود کرد) و یا از روش‌های جایگزین برای دور زدن فیلترینگ دامنه استفاده کرد (به عبارتی کانفیگ‌هایی ایجاد کرد که با وجود دامنه فیلتر هم کار کنند، مانند این روش). وندا نوژنمطالب مرتبط:مسدودسازی دسترسی آی‌پی‌های چینی و روسی به سرور V2rayدور زدن فیلترینگ دامنه در V2ray با روش تونل کلودفلر (فرگمنت): حل دو مشکلجایگزین NetMod برای SSH Tunneling در ویندوزتعویض آی‌پی فیلترشده یا مشکل‌دار سرورهای هتزنر با چند کلیک