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

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

عائلتان في الداخل، ومسار واحد في الخارج

الاتصال الخارجي هو IKE فوق UDP، ويحتاج إلى عائلة عناوين واحدة قابلة للوصول من أي مكان يكون فيه العميل. لا يتطلب العنوان الداخلي من IPv6 مزود خدمة يدعم IPv6، لأن الحزمة الداخلية حمولة داخل الحزمة الخارجية. وكثير من عمليات النشر العاملة ينقل بادئات IPv6 عبر وصلة صاعدة لا تدعم إلا IPv4.

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

امنح العميل عنوانًا في كل عائلة

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

pools {
  pool4 { addrs = 10.90.0.0/24 }
  pool6 { addrs = fd42:90::/64 }
}
connections {
  private-access {
    version = 2
    pools = pool4, pool6
    local  { auth = pubkey  certs = gateway.pem  id = vpn.example.com }
    remote { auth = pubkey  cacerts = ca.pem  vips = 0.0.0.0, :: }
    children {
      private { local_ts = 10.60.0.0/16, fd42:60::/48  remote_ts = dynamic }
    }
  }
}

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

أنشئ بادئة محلية فريدة خاصة بك بدلًا من نسخ البادئة الواردة في المثال. مؤسستان تنشران كلتاهما fd42::/16 ستكتشفان التعارض عند أول اتصال بينهما، وتشخيص ذلك أمر غير سار.

المحدّدات تصف الوجهات، لا المصادر

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

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

أبقِ المجمّعات وبادئات الخدمات في كتل منفصلة من خطة العناوين. فعندما تتقاطع، قد يطابق مسارٌ يجب أن يصل إلى مضيف محمي عنوانَ مجمّع فيتلاشى داخل النفق.

DNS ومسار الردّ يحدّدان ما إذا كان الأمر يبدو مكتملًا

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

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

تحقّق من العائلتين قبل أن تعتبره منتهيًا

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

swanctl --list-sas
swanctl --list-pools
ip -6 addr show scope global
ip -6 route get fd42:60::10

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

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

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