فرم‌های فایروال یک پورت TCP می‌خواهند و ورودی بدیهی 50 است. این ورودی هیچ چیز را مجاز نمی‌کند، چون ESP پروتکل IP شماره 50 است و شماره‌های پروتکل پورت نیستند. این دو فضای نام فقط اعداد صحیح کوچک را مشترک دارند و هیچ چیز دیگری، و این خطا تا زمانی که IKE تمام شود و ترافیک محافظت‌شده هرگز نرسد، نامرئی می‌ماند.

دو فضای نام که اعداد کوچک را مشترک دارند

سرآیند IP یک فیلد پروتکل دارد که نام چیزی را می‌گوید که بعد می‌آید: 6 برای TCP، 17 برای UDP، 1 برای ICMP، 50 برای ESP، 51 برای AH. سرآیند TCP یا UDP شماره‌های پورت را حمل می‌کند که یک فرایند را روی میزبان مقصد انتخاب می‌کنند. پروتکل 50 و پورت TCP 50 مقادیر بی‌ارتباطی هستند که یک کادر گفتگو می‌تواند آن‌ها را قابل تعویض نشان دهد.

به همین دلیل قاعدهٔ هدایت پورت نمی‌تواند ESP بومی را بیان کند. هیچ پورت مقصد ESP برای هدایت وجود ندارد و دستگاهی که فقط قواعد پورت را می‌فهمد، هیچ واژگانی برای این بسته ندارد. قاعدهٔ درست به‌جای آن پروتکل IP را نام می‌برد. هر کادر گفتگوی پورت ابزار اشتباهی برای این بسته است.

این سردرگمی نیمهٔ دومی هم دارد. وقتی بسته رمزنگاری شده است، هر چیزی درون آن مات است، از جمله سرآیند TCP اتصال اصلی. فایروالی که پورت‌های آن بسته را بررسی می‌کند، به سرآیند بیرونی نگاه می‌کند که در حالت بومی هیچ پورتی برای بررسی ندارد.

ESP بومی، سپس گزینهٔ کپسوله‌شده

ESP بومی مستقیماً به‌عنوان یک پروتکل IP حمل می‌شود که هم کارآمد است و هم به همان اندازه دشوار. کارآمد است چون سرآیند اضافه‌ای وجود ندارد، و دشوار است چون هر دستگاهی که ترجمهٔ نشانی و پورت انجام می‌دهد نمی‌تواند آن را دنبال کند. عبور NAT برای حل همین وجود دارد: بستهٔ ESP را درون UDP می‌پیچد تا مترجم پورت‌هایی برای بازنویسی داشته باشد.

Form on the wireHow it is identifiedWhat the firewall must permit
IKE negotiationUDP with a destination portUDP 500, and 4500 once traversal is detected
Native ESPIP protocol 50 in the outer headerThe protocol itself, with no port to name
ESP inside UDPUDP 4500 carrying an ESP payloadThe UDP port pair, which translation devices can track

این دو شکل، استقرارهای جایگزین همان کانال داده هستند، نه لایه‌هایی از یک کانال. مجاز کردن ESP بومی شکل کپسوله‌شده را مجاز نمی‌کند و مجاز کردن UDP 4500 ترافیک بومی را مجاز نمی‌کند، بنابراین مجموعهٔ قواعد باید با استقرار بخواند نه اینکه تصادفی هر دو را بپوشاند.

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

بخوانید که اتصال واقعاً از کدام شکل استفاده می‌کند

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

ip xfrm state | grep -A3 encap
tcpdump -ni any 'ip proto 50 or udp port 4500'

فرمان اول وقتی عبور NAT در کار است نوع کپسوله‌سازی را نشان می‌دهد و وقتی نیست هیچ چیز. دومی نشان می‌دهد کدام یک از دو شکل واقعاً از رابط می‌گذرد و این بحث‌ها دربارهٔ پیکربندی‌ای را که روی کاغذ درست به نظر می‌رسد پایان می‌دهد.

شواهد مخالف به همان گام تعلق دارد. قاعده‌ای که صفر تطابق گزارش می‌کند به شما می‌گوید بسته هرگز به آن نرسیده است و این مسئلهٔ مسیریابی یا انتخابگر است، نه فایروال.

سپس کانال کنترل را جداگانه تأیید کنید. IKE پورت‌ها و گزارش‌های خودش را دارد و مذاکرهٔ کامل‌شده بدون داده دقیقاً همان جدایی است که این مقاله دربارهٔ آن است.

قاعده را در فضای نام درست بنویسید

قاعدهٔ پروتکل و قاعدهٔ پورت دستورهای متفاوتی هستند، پس ابزار باید همانی را بیان کند که منظور شماست. در nftables تطبیق پروتکل صریح است و گزینهٔ کپسوله‌شده قاعدهٔ UDP خودش را می‌گیرد. دو قاعده را کنار هم نگه دارید تا این جفت در بازبینی دیده شود.

nft add rule inet filter input ip protocol esp accept
nft add rule inet filter input udp dport { 500, 4500 } accept

در برابر وسوسهٔ گستردن هر یک از قواعد برای جبران یک تشخیص نادرست مقاومت کنید. مجاز کردن همه‌چیز برای پروتکل ESP روی هر رابط، یا مجاز کردن UDP از هر جایی به هر جایی، یک نشانه را درمان می‌کند و کنترلی را که می‌خواستید تنظیم کنید از بین می‌برد. جریان باریک پشتیبانی‌شده تقریباً همیشه کافی است، به‌محض اینکه شکل معلوم شود.

در پایان، وقتی تونل کار می‌کند و برنامه کار نمی‌کند، لایه‌ها را درست نگه دارید. بسته‌هایی که به دروازه می‌رسند هنوز به هدایت، مسیر بازگشت و سیاستی نیاز دارند که آن‌ها را بپذیرد و هیچ‌یک از این‌ها با قاعدهٔ ESP بیان نمی‌شود. پورت گمشده یک شکست مشخص را توضیح می‌دهد، نه هر شکست IPsec را. اصلاح قاعده و بررسی مسیریابی را دو نتیجهٔ جداگانه نگه دارید.

شکلی را که مشاهده کردید، قاعدهٔ پروتکلی را که افزودید و شمارنده‌ای را که بعداً دیدید ثبت کنید. سه خط، و نفر بعدی می‌تواند در یک دقیقه به‌جای یک بعدازظهر، خطای فضای نام را از خطای مسیریابی تشخیص دهد.

مقالات مرتبط