رفع خطاهای WireGuard؛ از Handshake ناموفق تا قطع انتقال داده

عیب‌یابی   7 دقیقه مطالعه

وقتی به یک خطای WireGuard برمی‌خورید، معمولاً تنل با موفقیت بالا می‌آید اما هیچ سایتی باز نمی‌شود یا برعکس، کانفیگ را وارد می‌کنید و اتصال اصلاً برقرار نمی‌شود. خبر خوب این است که برخلاف ظاهر گیج‌کننده‌اش، WireGuard پروتکلی بسیار ساده و قابل پیش‌بینی است و تقریباً همه‌ی ارورهای آن ریشه در چند علت مشخص دارند: کلیدهای اشتباه، تنظیمات نادرست AllowedIPs، مشکل ساعت سیستم یا فیلتر شدن پورت توسط شبکه. در این مقاله، رایج‌ترین ارورهای وایرگارد را روی موبایل (اندروید و iOS) و کامپیوتر (ویندوز، مک و لینوکس) بررسی می‌کنیم و برای هرکدام راه‌حل دقیق و عملی ارائه می‌دهیم تا در کمترین زمان دوباره به اینترنت پایدار وصل شوید.

چرا Handshake انجام نمی‌شود؟ مهم‌ترین ارور وایرگارد

پرتکرارترین مشکل کاربران، نبود handshake است. در اپلیکیشن رسمی WireGuard اگر روی تنل فعال بزنید، در بخش جزئیات باید عبارت «Latest handshake» با زمانی چند ثانیه‌ای دیده شود. اگر این مقدار خالی بماند یا «هرگز» (Never) نشان دهد، یعنی دستگاه شما اصلاً نتوانسته با سرور دست بدهد و عملاً هیچ بسته‌ای رد و بدل نشده است.

handshake در WireGuard یک تبادل رمزنگاری‌شده‌ی بسیار سریع است که هر دو دقیقه یک‌بار تازه می‌شود. اگر انجام نشود، معمولاً یکی از این دلایل وجود دارد:

  • پورت یا آدرس سرور (Endpoint) اشتباه است یا توسط شبکه‌ی شما (مثلاً وای‌فای دانشگاه یا اپراتور موبایل) مسدود شده.
  • کلید عمومی سرور یا کلید خصوصی شما نادرست کپی شده و حتی یک کاراکتر جابه‌جا، کل دست‌دادن را خراب می‌کند.
  • کاربر دیگری با همان کانفیگ به‌صورت همزمان متصل است؛ هر کانفیگ فقط برای یک دستگاه طراحی شده.

برای شروع، کانفیگ را پاک کنید و دوباره دقیقاً از منبع اصلی (فایل یا QR کد) وارد کنید تا احتمال خطای تایپی صفر شود.

ارورهای مربوط به کلید و ساعت سیستم

رمزنگاری WireGuard کاملاً به جفت کلید عمومی/خصوصی وابسته است. اگر هنگام ساخت کانفیگ، کلید عمومی شما به سرور اضافه نشده باشد یا کلید عمومی سرور را اشتباه وارد کرده باشید، handshake هرگز کامل نمی‌شود و معمولاً هیچ پیام خطای واضحی هم نمی‌بینید؛ فقط اتصال «بی‌صدا» شکست می‌خورد.

نکته‌ی مهم و کمتر شناخته‌شده، ساعت دستگاه است. WireGuard برای جلوگیری از حملات بازپخش، به timestamp حساس است. اگر تاریخ یا ساعت گوشی و کامپیوتر شما اشتباه باشد، سرور بسته‌های شما را نامعتبر تلقی کرده و رد می‌کند. برای رفع این مورد:

  • تنظیم خودکار تاریخ و زمان (Automatic date & time) و منطقه‌ی زمانی را روی دستگاه فعال کنید.
  • در لینوکس مطمئن شوید سرویس NTP فعال است و ساعت با اینترنت همگام می‌شود.
  • اگر باتری ساعت داخلی کامپیوتر (CMOS) ضعیف است، آن را تعویض کنید تا زمان بعد از خاموشی ریست نشود.

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

متصل می‌شوم اما اینترنت ندارم؛ مشکل AllowedIPs و DNS

