يمكن أن تتبع الحزم مسار OpenVPN ومع ذلك تلتقطها سياسة IPsec، وهذا المزيج يبدو من كل زاوية علة في التوجيه إلا من الزاوية الصحيحة. يحل Linux المسار ثم يستشير قاعدة بيانات سياسات أمنية منفصلة، لذلك لا يزيح مسار وجهة أكثر تحديدًا سياسة XFRM مطابقة. العَرَض الظاهر هو حزم تغادر المضيف ولا تصل أبدًا، بينما يعلن النفقان أنهما سليمان. ثمة ثلاثة خيارات تحل ذلك، وأيها تختار يعتمد على أي المسارين يُقصد به حمل تلك البادئة.

قراران، لا قرار واحد

يجيب اختيار المسار عن سؤال ضيق: أي قفزة تالية وعنوان مصدر يجب أن يحملا هذه الحزمة. وتجيب قاعدة بيانات السياسات الأمنية عن سؤال مختلف: هل تحتاج هذه الحزمة إلى حماية IPsec، وتحت أي محددات. كلاهما يعمل على الحزمة نفسها، والوفاء بالأول لا يقول شيئًا عن الثاني. ولهذا فإن تغيير مقياس أو إضافة مسار ثابت قد يترك العَرَض كما هو.

المحدد الواسع في IPsec هو السبب المعتاد. السياسة التي تحمي 172.16.0.0/12 تغطي أيضًا 172.20.8.0/24، وهو ما قد يقصد المسؤول الوصول إليه عبر نفق OpenVPN بدلًا من ذلك. النية موجودة في جدول التوجيه فقط، ولم تعرف قاعدة بيانات السياسات عنها شيئًا.

تعامل مع ذلك كتعارض بين مساري حماية مكوَّنين لا كصراع بين مقياسين. الإصلاح ينتمي إلى المكوّن الذي كُوِّن بنطاق خاطئ.

اقرأ المسار الذي تختاره النواة فعليًا

ابدأ بالبحث الذي تجريه النواة، بما في ذلك عنوان المصدر وأي قاعدة سياسة قد تحوّله إلى جدول آخر. قد لا يُستشار مسار في الجدول الرئيسي أبدًا إذا اختارت قاعدة سابقة جدولًا مختلفًا، ومطابقة أطول بادئة تنطبق فقط داخل الجدول الذي تختاره القاعدة.

ip rule show
ip route show table all
ip route get 172.20.8.20 from 10.44.7.15

الأمر الأخير هو المهم، لأنه يطبع المسار المختار مع عنوان المصدر الذي ستستخدمه النواة. قارن هذا الناتج بالمحدد الذي تطابقه سياسة IPsec. عندما يشير المسار إلى واجهة OpenVPN وما زالت السياسة تطابق الزوج نفسه، تكون قد أعدت إنتاج التعارض دون تخمين.

أبقِ التفريغات خالية من العناوين غير ذات الصلة قبل أن تصل إلى تذكرة. جدول التوجيه من مضيف إنتاجي يحمل طوبولوجيا داخلية، والخطوط التي تجيب عن السؤال وحدها تستحق اللصق.

اقرأ السياسة التي تنطبق أيضًا

يسرد بيان السياسة الاتجاه والمحددات والقالب الذي يقرر ما يحدث للحزمة المطابقة. اقرأ الاتجاه الصادر أولًا، ثم الجانب الوارد لحركة العودة، لأن الاستثناء أحادي الاتجاه ينتج اتصالًا يبدأ ولا يكتمل أبدًا.

ip -s xfrm policy
swanctl --list-sas

قارن المحددات في القائمة بالبادئات التي تفاوض عليها الاتصال. تعطيل تثبيت المسار في strongSwan لا يزيل تلك السياسات، وتغيير مقياس لا يغيّر زوج المصدر والوجهة الذي تحميه السياسة. هذان الإصلاحان الزائفان يستحقان الاستبعاد مبكرًا لأنهما أول ما يجرّبه الناس.

إذا لم تحتوِ القائمة على سياسة للبادئة التي توقعت، فالمشكلة في مكان آخر وجدول التوجيه على الأرجح يقول الحقيقة. وإذا كانت تحتوي على سياسة أوسع تغطي البادئة، فقد وجدت الالتقاط.

ثلاثة خيارات عندما يكون المساران مشروعين

تضييق محدد IPsec هو أنظف خيار عندما كانت البادئة الواسعة تسهيلًا لا شرطًا. تقليل محدد حركة الطرف البعيد إلى الشبكات الفرعية التي تنتمي فعلًا خلف IPsec يزيل التعارض لكل مضيف دفعة واحدة، ويكلف إعادة مفتاح لا مكوّنًا جديدًا.

استثناء المرور هو الخيار الجراحي عندما يجب أن يبقى المحدد الواسع. يدعم strongSwan اتصالًا منفصلًا يستخدم فيه العنصر الفرعي وضع pass، وهو يخبر النواة بأن الحركة المطابقة يجب ألا تعالجها IPsec. يحفظ عنوان الطرف البعيد الخاص بالloopback هذا الاتصال من أن يُختار للنظراء الواردين، ويجب أن تصف المحددات الزوج المصرح به الحقيقي لا كل شيء.

connections {
    openvpn-exception {
        remote_addrs = 127.0.0.1
        children {
            openvpn-exception {
                local_ts = 10.44.7.0/24
                remote_ts = 172.20.8.0/24
                mode = pass
                start_action = trap
            }
        }
    }
}

توثّق أمثلة إعداد strongSwan هذا النوع من السياسات واصطلاح النظير عبر loopback. والخيار الثالث هو تصميم قائم على التوجيه بواجهات XFRM، وهو يربط السياسة بالحركة الموجَّهة عبر واجهة مسماة بدلًا من محدد عام. إنه ترحيل لا تعديل بسيط، ويجب أن تحقق الحركة المحددات المتفاوض عليها.

OptionUse it whenCost
Narrow the selectorThe broad prefix was convenienceA rekey and a policy review
Passthrough childThe broad selector must stayOne exception per intended pair
XFRM interfacePolicy should follow routingA design migration

أثبت الاستثناء دون إضعاف الباقي

بعد تحميل التغيير، اختبر الاستثناء ووجهة عادية يجب أن تبقى محمية. افحص الاتجاهين، ثم أسقط نفق OpenVPN وتأكد مما يحدث للحركة المستثناة. الاستثناء الذي يرسل تلك البادئة في العراء بصمت عندما يكون النفق معطلًا هو قرار سياسة يجب أن تتخذه عن قصد، لا أن تكتشفه أثناء حادث.

سجّل أي بادئة تستخدم أي مسار ولماذا. وإلا فإن المهندس التالي الذي يرى محددًا واسعًا سيعيد فتح التحقيق نفسه، وستكون الإجابة في رسالة commit لا يقرأها أحد.

مقالات ذات صلة