تمكين تمرير IP على بوابة GCE VPN قائمة
canIpForward خاصية قابلة للتحديث، وليست سبباً لإعادة بناء الجهاز. صدّر المورد، وغيّر سطراً واحداً، وتحقّق، ثم طبّق مع refresh.
أُنشئت الآلة الافتراضية دون تمرير IP، وهي تُشغّل برنامج VPN بالفعل، والغريزة تدعو إلى إعادة بنائها من القالب مع ضبط العلامة. إعادة البناء هذه غير ضرورية. يعرض Compute Engine الخاصية canIpForward كخاصية قابلة للتحديث، ومسار التحديث الموثّق يطبّقها مع refresh بدل إعادة التشغيل. ما تتحكم فيه العلامة فعلياً ضيّق: بدونها تُسقط المنصة الحزم التي تصل إلى المثيل ولكنها ليست موجّهة إلى عنوان المثيل نفسه. والبوابة التي تمرّر حركة آلات أخرى تفعل ذلك بالضبط، لذا يجب أن تكون العلامة مفعّلة. كل ما يأتي بعد ذلك هو إعداد الضيف والتوجيه، والعلامة لا تمسّه.
ما تسمح به العلامة، وما لا تسمح به
عند تعطيل التمرير، تتعامل المنصة مع المثيل كنقطة نهاية. تُسلَّم الحزم التي يكون وجهتها عنوان المثيل نفسه؛ أما الحزم التي يُفترض أن يمرّرها المثيل نيابة عن غيره فلا تُسلَّم.
عند تمكين التمرير، يجوز للمثيل أن يعمل كقفزة تالية لمسار VPC، وهو الدور الذي يحتاجه جهاز VPN. والعلامة لا تقول شيئاً عن الجدران النارية أو توجيه الضيف أو إعداد النفق أو مسارات العودة؛ فحتى قيمة true على بوابة معطوبة تبقى بوابة معطوبة.
اقرأ الخاصية الحالية
افحص الإعداد قبل تغيير أي شيء، باستخدام describe للقراءة فقط على المثيل والمشروع والمنطقة المقصودة:
gcloud compute instances describe VM_NAME --project PROJECT_ID --zone ZONE --format='value(canIpForward)'
القيمة false لا تهم إلا إذا كان هذا الجهاز مقصوداً ليكون قفزة تالية. وإذا كان كذلك، فلا يزال يجب فحص بقية المسار بشكل منفصل، لأن الخاصية سطر واحد في سلسلة أطول.
حدّث المثيل الموجود
إنّ إجراء Google لتحديث خصائص المثيل يصدّر المورد الحالي، ويعدّل الخاصية، ويرسل النتيجة. وهذا سير عمل مختلف عن العلامة --can-ip-forward وقت الإنشاء، وهو الذي يعمل على آلة افتراضية قيد التشغيل.
صدّر التعريف إلى ملف محلي أولاً، واحتفظ بنسخة غير معدّلة للمقارنة:
gcloud compute instances export VM_NAME --project PROJECT_ID --zone ZONE --destination=instance.yaml
في ذلك الملف المصدَّر، اضبط الخاصية ولا تغيّر أي شيء آخر:
canIpForward: true
احتفظ بالمورد كاملاً، بما في ذلك بصمته. إن استبدال الملف بمستند YAML من سطر واحد، أو حزم تعديلات غير ذات صلة على نوع الآلة أو القرص أو الواجهة في الطلب نفسه، هو الطريق الذي يجعل تغيير خاصية انقطاعاً في الخدمة.
اطلب من آلية التحديث أن تتحقّق من الملف وأن تبلغ بما ستتطلبه، قبل السماح بأي تغيير فعلي:
gcloud compute instances update-from-file VM_NAME --project PROJECT_ID --zone ZONE --source=instance.yaml --most-disruptive-allowed-action=NO_EFFECT
تشغيل التحقّق هذا لا يمكّن التمرير. اقرأ الاستجابة بحثاً عن خصائص غير صالحة وعن الإجراء الذي تقول إنه مطلوب. ولهذا التغيير المعزول، الإجراء الموثّق هو REFRESH. وإذا طلبت النتيجة إعادة تشغيل، فإن الملف يحتوي أكثر من الخاصية التي كنت تقصد تغييرها، لذا افحصه بدلاً من منح إعادة التشغيل.
طبّق الملف المراجَع بحدّ refresh:
gcloud compute instances update-from-file VM_NAME --project PROJECT_ID --zone ZONE --source=instance.yaml --most-disruptive-allowed-action=REFRESH
تحقّق من اكتمال العملية وشغّل أمر describe مرة أخرى. وإذا لم تعد البصمة متطابقة، فقد غيّر شخص آخر المثيل أثناء تحريرك، لذا صدّر نسخة جديدة وراجع التغيير مرة أخرى بدلاً من فرض ملفك القديم.
لا يزال على الضيف توجيه الحزمة
إذن السحابة لا يجعل الجهاز موجّهاً. تأكّد من أن مسار VPC يختار هذه الآلة كقفزة تالية لبادئة الوجهة، وأن الضيف يوجّه بين النفق والواجهة الصحيحة مع تمكين سياسة التمرير الخاصة به.
يجب أن تسمح سياسة الجدار الناري بالتدفق الداخلي وكذلك بالمستمع الخارجي. فتح منفذ VPN وحده يصف النقل المشفّر ولا يقول شيئاً عن تبادل التطبيق داخله.
أخيراً، تحتاج الوجهة إلى مسار عودة إلى مجموعة العملاء، أو يجب أن يترجم التصميم المصادر عن قصد. فإن رأت الوجهة حركة مترجمة، فافحص المصدر المترجم؛ وإن حافظ التصميم على المجموعة، فافحص تلك المجموعة في مسار العودة وقواعد الوصول. وإضافة NAT قبل تحديد التصميم الذي تريده تخفي مساراً مفقوداً وتغيّر السياسة التي تراها الوجهة.
على بوابة Linux، يُعدّ تمرير النواة جزءاً من إعداد الضيف. ولجهاز pfSense مكافئه الخاص، ونسخ أمر sysctl خاص بـ Linux إليه ليس هو الخطوة المطابقة.
تحقّق من العميل الذي يحتاج الوصول
اختبر من عميل VPN إلى خدمة هدف واحدة، لا من البوابة نفسها. فالاتصال الذي يبدأ على البوابة يستخدم مصدراً مختلفاً ولا يمارس أبداً قواعد التمرير التي مكّنتها للتو.
سجّل الخاصية في أي شيء يدير الجهاز. فالآلة المصحّحة يدوياً تعمل إلى أن يعيد استبدالها التالي إدخال الإعداد الأصلي بهدوء، وسيبدو ذلك الفشل كتراجع في برنامج VPN.
ترتيب العمل: اقرأ الخاصية، وصدّر سطراً واحداً وعدّله، وتحقّق باستخدام NO_EFFECT، وطبّق باستخدام REFRESH، وتأكّد من أن الضيف يمرّر، ثم اختبر من عميل.