هندشیک برقرار، نشانی رفته: سه وضعیت WireGuard
یک هندشیک تازه ثابت میکند که همتا پاسخ داده است، نه اینکه رابط نشانی خود را نگه داشته یا بسته بعدی از بالاسری موردنظر برود.
WireGuard میتواند همزمان هندشیک تازه داشته باشد و هیچ نشانی نداشته باشد، و این وضعیت سازگار است نه متناقض. هندشیک رویدادی مربوط به همتاست، نشانی به رابط تعلق دارد، و مسیر تعیین میکند که بسته از کدام بالاسری خارج شود. سه لایه، سه مالک، و هر یک میتواند خراب شود در حالی که دو تای دیگر سالم به نظر میرسند.
خواندن آنها بهعنوان یک وضعیت همان چیزی است که تشخیصی دو دقیقهای را به یک بعدازظهر کامل راهاندازی دوباره سرویسها تبدیل میکند.
هندشیک رویدادی مربوط به همتاست، نه رویدادی مربوط به نشانیدهی
هندشیک WireGuard ثابت میکند که همتای پیکربندیشده با کلید معتبر پاسخ داده و کلیدهای نشست بهروزند. درباره نشانی محلی روی رابط چیزی نمیگوید، و نه درباره اینکه مسیری به آنجا اشاره کند. نشانی را یک کمککننده یا مدیر شبکه تخصیص میدهد، در حالی که پیکربندی پروتکل فقط همتاها و کلیدها را نام میبرد. اشتباه گرفتن این دو همان چیزی است که باعث میشود هندشیک سالم بهعنوان تونل کارکننده خوانده شود.
به همین دلیل wg show میتواند هندشیکی چندثانیهای را روی رابطی گزارش کند که حتی یک بسته از یک برنامه را نمیپذیرد.
مدیری که رابط را دوباره میسازد میتواند نشانی را بیندازد بدون اینکه به پیکربندی همتا دست بزند، و هندشیک بعدی بیدرنگ موفق میشود چون کلیدها هرگز تغییر نکردهاند. سطر گزارش درباره هندشیک موفق دقیق است و به خرابی ربطی ندارد.
| Observation | Which layer it belongs to | Wrong conclusion it invites |
|---|---|---|
| Handshake a few seconds old | Peer and keys | The tunnel is usable for application traffic |
Address present on wg0 | Interface configuration | Traffic actually egresses through it |
Route points at wg0 | Forwarding table | The outer packet uses the intended uplink |
نشانی رابط مالک خودش را دارد
نشانی روی دستگاه تونل میتواند از سطر Address یک کمککننده بیاید، از یک کلاینت DHCP که روی رابط اجرا میشود، یا از یک دیمن مدیریت که آن را هنگام اتصال میسازد. هر چه باشد، همان جزء مالک نشانی است و بر اساس منطق خودش آن را بازمیگرداند یا نه. خواندن نشانی بدون نام بردن از مالکش شما را ناتوان میگذارد از توضیح اینکه چرا ناپدید شد.
دو مالک روی یک رابط خرابی کلاسیک است. راهاندازی یک کمککننده و یک مدیر شبکه رومیزی روی یک دستگاه مسابقهای میسازد که در آن یکی چیزی را که دیگری تازه پیکربندی کرده حذف میکند، و نقطه پایانی در تمام مدت پاسخ میدهد.
یک مالک انتخاب کنید و بگذارید ابزار دیگر بهجای مدیریت فقط مشاهده کند. این تصمیم ارزش نوشتن دارد، چون نشانه هفتهها بعد ظاهر میشود و شبیه از دست رفتن تصادفی نشانی است.
بالاسری را مسیر انتخاب میکند، نه رابط
یک مسیر داخلی که به wg0 اشاره میکند تعیین میکند که ترافیک وارد تونل شود. تصمیمی جدا بستههای بیرونی رمزنگاریشده را به سمت همتا میفرستد، و روی میزبان دارای چند بالاسری آن تصمیم از جدول ارسال و قواعد سیاست میآید. یک رومینگ Wi-Fi میتواند مسیر بیرونی را بدون دست زدن به نشانی داخلی تغییر دهد.
پس تونل کارکننده و همتای غیرقابلدسترس وضعیتهای سازگارند، و همچنین همتای درست با مسیر داخلی خراب. سه مشاهده باید با هم و در یک لحظه گرفته شوند، وگرنه مقایسه بیمعناست.
سه وضعیت را در یک گذر مقایسه کنید
سه فرمان فقطخواندنی به سه پرسش در ترتیبی پاسخ میدهند که خرابی را سریعتر جدا میکند. آنها را بدون تغییر چیزی در میانشان اجرا کنید.
ip address show dev wg0
ip route get 10.80.0.1
wg show wg0 latest-handshakes transfer
اولی نشان میدهد آیا رابط اصلاً نشانی دارد، و دومی نشان میدهد یک مقصد مشخص اکنون از کدام دستگاه استفاده میکرد. سومی زمان آخرین هندشیک و شمارندههای بایت را گزارش میکند، و تنها یکی از این سه است که همتا را توصیف میکند نه میزبان محلی را.
شمارندهها را همراه با برچسب زمان بخوانید. هندشیکی که مدام تازه میشود در حالی که انتقال ثابت میماند یعنی همتا پاسخ میدهد اما چیز مفیدی عبور نمیکند، که به مسیریابی یا یک ACL اشاره دارد نه به کلیدها. برچسب زمانی که با وجود نشانی از پیش رفتن میایستد به سمت بالادست اشاره میکند. هر دو خوانش از یک سطر خروجی میآیند، و اگر فقط وجود هندشیک را بررسی کنید هیچکدام دیده نمیشود.
وضعیت مشخصی را که غلط است درست کنید، سپس برنامه را دوباره بیازمایید نه تونل را. هندشیک تازه شاهد درباره همتاست، و شاهد درباره همتا شاهدی بر این نیست که درخواست بعدی مرورگر شما نشانی، مسیر و بالاسری کارکننده پیدا میکند. راهنمای wg-quick صریح میگوید کدام یک از اینها را کمککننده برپا میکند و کدام به پروتکل تعلق دارد.