چگونه IPsec مسیرمحور با رابط XFRM کار میکند
یک رابط XFRM به IPsec مسیرمحور دستگاهی میدهد تا از طریق آن مسیریابی کند. if_id، انجمنهای امنیتی پشت آن و مسیر بیرونی همه باید همتراز شوند.
IPsec مسیرمحور تصمیمی را که پیشتر انتخابگرهای خطمشی میگرفتند به جدول مسیریابی میسپارد. در لینوکس، قطعهای که این را ممکن میکند رابط XFRM است: دستگاهی مجازی که ترافیک آن با شناسه رابط، نه با انتخابگر، با وضعیت IPsec تطبیق داده میشود. ساختن یکی تنها یک فرمان میخواهد و هیچ چیز درباره وجود تونل اثبات نمیکند. دستگاه قلابی میان مسیریابی و خطمشی امنیتی است و هر دو سوی این قلاب باید پیش از محافظت از هر چیزی پیکربندی شوند.
دستگاه چیست و چه چیزی نیست
رابط XFRM دستگیرهای برای مسیریابی است. بستههایی که به آن مسیریابی میشوند با خطمشیهای XFRM که به همان شناسه رابط ارجاع میدهند تطبیق داده میشوند و اگر خطمشی و وضعیتی وجود داشته باشد، کپسوله میشوند. بدون آنها رابط وجود دارد، شمارندهها ثابت میمانند و ترافیک به جایی بیفایده میرود.
این نخستین تفکیک تشخیصی است. مسیر به درون دستگاه یک واقعیت مسیریابی است، وضعیت نصبشده یک واقعیت امنیتی است، و شمارنده صعودی روی دستگاه هیچیک از این دو نیست. وقتی مردم میگویند تونل بالا است چون رابط UP نشان میدهد، پرچمهای پیوند دستگاهی مجازی را توصیف میکنند که همتای خود را ندارد. پرچم یعنی دستگاه ساخته و فعال شده است، نه بیشتر.
یک مرز دیگر: شناسه رابط یک نام نیست. دو دستگاه با نامهای مشابه و شناسههای متفاوت وضعیت را شریک نمیشوند، و اتصالی که با شناسه اشتباه پیکربندی شده وضعیتی نصب میکند که هیچ مسیری هرگز از آن استفاده نخواهد کرد.
یکی را به ترتیب درست بسازید
با دستگاه بیرونی و عددی شروع کنید که آن را در پیکربندی دیمن هم میگذارید. مثال از eth0 به عنوان رابط بیرونی و 42 به عنوان شناسه استفاده میکند، نشانیهایی که باید با نشانیهای خودتان جایگزین کنید.
دستگاه را بالا بیاورید، سپس شناسهای را که کرنل ثبت کرده پیش از دست زدن به پیکربندی VPN تأیید کنید:
sudo ip link add xfrm0 type xfrm dev eth0 if_id 42
sudo ip link set xfrm0 up
ip -d link show xfrm0 | grep -o 'if_id [0-9]*'اکنون اتصال را در strongSwan با همان شناسه پیکربندی کنید، چون دیمن باید خطمشیها و وضعیتهایی نصب کند که به آن ارجاع میدهند. انتخابگرهای ترافیک محلی و دور را روی محدودهای بگذارید که میخواهید مسیریابی کنید، سپس آن محدوده را به دستگاه مسیریابی کنید. پیکربندی دیمن و جدول مسیریابی باید هم در شناسه و هم در مقاصد توافق داشته باشند و هیچیک دیگری را تأمین نمیکند.
IKE و ESP را از مسیر تونل بیرون نگه دارید
مسیر پیشفرضی که به دستگاه XFRM اشاره میکند بستههای کپسوله و ترافیکی را که حمل میکنند میگیرد. نتیجه یک حلقه است: دروازه تلاش میکند ESP خودش را از تونلی بفرستد که قرار است ESP بسازد.
راهحل مسیری مشخصتر برای نشانی بیرونی همتا از طریق رابط فیزیکی است که بر پیشفرض پیروز میشود چون بیتهای بیشتری را مطابقت میدهد. مسیریابی مبتنی بر نشانه همان کار را وقتی چند تونل یک جدول را شریک میشوند انجام میدهد و strongSwan هر دو رویکرد را برای استقرارهای مسیرمحور مستند میکند.
هر چه انتخاب کنید، بررسی کنید که بسته بیرونی بدون کپسوله خارج شود. بررسی سریع این است که پس از بالا آمدن تونل، نشانی بیرونی همتا را پینگ کنید؛ اگر در حالی که رابط بالاست شکست خورد، به جای دسترسپذیری به گرفتن ترافیک مشکوک شوید. همان استدلال برای درگاه IKE صدق میکند، چون ترافیک UDP خود دیمن نباید به دستگاهی مسیریابی شود که میخواهد برپا کند.
پیش از سرزنش رمزنگاری، شمارندهها را در دو جا بررسی کنید
شمارندههای رابط و شمارندههای وضعیت مراحل متفاوتی را میسنجند. بستههای مسیریابیشده به دستگاه حتی وقتی هیچ وضعیتی مطابقت ندارد شمارنده دستگاه را بالا میبرند، در حالی که شمارندههای وضعیت فقط برای ترافیکی حرکت میکنند که واقعاً کپسوله شده است.
هر دو را بخوانید، سپس دید دیمن نسبت به انجمن فرزند را بخوانید:
ip -s link show xfrm0
sudo ip xfrm state list | grep -E 'src|proto|mode'
sudo swanctl --list-sasبالا رفتن شمارندههای دستگاه با خروجی وضعیت خالی یعنی مسیریابی کار میکند و خطمشی مطابقت ندارد، معمولاً خطای شناسه یا انتخابگر. بالا رفتن شمارندههای وضعیت در حالی که طرف دور چیزی گزارش نمیکند یعنی بستهها خارج میشوند اما نمیرسند یا احراز هویت را رد نمیکنند، که به مسیر یا پیکربندی همتا اشاره دارد. انجمن فرزند فهرستشده با ترافیک صفر مشکلی در انتخابگر در یک سو است، نه رمز خراب.
تصمیم بگیرید چه کسی مسیرها را نصب میکند
دو مالک برای یک جدول مسیریابی منبع معمول نوسان است. اگر دیمن مسیرها را خودکار نصب میکند، مدیر شبکه شما نیز نباید مسیر پیشفرضی از همان دستگاه نصب کند، و مسیر دستیای که اسکریپت راهاندازی افزوده در پیکربندی مجدد بعدی دیمن حذف خواهد شد.
یک مالک انتخاب کنید و آن را بنویسید. وقتی دیمن مالک مسیرهاست، اسکریپت راهاندازی را بیرون از جدول نگه دارید و بگذارید تعریف اتصال انتخابگرهای ترافیک را توصیف کند. وقتی مدیر شبکه مالک آنهاست، نصب خودکار را غیرفعال کنید و بپذیرید که دیمن مسیر گمشده را هنگام اتصال مجدد تعمیر نخواهد کرد.
قواعد ارسال و دیوار آتش تصمیمی جدا روی این است، چون دروازهای که ترافیک میزبانهای دیگر را عبور میدهد به هر دو نیاز دارد. IPsec مسیرمحور بیان آن ترافیک را با ابزارهای مسیریابی معمولی آسان میکند؛ لایه خطمشی را اختیاری نمیکند.