فهرست کردن یک اتصال در پیکربندی strongSwan فقط اثبات می‌کند که یک تعریف بارگذاری شده است. این به معنای آن نیست که با همتا تماس گرفته شده، SA مربوط به IKE وجود دارد یا ترافیکی محافظت می‌شود. دیمن تعریف‌ها و انجمن‌های زنده را اشیای جداگانه می‌داند و فاصله میان آن‌ها یک انتخاب طراحی آگاهانه است. دانستن اینکه کدام شیء را بررسی می‌کنید، یک خرابی مبهم را به فرمان بعدی مشخص تبدیل می‌کند.

بارگذاری، اتصال نیست

اتصال بارگذاری‌شده بیانیه‌ای است درباره آنچه بعداً می‌تواند مورد مذاکره قرار گیرد: نشانی‌های همتا، اعتبارنامه‌ها، پیشنهادها و انتخابگرهای ترافیک. هیچ چیز در این بیانیه ایجاب نمی‌کند که دیمن با کسی تماس گرفته باشد. یک دروازه می‌تواند منتظر طرف دیگر بماند، هنگام راه‌اندازی خود شروع کند یا منتظر بماند تا ترافیک متناظر بیدارش کند. هر سه معتبرند و هر سه تا زمانی که سیاست آغاز را نخوانید در پرونده پیکربندی یکسان به نظر می‌رسند.

کاربران هنگام خواندن فهرست تعریف‌ها به‌عنوان فهرست وضعیت دچار مشکل می‌شوند. پروفایل وجود دارد، پس فرض می‌شود تونل بالاست و ساعت بعدی صرف اشکال‌زدایی مسیرها برای انجمنی می‌شود که هرگز ساخته نشده است.

خطای معکوس هم به همان اندازه رایج است. نبود پروفایل افراد را به جست‌وجوی خرابی شبکه می‌فرستد، در حالی که پیکربندی هرگز بارگذاری نشده است. شیء را نام ببرید و سپس فرمانی را اجرا کنید که آن را مشاهده می‌کند.

سه شیء، سه مشاهده

strongSwan یک تعریف بارگذاری‌شده، یک SA مربوط به IKE و یک SA مربوط به CHILD نگه می‌دارد. اولی پیکربندی است، دومی یک رابطه کنترل احرازشده و سومی محافظت مذاکره‌شده برای ترافیک برگزیده است. حتی نام‌های جداگانه دارند، بنابراین پروفایلی به نام hq می‌تواند childای به نام hq-lan داشته باشد.

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

LayerWhat it containsCommand
DefinitionPeer addresses, credentials, proposals, and traffic selectorsswanctl --list-conns
IKE SAOne authenticated control channel to the peerswanctl --list-sas
CHILD SAKeys and selectors for the traffic being protectedChild rows under the IKE SA

درخواست child نخست SA والد مربوط به IKE آن را می‌سازد وقتی هیچ‌کدام وجود ندارد. درخواست تنها SA مربوط به IKE فراخوان دیگری است. کانال کنترلی که درست احراز هویت می‌کند، child درخواستی را تضمین نمی‌کند.

این تفاوت در هنگام خرابی جزئی مهم است. SA مربوط به IKE می‌تواند سالم باشد در حالی که child به دلیل ناسازگاری انتخابگر یا پیشنهادی که همتا نمی‌پذیرد شکست می‌خورد. دو شیء به دلایل متفاوت شکست می‌خورند، پس شایسته مشاهده‌های جداگانه‌اند.

کنش آغاز را آگاهانه برگزینید

در swanctl.conf، start_action یک child رفتار پس از بارگذاری را تعیین می‌کند. مقدار پیش‌فرض none تعریف را برای آغاز دستی یا استفاده به‌عنوان responder رها می‌کند. start آن را شماره‌گیری می‌کند، در حالی که trap سیاستی باقی می‌گذارد که به‌محض ظهور ترافیک متناظر مذاکره می‌کند.

پس هم «بارگذاری هرگز تونلی آغاز نمی‌کند» و هم «بارگذاری همیشه یکی را آغاز می‌کند» نادرست‌اند. کنش بخشی از پروفایل است و باید با نقش همتا هم‌خوان باشد. دو دروازه که هر دو منتظر طرف دیگرند سکوت تولید می‌کنند، نه تونل.

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

بازیابی سیاستی جداگانه است

راه‌اندازی یک keepalive نیست. تشخیص همتای مرده، بستن صریح توسط همتا، تازه‌سازی کلیدها و راه‌اندازی دوباره فرایند رویدادهای متفاوتی از چرخه عمر با تنظیمات خودشان هستند. هر یک را آگاهانه پیکربندی کنید، به جای انتظار اینکه آغاز اولیه همه آن‌ها را پوشش دهد.

تونلی که هنگام بوت بالا می‌آید و یک ساعت بعد می‌میرد پرسشی از بازیابی است. سیاست آغاز کار خود را کرد و سپس بی‌اهمیت شد. پیش از سرزنش مذاکره اولیه به تنظیمات DPD و تازه‌سازی کلیدها نگاه کنید.

جایگزینی تعریف‌های بارگذاری‌شده عملیاتی جداگانه است. سیاست‌های آغاز غیرپیش‌فرض کنش‌های معکوس مستندشده دارند و بارگذاری دوباره یک تغییر عملیاتی است نه فرض بر اینکه هر انجمن در جا به‌روز شده است. بارگذاری‌های دوباره را مرحله‌ای انجام دهید، جایی که اتصال دوباره پذیرفتنی است. پیکربندی قدیمی را تا اثبات جدید نگه دارید.

پیش از اشکال‌زدایی مسیریابی بررسی کنید چه چیزی وجود دارد

سه مشاهده را به ترتیب اجرا کنید: تعریف‌های بارگذاری‌شده، SAهای فعال مربوط به IKE و ورودی‌های child. هر پاسخ پرسش بعدی را باریک می‌کند. یک گام را جا بیندازید و در پایان لایه‌ای را اشکال‌زدایی می‌کنید که هرگز ساخته نشده است.

با آنچه بارگذاری شده و آنچه واقعاً برقرار شده آغاز کنید:

swanctl --list-conns
swanctl --list-sas

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

swanctl --initiate --child hq-lan

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

مقالات مرتبط