دستدادن WireGuard موفق میشود، اما هیچ پاسخی برنمیگردد
یک دستدادن اخیر ثابت میکند که کلیدها کار میکنند. یک نشانی درونی را دنبال کنید و شمارندههای انتقال را بخوانید، پیش از آنکه تونل، firmware یا کلیدها را سرزنش کنید.
دستدادنهای اخیر خبر خوبی هستند و ادعایی بسیار کوچکتر از جملهای که آدم میخواهد بنویسد. دو طرف پیامهای دستدادن احرازشده را مبادله کردند. بستهٔ برنامه هنوز باید به مقصد درونی خود برسد و برگردد.
همین شکاف میان یک صفحهٔ کنترل سالم و یک صفحهٔ دادهٔ خاموش کل موضوع اینجاست. دو قرائت از همان شمارندهها به شما میگوید در کدام سمت آن هستید.
دستدادن کلیدها را ثابت میکند، نه تحویل را
دستدادن WireGuard یک توافق کلید همراه با احراز هویت است. بهمحض اینکه دو طرف بتوانند به هم برسند و کلیدهای معتبر داشته باشند، موفق میشود. مسیریابی، سیاست دیوار آتش و خودِ مقصد پرسشهایی که دستدادن هرگز نمیپرسد.
پس تونل میتواند کاملاً برپا باشد در حالی که هر بسته درونش دور انداخته میشود. یک بستهٔ درونی بدمسیریابیشده و پاسخی که راه دیگری میرود از دید کارخواه یکسان به نظر میرسند.
یک نشانی درونی تمام آزمون است
یک مقصد برگزینید و به آن پایبند بمانید. نشانی تونل خودِ طرف مقابل سادهترین حالت است، و یک میزبان پشت آن طرف دقیقاً یک گام اضافه میکند. جابهجایی میان آن دو بدون ثبت تغییر، نتایجی میدهد که هیچکس نمیتواند مقایسه کند.
سپس به مسیری نگاه کنید که کارخواه برمیگزیند. یک مسیر محلی مشخصتر میتواند بسته را پیش از آنکه اصلاً از WireGuard پرسیده شود جای دیگری بفرستد، و این هر وقت رخ میدهد که شبکهٔ محلی خانه با محدودهٔ دوردست همپوشانی داشته باشد.
ip route get 10.30.8.10
ip -4 addr show wg0
ip route show table all | grep -w wg0
نشانیای که به واسط فیزیکی تفکیک میشود پیشتر به پرسش پاسخ داده است. تونل چیزی را دور نمیاندازد. بسته هرگز وارد آن نشد.
شمارندهها شاهدند، نه حکم
wg show بایتهای ارسال و دریافتشده بهازای هر طرف را گزارش میکند، و این دو عدد مستقل از هم حرکت میکنند. یک قرائت بگیرید، یک درخواست مجاز بفرستید، سپس در همان دقیقه قرائت دیگری بگیرید.
wg show wg0 transfer
wg show wg0 latest-handshakes
ping -c 4 10.30.8.10
wg show wg0 transfer
بالا رفتن ارسال با ثابت ماندن دریافت، امضای درخواستی بیپاسخ است. نمیگوید که درخواست پالایش شده، مقصد خاموش بوده، یا پاسخ از مسیر دیگری رفته است. اینها سه بررسی با یک نشانهاند. پیش از تغییر هر تنظیمی آنها را از هم جدا کنید.
عدد ثابتی از بایت هم آستانهٔ موفقیت نیست. مقدار شمارندهها از ترافیک پیروی میکند، و در نظر گرفتن یک عدد بهعنوان شاهد سلامت، بیمعنیِ خودباورانه تولید میکند.
طرف مقابل خودش بستهٔ برگشتی را بررسی میکند
طرف دوردست بستهٔ درونی را تنها زمانی میپذیرد که مبدأ درون allowedips آن طرف بیفتد. مسیری که روی فرستنده وجود دارد کافی نیست. نبودِ ورودی مبدأ در گیرنده ترافیک برگشت را بیصدا دور میاندازد.
دیوارهای آتش میزبان پشت آن بررسیاند. قاعدهٔ ارسال مجددی که واسط تونل را مجاز میداند ولی زیرشبکهٔ درونی را نه، دستدادن را میپذیرد و بسته را رد میکند. از سمت کارخواه این دقیقاً مانند یک طرف مرده به نظر میرسد. میزبانی با دو واسط هم میتواند از مبدأ اشتباه پاسخ دهد، و آنگاه طرف مقابل پاسخی را که هرگز انتظار نداشت دور میاندازد.
آزمایش را صادقانه نگه دارید
آزمودن یک نمایهٔ دسترسی دوردست از همان شبکهٔ خانهای که باید به آن برسد، مسیری متفاوت از مسیر مقصود را به کار میاندازد. به شبکهٔ بیرونی بروید و پیشوند محلی آن را ثبت کنید، تا دو اجرا قابل مقایسه باشند.
یک تبادل کوچک موفق هم همهٔ مشکلات مسیر را رد نمیکند. بستههای بزرگتر میتوانند جایی شکست بخورند که بستههای کوچک عبور میکنند، و پالایهای که بر اندازه یا پروتکل منطبق میشود ممکن است زیر بار رفتار دیگری داشته باشد.
دستدادن را بهعنوان مرحلهٔ شناختهشدهٔ کارآمد نگه دارید و از آن پیش بروید. شاهد سودمند بعدی این است که یک درخواست درونی کجا میایستد، نه یک دستهٔ تازه کلید و دور دیگری از حدس.