SA فرزند IPsec برپاست اما شمارندههای بسته صفر میمانند
شمارندههای صفر بسته روی یک SA فرزند نصبشده معمولاً یعنی هیچ چیز با آن منطبق نشده است. یک جریان مهارشده را از میان شمارندهها، مسیر، انتخابگرها و مبدأ ردیابی کنید.
تونل را بالا آوردید، زمانسنج بازتولید کلید در حال شمارش معکوس است و هر دو جهت هنوز صفر بسته نشان میدهند. این جفت عدد نمیگوید که همتای شما تونل را رد کرده است: یک CHILD SA نصبشده با شمارندههای بیکار، وضعیت عادی ارتباطی است که هنوز چیزی با آن منطبق نشده. کار این است که ثابت کنید بستهای باید منطبق میشد و سپس نقطهای را بیابید که در آن از مسیری که انتخابگرها توصیف میکنند خارج شده است. این کار را یکبار، به ترتیب انجام دهید و درخواست را بین اجراها یکسان نگه دارید.
شمارنده صفر در واقع چه چیزی را ثابت میکند
یک CHILD SA یک جفت انتخابگر بهعلاوهٔ کلیدها و SPIهایی است که ترافیک واقع در این محدودهها را رمزگذاری میکند. نصب آن فقط یعنی دو طرف بر این محدودهها و کلیدهای مشتقشده توافق کردهاند؛ هسته آن را ساعتها نگه میدارد بدون اینکه بستهای برسد. پس پرسش هرگز این نیست که آیا تونل وجود دارد، بلکه این است که آیا بستهای از آزمون شما در محدودههای مورد توافق دو طرف افتاده است. اگر نیفتاده باشد، شمارندهها صفر میمانند و ارتباط در پایان عمرش بدون استفاده منقضی میشود.
این تمایز تغییر میدهد که ابتدا چه چیزی را بررسی کنید. پیشنهاد ردشده، شکست احراز هویت یا IKE SA در حال مرگ همه در گزارش یا فهرست SA ظاهر میشوند، نه بهصورت صفر خاموش. تونلی که پاک مذاکره میکند و بعد بیکار میماند، بهجای آن به تطبیق، مسیریابی یا مبدأ ترافیک آزمون اشاره میکند.
جریانی بفرستید که پیش از فرستادن بتوانید توصیفش کنید
مقصدی درون زیرشبکهٔ محافظتشده انتخاب کنید و اتصال تازهای به آن باز کنید؛ صفحهای که یک ساعت پیش بارگذاری کردهاید ممکن است از حافظهٔ نهان ارائه شود و پاسخ نهانشده هرگز تونل را لمس نمیکند. سپس چهار مقدار را در حالی که درخواست هنوز فرضی است بنویسید: نشانی مبدأ که برنامه آن را مقید میکند، مقصد، خانوادهٔ نشانی، و نام یا جفت انتخابگر فرزندی که زیر نظر دارید. همین ثبت است که شمارندهٔ تخت را به ادعایی آزمونپذیر تبدیل میکند.
نشانی مبدأ همان مقداری است که مردم از آن میگذرند و بیش از همه آزمون را خراب میکند. لپتاپی با نشانی سیمی، نشانی Wi-Fi و نشانی تونل بسته به جستوجوی مسیر میتواند هر یک از آنها را مقید کند و تنها یکی ممکن است در محدودهٔ توافقشده باشد. از ابزاری استفاده کنید که مهار مبدأ را ممکن میکند، مانند ping -I 10.1.0.5 10.2.0.9 یا curl --interface 10.1.0.5، تا بسته نتواند بیصدا نشانی دیگری برگزیند. وقتی اجرای مهارشده شمارندهها را حرکت میدهد و اجرای مهارنشده نمیدهد، به مشکل مسیریابی برخوردهاید نه مشکل IPsec.
کدام عددها را بخوانیم و کجا زندگی میکنند
در Linux دستور ip -s xfrm state هر ارتباط را با خط lifetime current: چاپ میکند که مجموع بایت و بستهٔ آن فقط به همان SA تعلق دارد و پس از آن خط stats: برای شمارندههای بازپخش و خطا میآید. روی همتای strongSwan دستور swanctl --list-sas برای هر فرزند نصبشده یک خط in و یک خط out نشان میدهد که هر کدام با شمار بایت و شمار بسته پایان مییابد؛ ابزارهای قدیمیتر stroke همان جفت را bytes_i و bytes_o مینامند. دو جهت را جدا بخوانید، زیرا جهتی که تخت مانده یافته است. جمعکردن آن دو دقیقاً همان عدم تقارنی را پنهان میکند که دنبالش هستید.
هر دو نما بهازای هر ارتباط است، پس بازتولید کلید جفت SPI تازهای نصب میکند و خط پایهٔ شما بدون هیچ خرابی به صفر بازمیگردد. SPIای را که زیر نظر دارید پیش از فعالشدن زمانسنج بازتولید ثبت کنید، وگرنه SA تازه را با عددی کهنه مقایسه میکنید. اگر خروجی بالا برود و ورودی تخت بماند، انتخابگر منطبق شده و پاسخ هرگز برنگشته است، که بررسی را به ارسال همتا و سیاست خودش منتقل میکند. مستندات پیکربندی IKEv2 در strongSwan چرخهٔ عمر SA فرزند و زمان بازتولید پشت این اعداد را پوشش میدهد.
نقطهٔ مشاهده متغیری جدا از مبدأ بسته است. بارزدایی سختافزاری میتواند شمارندههای ارتباط را بالا ببرد در حالی که ضبط نرمافزاری روی فصل مشترک چیزی نشان نمیدهد، زیرا بستههای بارزداییشده از قلابی که ضبط روی آن نشسته میگذرند و ورودی هم میتواند به همین شکل واگرا شود. وقتی این دو توافق ندارند، با شمارندهها پاسخ دهید که آیا چیزی منطبق شد و با ضبط پاسخ دهید که بسته چه شکلی بود.
مسیر، انتخابگرها و جایی که بسته زاده شد
سه چیز را کنار هم بگذارید: مسیری که هسته برای مقصد شما برمیگزیند، سیاستی که ترافیک را به تونل میراند و جفت انتخابگری که فرزند مذاکره کرده است. ip route get 10.2.0.9 from 10.1.0.5 فصل مشترک و مبدأیی را نام میبرد که هسته استفاده میکرد و اغلب همان جفتی نیست که فرض کردهاید. ip xfrm policy قالبها و انتخابگرهای نصبشدهٔ محلی را نشان میدهد، در حالی که swanctl --list-sas نشان میدهد همتا بر چه چیزی توافق کرده است. جستوجویی که بسته را از فصل مشترک فیزیکی بیرون میفرستد هرگز به سیاست نمیرسد، پس شمارندهها نمیتوانند حرکت کنند.
ناسازگاریها به چند شکل میآیند که از دید شمارنده یکسان به نظر میرسند. مقصد IPv6 بیرون از انتخابگر IPv4، نشانی مبدأ از زیرشبکهٔ نادرست و سیاستی تنگتر از فرزند همه همان صفر را تولید میکنند. ابتدا تنگترین علت را درست کنید، زیرا گشادکردن یک انتخابگر فقط برای جابهجایی یک عدد، آنچه را تونل محافظت میکند تغییر میدهد.
سپس مبدأ بسته است، تلهای که دروازه برای گردانندهٔ خودش میگسترد. ترافیکی که دروازه خودش تولید میکند با سیاست خروج تطبیق داده میشود، در حالی که بستهای که برای کارخواه ارسال میکند با سیاست ارسال تطبیق داده میشود، پس ping از خود دستگاه میتواند در مسیری موفق شود که هیچ کارخواهی هرگز آن را نمیپیماید.
یک تغییر برگشتپذیر و گزارشی که از بازبینی جان سالم به در ببرد
فقط یک عنصر را تغییر دهید، همان درخواست را تکرار کنید و همان شمارندهها را بخوانید. پاککردن همهٔ قواعد دیوار آتش یا جایگزینی همهٔ انتخابگرها یکجا، عددی را جابهجا میکند و شاهدی را که به شما گفت چرا، نابود میکند. اگر اجرای دوم هنوز صفر نشان دهد، یک فرضیه را حذف کردهاید بهجای آنکه بعدازظهر را تلف کنید.
یافته را به شکلی بنویسید که دیگری بتواند بازتولید کند: نام فرزند، محدودههای پذیرفتهشده، مبدأیی که مهار کردید، مقصدی که آزمودید، جهتی که روی صفر ماند و SPIای که میخواندید. همان جمله یک ارتباط بیاستفاده را از برنامهای دوردست که ترافیک را دریافت و رد کرد جدا میکند. وقتی تغییر شمارندهها را حرکت نداد آن را برگردانید و ثبت را نگه دارید؛ نفر بعد از جایی شروع میکند که شما ایستادید. برای هیچکدام از اینها لازم نبود چیزی در تونل بازسازی شود و همین نکتهٔ بررسی تطبیق پیش از دستزدن به پیکربندی است.