خطای Handshake Failed در V2Ray — تشخیص و رفع
خطای handshake failed در V2Ray یعنی کلاینت نتوانسته با سرور یک TLS session بسازد — معمولاً بهخاطر ساعتِ اشتباهِ سیستم، SNI/کانفیگِ نادرست، یا بلاکشدنِ سرور. این مقاله هر علت و راهحلش را توضیح میدهد.
دلیل ۱: زمان سیستم اشتباه
TLS به زمان دقیق نیاز دارد. اگر ساعت گوشی یا کامپیوتر شما اشتباه باشد (حتی چند دقیقه)، handshake fail میشود.
راهحل: زمان را روی خودکار از شبکه بگذارید. روی اندروید: Settings → Date & time → Automatic.
دلیل ۲: SNI اشتباه
اگر SNI کانفیگ شما با چیزی که سرور انتظار دارد فرق کند، handshake fail میشود.
راهحل: کانفیگ را از سرویس مجدد بگیرید. اگر دستی ویرایش کردهاید، SNI را به پیشفرض برگردانید.
دلیل ۳: گواهی منقضی شده
اگر سرور VPN از Let's Encrypt استفاده میکند و گواهی renew نشده، handshake fail میشود.
راهحل: با پشتیبانی سرویس تماس بگیرید — این مشکل سمت سرور است.
دلیل ۴: اپراتور TLS interception
اگر اپراتور MITM میکند (نادر در ایران ولی ممکن)، handshake fail میشود.
راهحل: پروتکل Reality استفاده کنید — مقاوم در برابر MITM است.
دلیل ۵: نسخه TLS ناسازگار
اگر کلاینت TLS 1.2 است ولی سرور TLS 1.3 میخواهد:
راهحل: کلاینت را بهروز کنید. آخرین V2RayNG, V2RayN, V2Box را از منبع رسمی دانلود کنید.
ترتیب درستِ عیبیابی
خطای handshake را تصادفی امتحان نکنید؛ از ارزانترین و رایجترین علت شروع کنید:
- ساعت سیستم را چک کنید (۳۰ ثانیه، رایجترین علت)
- کانفیگ را از نو از سرویس بگیرید (SNI/گواهی را یکجا درست میکند)
- کلاینت را بهروز کنید
- به Reality سوییچ کنید (هم MITM هم بیشترِ DPI را دور میزند)
- اگر همهی اینها شد و باز خطا داد، سمت سرور است → پشتیبانی
جدول نشانه به علت
| پیام لاگ | محتملترین علت | راهحل |
|---|---|---|
x509: certificate has expired |
گواهیِ سرور منقضی | پشتیبانی (سمت سرور) |
tls: handshake failure بلافاصله |
SNI/پروتکل شناساییشده | کانفیگ تازه، Reality |
context deadline exceeded |
سرور غیرقابلدسترس | سرور/پورت دیگر |
| handshake فقط بعضی ساعتها | فشار DPI در پیک | اینباند/سرور دیگر |
bad certificate بعد از ویرایش دستی |
SNI دستکاریشده | به پیشفرض برگردان |
خواندن لاگ برای تشخیص
در V2RayNG از منوی پایین گزینهی نمایش لاگ را باز کنید و دنبال خطِ اولِ قرمز بگردید — همان علتِ ریشهای است، نه خطاهای بعدی که نتیجهی هماناند. اگر dial tcp ... i/o timeout دیدید، اصلاً به سرور نرسیدهاید (پورت/سرور)، نه مشکل TLS.
سؤالات متداول
ساعت گوشیام درست است ولی باز handshake fail میدهد، چرا؟ چند ثانیه اختلافِ منطقهی زمانی یا تنظیمِ دستیِ تاریخ هم کافی است. حالت خودکار از شبکه را روشن کنید، نه تنظیم دستی.
handshake failed با no internet فرق دارد؟ بله. handshake یعنی هنوز به سرور وصل نشدهاید؛ no internet یعنی وصل شدهاید ولی ترافیک عبور نمیکند. این دو راهحلِ متفاوت دارند.
روی کامپیوتر همین خطا را دارم، فرق میکند؟ منطق یکی است؛ اول ساعتِ ویندوز یا مک را با سرورِ زمانِ شبکه هماهنگ کنید، بعد کلاینت را بهروز کنید. روی ویندوز، ساعتِ اشتباه شایعترین علتِ handshake است و با یکبار «Sync now» در تنظیماتِ Date & time حل میشود.
جمعبندی
خطای handshake معمولاً یک از این پنج دلیل را دارد. ساعت سیستم را اول چک کنید — رایجترین دلیل است.
مقالات مرتبط
- بهترین VPN برای ایران در سال ۱۴۰۵
- V2Ray چیست و چگونه کار میکند؟
- ارسال VPN به خانواده در ایران
- راهنمای نصب روی اندروید | iOS | ویندوز | مک
v2route با ۱۰ سال تجربه، VPN امن، پرسرعت و پایدار برای ایران ارائه میدهد. همین حالا تست رایگان بگیرید.