خطای Handshake Failed در V2Ray — تشخیص و رفع
خطای Handshake Failed یعنی یکی از مراحل توافق اولیهٔ اتصال کامل نشده است؛ برای پیدا کردن علت باید متن کامل خطا و مرحلهٔ وقوع آن را دید. TLS handshake timeout با خطای گواهی منقضی یا نام دامنهٔ نامعتبر یکسان نیست. ابتدا مشخص کنید خطا هنگام دریافت اشتراک رخ میدهد یا هنگام اتصال به یک سرور؛ سپس ساعت دستگاه، تنظیمات معتبر و نتیجهٔ مقایسهٔ شبکه را بررسی کنید.
این راهنما برای تفسیر خطا در کلاینتهایی مانند v2rayNG و v2rayN است. از روی عبارت کلی handshake نمیتوان گفت «اصلاً به سرور نرسیدهاید»، اپراتور مقصر است یا خرید یک پروتکل دیگر حتماً مشکل را حل میکند. بعضی خطاها پس از رسیدن به طرف مقابل و هنگام بررسی گواهی رخ میدهند؛ برای همین حذف چند کلمه از پیام، سرنخ مهمی را از بین میبرد.
تفاوت Handshake Failed و TLS Handshake Timeout
در برقراری ارتباط TLS، طرفین پیش از تبادل دادهٔ کاربردی دربارهٔ جزئیات ارتباط توافق میکنند و اعتبارسنجیهای لازم انجام میشود. پیام failed شکست این مرحله را گزارش میکند؛ عبارت timeout میگوید مرحله در مهلت تعیینشده تمام نشده است. پایان مهلت، علت دقیق تأخیر را مشخص نمیکند و بهتنهایی مدرک خرابی گواهی نیست.
اگر پیام شما context deadline exceeded است، باید عملیاتی را که مهلتش تمام شده هم ببینید. دریافت لینک اشتراک، پیدا کردن مقصد و برقراری اتصال یک کار واحد نیستند. راهنمای تشخیص deadline exceeded این تفکیک را با جزئیات توضیح میدهد. در این صفحه روی خطاهای مرحلهٔ TLS و گواهی تمرکز میکنیم تا مراحل دو راهنما با هم مخلوط نشود.
| متن یا نشانه | برداشت مجاز | بررسی بعدی |
|---|---|---|
TLS handshake timeout |
توافق TLS در مهلت کامل نشده | شبکه، مقصد، پورت و نتیجهٔ همان کانفیگ روی مسیر دیگر |
certificate has expired |
زمان اعتبار گواهی در بررسی پذیرفته نشده | ساعت دستگاه و اعتبار گواهی نزد ارائهدهنده |
certificate is not yet valid |
زمان بررسی پیش از آغاز اعتبار گواهی است | تاریخ دستگاه و بازهٔ اعتبار گواهی |
certificate is valid for ... not ... |
نام مورد انتظار با گواهی تطبیق ندارد | نام سرور در تنظیمات و کانفیگ معتبر ارائهدهنده |
unknown authority |
زنجیرهٔ اعتماد پذیرفته نشده | نسخهٔ سیستم، زنجیرهٔ گواهی و تنظیمات سرویس |
handshake failure بدون جزئیات |
طرفین نتوانستهاند مرحله را کامل کنند | لاگ مرتبط و تنظیمات دو سمت؛ بدون تشخیص قطعی از یک عبارت |
۱. مشخص کنید خطا مربوط به اشتراک است یا سرور
اگر با زدن دکمهٔ بهروزرسانی اشتراک خطا میبینید و فهرست نودها هنوز دریافت نشده، مقصد خطا ممکن است وبسرویس اشتراک باشد. اگر فهرست موجود است و پس از انتخاب یک نود خطا ظاهر میشود، بررسی را روی همان اتصال متمرکز کنید. حتی اگر هر دو مرحله از TLS استفاده کنند، تنظیمات و مسئولیتشان میتواند متفاوت باشد.
یک بار تلاش را تکرار کنید و ساعت، عملیات و متن خطا را ثبت کنید. لازم نیست دهها بار پشت سر هم سرور عوض کنید؛ این کار گزارش را شلوغ میکند و مقایسه دشوارتر میشود. لینک خصوصی اشتراک، شناسهٔ کانفیگ و QR را از تصویر حذف کنید. برای تشخیص، نام مرحله و متن خطا مفیدتر از منتشرکردن اطلاعات دسترسی است.
۲. ساعت را بررسی کنید، اما آن را علت قطعی ندانید
تاریخ و زمان واقعی دستگاه باید درست باشد. تنظیم خودکار زمان را در سیستم بررسی کنید؛ نام و مسیر گزینه با نسخهٔ اندروید، ویندوز یا iOS فرق میکند. تغییر منطقهٔ زمانیِ نمایشی بهتنهایی همیشه به معنی نادرستبودن ساعت واقعی سیستم نیست. بنابراین ادعای «چند ثانیه اختلاف منطقهٔ زمانی همهٔ اتصالها را قطع میکند» مبنای تشخیص نیست.
مستندات رسمی اعتبارسنجی X.509 در Go زمان، نام میزبان و زنجیرهٔ اعتماد را از موضوعهای جداگانهٔ بررسی گواهی میداند. درستبودن ساعت، گواهی واقعاً منقضی را تازه نمیکند. اگر تاریخ دستگاه درست است و پیام انقضا تکرار میشود، همان پیام را برای ارائهدهنده بفرستید؛ کاربر نباید برای پذیرفتهشدن یک گواهی قدیمی، ساعت دستگاه را عقب ببرد.
۳. تنظیمات معتبر را با نسخهٔ دستکاریشده مقایسه کنید
اگر نام دامنه، پورت یا گزینهٔ امنیت را دستی تغییر دادهاید، یک نسخهٔ تازه از منبع اصلی دریافت کنید و بدون حذف نسخهٔ قابل بازیابی قبلی آزمایش کنید. فقط زمانی اشتراک را بهروز کنید که مطمئن هستید لینک از همان ارائهدهنده است. واردکردن یک SNI تصادفی از فهرستهای عمومی، درمان عمومی خطای TLS نیست.
در مستندات انتقال Xray، تنظیمات نام سرور و اعتبارسنجی TLS بخشی از پیکربندی اتصالاند. این گزینهها باید با سرویس مقصد سازگار باشند. تغییر نام پروتکل یا خاموشکردن اعتبارسنجی برای ناپدیدشدن خطا، اثبات سالمشدن اتصال نیست؛ ممکن است فقط یک کنترل مهم را کنار گذاشته باشید.
۴. شبکه و سرور را جداگانه آزمایش کنید
با دستگاه و کانفیگ ثابت، یک بار روی وایفای و یک بار روی دادهٔ موبایل بررسی کنید. بعد روی یک شبکهٔ ثابت، سرور دوم همان اشتراک را انتخاب کنید. نتیجه را کوتاه بنویسید: «همان نود روی وایفای timeout میدهد و روی دیتا باز میشود» از عبارت عمومی «هیچچیز کار نمیکند» قابل استفادهتر است.
این مقایسه محل بررسی را محدود میکند ولی علت را قطعی نمیسازد. اگر فقط یک سرور مشکل دارد، مسیر آن، تنظیمات یا خود سرور میتواند دخیل باشد. اگر خطای گواهی روی هر دو شبکه یکسان است، صرف تعویض اینترنت ممکن است کافی نباشد. نتیجهٔ پینگ هم جای بررسی TLS را نمیگیرد؛ پاسخ یک آزمون شبکه تضمین نمیکند توافق امنیتی همان اتصال موفق شود.
۵. نسخهٔ کلاینت و ترتیب خطاها را ثبت کنید
نسخهٔ برنامه و سیستمعامل را یادداشت کنید و انتشار رسمی سازنده را بررسی کنید؛ برای نمونه انتشارهای رسمی v2rayNG. نصب یک نسخهٔ ناشناس با برچسب «رفع همهٔ خطاها» قدم مناسبی نیست. قبل از نصب مجدد مطمئن شوید به لینک و تنظیمات لازم برای بازیابی دسترسی دارید.
در لاگ، خطی را پیدا کنید که با زمان و عملیات ناموفق شما ارتباط دارد. اولین خط قرمز کل فایل لزوماً علت این تلاش نیست؛ ممکن است از اتصال قبلی باقی مانده باشد. چند خط مرتبط قبل و بعد از خطا را بررسی کنید و اطلاعات خصوصی را بپوشانید. اگر بعد از شکست اولیه، پیام EOF یا بستهشدن جریان میآید، راهنمای EOF و read/write به تفکیک خطای اصلی و پیامهای بعدی کمک میکند.
اگر مراحل بالا نتیجه نداد
برای پشتیبانی بنویسید خطا هنگام دریافت اشتراک است یا اتصال نود، چه زمانی رخ داده، نام و نسخهٔ کلاینت چیست و روی دو شبکه چه تفاوتی دیدهاید. اگر به سرور دسترسی مدیریتی ندارید، بررسی زنجیرهٔ گواهی و تنظیمات مقصد را از ارائهدهنده بخواهید. نتیجهنگرفتن از چند قدم عمومی ثابت نمیکند مشکل حتماً سمت سرور است؛ ممکن است هنوز اطلاعات کافی از کلاینت یا مسیر نداشته باشیم.
همچنین پایان حجم و مدت اشتراک را جداگانه بررسی کنید؛ این دو را از روی پیام کلی TLS حدس نزنید. راهنمای مشاهدهٔ حجم و انقضا برای بررسی حساب است. اگر قصد انتخاب سرویس دارید، اول تست رایگان و شرایط فعلی صفحهٔ اصلی v2route را ببینید؛ خرید تازه جای تشخیص خطای موجود را نمیگیرد.
سؤالات متداول
ارور tls handshake timeout در V2Ray یعنی گواهی خراب است؟ خیر؛ این پیام میگوید مرحله در زمان تعیینشده کامل نشده است. برای تشخیص گواهی به پیام مشخص اعتبارسنجی و برای تشخیص مسیر به مقایسهٔ شبکه و مقصد نیاز داریم.
با روشنکردن Allow insecure مشکل حل میشود؟ خاموشکردن اعتبارسنجی گواهی راهحل عمومی نیست. ممکن است پیام را پنهان کند بدون اینکه مشکل نام دامنه، اعتماد یا تنظیمات سرویس حل شود. تنظیم معتبر را از ارائهدهنده بگیرید.
چرا با ساعت درست هنوز Handshake Failed میبینم؟ ساعت تنها یکی از عوامل است. نام سرور، زنجیرهٔ اعتماد، تنظیمات دو سمت یا کاملنشدن مرحله در مهلت هم باید متناسب با متن خطا بررسی شوند.
آیا باید پروتکل را عوض کنم؟ صرف دیدن handshake failed دلیل کافی برای تغییر پروتکل نیست. ابتدا کانفیگ معتبر و مرحلهٔ وقوع خطا را مشخص کنید؛ تغییر دستی نوع اتصال بدون پشتیبانی متناظر سرور معمولاً اتصال تازهای ایجاد نمیکند.
راهحلهای بالا را انجام دادید و هنوز مشکل باقی است؟
اول با یک کانفیگ سالم رایگان مقایسه کنید؛ اگر مشکل حل شد، بعد پلن مناسب را بخرید