حالتی هست که handshake موفق انجام می‌شود (latest handshake به‌روز است) اما هیچ سایتی باز نمی‌شود. این یعنی تنل سالم است ولی ترافیک شما درست مسیردهی نمی‌شود. دو متهم اصلی اینجا AllowedIPs و DNS هستند.

پارامتر AllowedIPs تعیین می‌کند چه ترافیکی وارد تنل شود. اگر می‌خواهید کل اینترنت از طریق سرور عبور کند، این مقدار باید 0.0.0.0/0, ::/0 باشد. اگر اشتباهاً فقط یک رنج محدود نوشته شده باشد، تنل بالا می‌آید اما مرورگر شما به جایی وصل نمی‌شود.

متهم بعدی DNS است. اگر در بخش Interface کانفیگ، خط DNS وجود نداشته باشد یا به سروری اشاره کند که از داخل تنل در دسترس نیست، صفحات باز نمی‌شوند درحالی‌که پینگ به IP عددی کار می‌کند. یک DNS معتبر مثل 1.1.1.1 یا 8.8.8.8 را در کانفیگ قرار دهید. اگر همچنان مشکل دارید:

  • کش DNS سیستم را پاک کنید (در ویندوز با ipconfig /flushdns).
  • مرورگر را کامل ببندید و دوباره باز کنید تا اتصال‌های قدیمی رها شوند.
  • روی موبایل، «Always-on VPN» یا «Block connections without VPN» را موقتاً غیرفعال کنید تا تداخل آن مشخص شود.

اگر می‌خواهید بدون درگیری با این تنظیمات، یک پلن‌های آی پی ثابت آماده و تست‌شده داشته باشید، نت‌باز کانفیگ‌های WireGuard را به‌صورت بهینه و با مسیریابی صحیح در اختیار شما می‌گذارد.

اتصال نیمه‌کاره و خطای انتقال نشدن داده (مشکل MTU)

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

MTU حداکثر اندازه‌ی بسته‌ای است که در شبکه عبور می‌کند. وقتی WireGuard یک لایه هدر اضافه می‌کند، اگر MTU بیش از حد بزرگ باشد، بسته‌ها باید تکه‌تکه شوند و برخی شبکه‌ها این تکه‌ها را دور می‌اندازند؛ نتیجه‌اش قطعی نامنظم انتقال داده است. راه‌حل، کاهش MTU در بخش Interface کانفیگ است:

  • مقدار پیش‌فرض اغلب 1420 است؛ آن را به 1380 و در صورت لزوم تا 1280 کاهش دهید.
  • پس از هر تغییر، تنل را خاموش و دوباره روشن کنید و یک فایل حجیم دانلود کنید تا پایداری را بسنجید.
  • روی شبکه‌های موبایل یا اینترنت ماهواره‌ای معمولاً MTU پایین‌تر جواب بهتری می‌دهد.

پارامتر مکمل دیگر PersistentKeepalive است. اگر پشت NAT یا فایروال هستید و اتصال بعد از چند دقیقه بی‌فعالیت قطع می‌شود، مقدار 25 را برای این پارامتر در بخش Peer اضافه کنید تا تنل با ارسال بسته‌های کوچک دوره‌ای زنده بماند.

وقتی شبکه یا فایروال پورت WireGuard را می‌بندد

گاهی همه‌چیز در کانفیگ درست است اما در شبکه‌ای خاص (محل کار، هتل، اپراتور خاص) به‌هیچ‌وجه handshake برقرار نمی‌شود، درحالی‌که همان کانفیگ روی شبکه‌ی دیگری بی‌نقص کار می‌کند. این یعنی پورت UDP وایرگارد در آن شبکه فیلتر شده است.

WireGuard ذاتاً روی UDP کار می‌کند و برخی شبکه‌ها ترافیک UDP غیرمتعارف را محدود می‌کنند. برای تشخیص و عبور از این محدودیت:

  • تست کنید آیا با داده‌ی موبایل (به‌جای وای‌فای) وصل می‌شوید؛ اگر بله، مشکل از آن شبکه‌ی خاص است.
  • اگر سرویس‌دهنده‌تان چند پورت ارائه می‌دهد، پورت Endpoint را به یک پورت رایج‌تر تغییر دهید.
  • در شبکه‌های بسیار سختگیر، پروتکل‌هایی مثل L2TP یا OpenVPN که روی پورت‌های متفاوت کار می‌کنند می‌توانند جایگزین مطمئن‌تری باشند.

