لماذا لا تستطيع آلة GCP الافتراضية الرد على تجمّع OpenVPN لعناوين IPv6
العنوان داخل OpenVPN ليس شبكة فرعية في Google Cloud. أضف مسارًا في VPC إلى التجمّع، وفعّل التمرير، وابقِ الخروج إلى الإنترنت منفصلًا.
عميل VPN لديك على IPv6 يصل إلى الحمل، والحمل يرد داخل النفق، لكن الرد لا يصل أبدًا. الغريزة الأولى هي إلقاء اللوم على الجدار الناري أو على النفق، وليس أي منهما عادةً المذنب. العنوان الذي يمنحه OpenVPN هو شبكة داخلية لا وجود لها إلا داخل النفق؛ وGoogle Cloud لا يعلم أن fd42:90::/64 يُفترض أن يكون خلف آلة افتراضية معيّنة حتى تخبره بذلك.
نظامان منفصلان يجب أن يتعلما هذه الحقيقة، وواحد منهما فقط هو OpenVPN. تحتاج VPC إلى مسار قبل أن ترسل أي شيء إلى الوراء، ويجب السماح للآلة الافتراضية بتمرير ما يصل. أخطئ في أي نصف منهما وسيبدو العَرَض نفسه.
التجمّع شبكة داخلية وليس شبكة فرعية
يستطيع OpenVPN منح عناوين IPv6 من نطاق تختاره، وهذا النطاق خيال يتفق عليه طرفا النفق. إنه ليس شبكة فرعية في Google Cloud، ولا يظهر في قائمة الشبكات الفرعية في VPC، وواجهة شبكة الآلة الافتراضية لا تكتسب تلك العناوين. لذلك يرسل الحمل الذي يرد على عميل حزمة إلى عنوان تعتبره الشبكة غير قابل للتوجيه.
أبقِ التجمّع خارج كل نطاق تستخدمه VPC بالفعل. وأبقِه أيضًا خارج النطاقات الموجودة خلف أنفاقك الأخرى. يحوّل التداخل فشل التوجيه النظيف إلى فشل متقطّع لا يظهر إلا تحت الحمل.
العنونة المحلية الفريدة مثل fd42:90::/64 خيار معقول لهذه الشبكة الداخلية. وتعمل البادئة أيضًا كتذكير بأن التصميم خاص بطبيعته. ولا شيء في تجمّع ULA يجعله مصدرًا شرعيًا على الإنترنت العام.
أعطِ VPC وجهة وقفزة تالية
يحتاج الرد إلى مسار في VPC تكون وجهته التجمّع وقفزته التالية آلة VPN الافتراضية. تغطي وثائق المسارات الساكنة الحالية نطاقات وجهات IPv6 وتسرد أنواع القفزات التالية المؤهلة، لذا تحقّق من الصيغة المدعومة لطوبولوجياك بدلًا من نسخ مثال قديم لـ IPv4.
يجب أن يكون عنوان القفزة التالية عنوانًا مُسنَدًا فعليًا إلى واجهة السحابة الخاصة بالنسخة. عنوان النفق الداخلي للآلة الافتراضية ليس ذلك العنوان. واستخدامه مع ذلك ينتج مسارًا يُثبَّت بسلاسة ولا يطابق أي حزمة أبدًا. اقرأ قائمة الواجهات قبل كتابة المسار.
أولوية المسار لا تقل أهمية عن الإدخال نفسه. مسارات الشبكات الفرعية أكثر تحديدًا من المسارات المخصصة التي تضيفها، لذا فإن تجمّعًا مقتطعًا من نطاق شبكة فرعية قائمة سيخسر أمام مسار الشبكة الفرعية مهما كُتب المسار المخصص. اختر تجمّعًا مميزًا، ثم تأكد من أن المسار يُظهر النسخة كقفزة تالية وبادئة الوجهة الصحيحة:
gcloud compute routes create vpn6-return \
--network=vpn-vpc \
--destination-range=fd42:90::/64 \
--next-hop-instance=openvpn-vm \
--next-hop-instance-zone=europe-west1-bيجب تفعيل التمرير مرتين
المسار يسلّم الحزمة إلى النسخة. لكنه لا يجعل النسخة مستعدة لتمرير شيء غير موجّه إليها، وهذا الإذن موجود على طبقتين.
يحتاج جانب السحابة إلى تفعيل قدرة التمرير على النسخة، وهي الإعداد الذي يسمح للآلة الافتراضية باستقبال حركة لعناوين لا تملكها وتمريرها. ويحتاج جانب الضيف إلى تمرير IPv6 الخاص به، لأن النواة تطبّق قرارًا منفصلًا بعد وصول الحزمة. ويجب تفعيل الاثنين قبل أن يعبر رد واحد النفق.
sysctl -w net.ipv6.conf.all.forwarding=1بعد ذلك يجب أن تسمح قواعد الجدار الناري بنطاق المصدر الداخلي في الاتجاهين. تقيّم Google Cloud الحزمة بعد فك التغليف، لذا فإن قاعدة تغطي الشبكة الفرعية في VPC فقط تُسقط حركة التجمّع بعد أن يكون النفق قد نجح بالفعل. أضف التجمّع كنطاق مصدر في قاعدة الدخول، وتحقق من أن أي سياسة خروج مخصصة لا تحجب الرد. قاعدة السماح الضمنية تغطي الحالة الافتراضية، أما قاعدة الخروج المكتوبة يدويًا فلا.
أخبر OpenVPN بمن يملك ماذا
يمرّر OpenVPN إلى العميل عندما يعلم أن ذلك العميل يملك الوجهة. عناوين العملاء من التجمّع تتولاها توجيهات الخادم التي تعرّف التجمّع، لكن شبكة فرعية خلف عميل ترتيب مختلف وتحتاج إدخال ملكية صريحًا لذلك العميل.
الخلط بين الحالتين ينتج نفقًا تعمل فيه اختبارات ping إلى الخادم ولا يعمل شيء خلفه. حدّد الحالة التي تبنيها، ثم اكتب الإدخال المطابق بدلًا من إضافة سطر push ثانٍ والأمل في النجاح.
أبقِ خروج الإنترنت خارج هذا التصميم
الوصول الخاص والوصول إلى الإنترنت خطتان منفصلتان. يستطيع تجمّع ULA الوصول إلى أحمال VPC عبر النفق بمجرد أن يتفق التوجيه والتمرير، وهذا التجمّع نفسه ليس له طريق إلى الإنترنت العام عبر VPC، لأن بوابة السحابة لن تقبل مصدر نفق عشوائيًا كمصدر خاص بها.
إذا كان العملاء يحتاجون أيضًا إلى الخروج إلى الإنترنت، فخطّط لتصميم عنونة وتوجيه مدعوم من أجله، وأبقِه مستقلًا عن التجمّع الخاص، واختبر المسارين بشكل منفصل. المسار العامل لا يخبرك شيئًا عن الآخر، والتصميم الذي يخلط بينهما يفشل بطريقة تبدو كنفق معطّل.