نت‌باز چند پروتکل را به‌صورت موازی روی آی پی ثابت ارائه می‌دهد؛ بنابراین اگر WireGuard در شبکه‌ای مسدود شد، می‌توانید بدون خرید مجدد به پروتکل دیگری سوییچ کنید. برای مراحل تصویری راه‌اندازی هر پروتکل، آموزش اتصال را ببینید.

ارورهای خاص هر سیستم‌عامل و چک‌لیست سریع

برخی خطاها مختص پلتفرم هستند. در ویندوز، پیام «Unable to create Wintun adapter» معمولاً با اجرای برنامه به‌صورت Run as administrator و بستن سایر VPNهای فعال حل می‌شود. در اندروید، اگر تنل بالا می‌آید اما بلافاصله قطع می‌شود، بهینه‌سازی باتری (Battery optimization) را برای اپلیکیشن WireGuard خاموش کنید تا سیستم آن را در پس‌زمینه نکشد.

در iOS گاهی لازم است پروفایل VPN را از تنظیمات حذف و دوباره از داخل اپ نصب کنید تا مجوزها بازنشانی شوند. در لینوکس اگر دستور wg-quick با خطای resolvconf متوقف شد، بسته‌ی resolvconf را نصب کنید یا خط DNS را موقتاً بردارید.

یک چک‌لیست سریع که اغلب ارورها را در کمتر از دو دقیقه حل می‌کند:

  • کانفیگ را از منبع اصلی دوباره و کامل وارد کنید.
  • ساعت و تاریخ دستگاه را روی حالت خودکار بگذارید.
  • مطمئن شوید فقط یک تنل و یک VPN فعال است.
  • AllowedIPs را روی 0.0.0.0/0 و یک DNS معتبر تنظیم کنید.
  • MTU را به 1380 کاهش دهید و PersistentKeepalive=25 بگذارید.
  • اگر باز نشد، شبکه (وای‌فای/دیتا) را عوض کنید.

پرسش‌های متداول

چرا handshake وایرگارد من خالی می‌ماند؟

نبود handshake یعنی دستگاه شما اصلاً به سرور نرسیده است. رایج‌ترین دلایل، اشتباه بودن آدرس/پورت سرور، کپی نادرست کلیدها، اشتباه بودن ساعت دستگاه یا مسدود بودن پورت UDP توسط شبکه است. ابتدا کانفیگ را دوباره از منبع اصلی وارد کنید و ساعت سیستم را خودکار کنید.

وصل می‌شوم اما هیچ سایتی باز نمی‌شود، مشکل چیست؟

اگر handshake موفق است ولی اینترنت ندارید، معمولاً AllowedIPs به‌جای 0.0.0.0/0 محدود شده یا DNS کانفیگ نادرست است. AllowedIPs را روی کل ترافیک تنظیم کنید و یک DNS معتبر مثل 1.1.1.1 در بخش Interface قرار دهید.

چرا دانلود فایل‌های بزرگ وسط کار قطع می‌شود؟

این نشانه‌ی کلاسیک مشکل MTU است. مقدار MTU را در بخش Interface از 1420 به 1380 و در صورت نیاز تا 1280 کاهش دهید و تنل را خاموش و روشن کنید تا انتقال داده پایدار شود.

اتصال بعد از چند دقیقه بی‌فعالیت قطع می‌شود، چه کنم؟

اگر پشت NAT یا فایروال هستید، پارامتر PersistentKeepalive=25 را در بخش Peer اضافه کنید. روی اندروید نیز بهینه‌سازی باتری را برای اپ WireGuard غیرفعال کنید.

اگر WireGuard در شبکه‌ای فیلتر شد چه جایگزینی دارم؟

چون WireGuard روی UDP کار می‌کند، برخی شبکه‌ها آن را محدود می‌کنند. در این حالت می‌توانید روی همان آی پی ثابت نت‌باز به پروتکل‌هایی مثل L2TP یا OpenVPN سوییچ کنید که روی پورت‌های متفاوت کار می‌کنند.

💬