تنفيذ VPN عالي التوفر عبر السحابة بين AWS وGCP

March 18, 2024

كجزء من جهودنا لنكون مستقلين عن السحابة، نقوم بنقل جزء من خدمات الإنتاج الخاصة بنا إلى GCP من AWS في حين تستمر معظم خدماتنا وقواعد بياناتنا في العمل على بنية AWS التحتية.

طوال هذه الحملة، كان الحفاظ على خدماتنا بعيدًا عن الشبكة العامة من أهم مخاوفنا الأمنية. لذا، كانت حلولنا للتعامل مع حركة المرور بشكل خاص هي إنشاء نفق VPN بين GCP وAWS باستخدام بروتوكول IPSec لتأمين قناة الاتصال.

في مشاركتنا السابقة في المدونة، وصفنا كيف قمنا بإصلاح مشكلة NAT Gateway في VPN موقع إلى موقع بين GCP وAWS. هنا، سنشرح بمزيد من التفصيل كيف قمنا بتصميم وتنفيذ الاتصال باستخدام بروتوكول Border Gateway Protocol.

اتصال VPN موقع إلى موقع

المفاهيم الرئيسية المستخدمة في AWS للربط مع GCP تنقسم إلى مجموعتين. أولاً، لدينا المفاهيم الرئيسية لـ VPN موقع إلى موقع المستخدمة على AWS:

  • اتصال VPN: اتصال آمن بين السحب الأخرى ومجموعات VPC على AWS
  • نفق VPN: رابط مشفر حيث يمكن للبيانات الانتقال من الشبكة الأخرى إلى أو من AWS
  • Customer gateway: مورد AWS يقدم معلومات لـ AWS حول جهاز البوابة الخاص بك. في حالتنا، هي بوابة VPN في GCP شريكة. بوابات Cloud VPN في GCP مرتبطة بهذه البوابة على AWS.
  • تكون نقطة نهاية VPN على جانب أمازون من اتصال VPN بين موقعين، ويجب إرفاقها بـ VPC واحد.

ثم، هناك المفاهيم الرئيسية المستخدمة في نهاية GCP للتواصل مع AWS:

  • Cloud Router: خدمة Google Cloud موزعة بالكامل ومدارة لتوفير التوجيه الديناميكي باستخدام BGP لشبكات VPC الخاصة بك
  • Cloud NAT: خدمة من Google تتيح لبعض الموارد التي لا تمتلك عناوين IP خارجية إنشاء اتصالات صادرة إلى الإنترنت
  • Cloud VPN gateway: بوابة VPN تُدار من قبل Google وتعمل على Google Cloud. كل بوابة Cloud VPN هي مورد إقليمي يحتوي على واجهة أو اثنتين. لقد استخدمنا واجهتين، كل واحدة بعناوين IP خارجية خاصة بها: الواجهة 0 و1. كل بوابة Cloud VPN متصلة ببوابة VPN شريكة. عناوين IP العامة لأنفاق AWS مرتبطة بهذه البوابة.
  • Peer VPN gateway: بوابة متصلة ببوابة Cloud VPN. جميع الأنفاق على جانب GCP تستخدم هذه البوابة. يجب أن يكون لكل نفق عنوان IP خارجي واحد.
  • Cloud VPN tunnels: نفق VPN يربط بين بوابتين VPN (AWS وGCP) ويعمل كأنفاق افتراضية تمر عبرها حركة مرور مشفرة.
الإنفوجرافيك لكيفية إنشاء نفق VPN في AWS

تمتلك GCP نوعين من بوابات VPN، الكلاسيكية وعالية التوفر (HA). سنقوم بإنشاء نسخة HA من بوابة VPN، والتي تسمح لنا بتحقيق مستوى توافر الخدمة 99.99%. بالإضافة إلى هذه البوابة، يجب علينا إنشاء 4 أنفاق بين AWS وGCP. على جانب AWS، سنحتاج إلى إنشاء بوابتين للعميل واتصالين VPN موقع إلى موقع.

سننتقل بين وحدات تحكم GCP وAWS في هذا الدرس.

GCP

الخطوة 1: إنشاء Cloud Router

  • انزل إلى Hybrid Connectivity واختر “Cloud Routers”. اضغط على “Create Router”.
لقطة شاشة تُظهر خطوات إنشاء Cloud Router في GCP

  • عند إنشاء Cloud Router، التفاصيل التالية مهمة:
  • الاسم: demo-cloud-router
  • Google ASN: 64567 (يمكنك استخدام أي ASN خاص ضمن النطاق 64512–65534). تأكد من عدم تعارضه مع ASN الموجود في جانب AWS الذي سيتم إنشاؤه لاحقًا في الخطوة 5 (سيتم استخدامه في الخطوة 4).
  • *ملاحظة: 4200000000–4294967294 غير مسموح بها في AWS، لذلك لا تستخدم هذه النطاقات.
  • فترة بقاء جلسة BGP: 20 (افتراضي)
  • اختر “إعلان جميع الشبكات الفرعية المرئية إلى Cloud Router (افتراضي)”
لقطة شاشة تُظهر خطوات إنشاء Cloud Router في GCP

الخطوة 2: إنشاء VPN

  • انزل إلى Hybrid Connectivity، واختر "CREATE VPN CONNECTION"
لقطة شاشة تُظهر خطوات إنشاء VPN في AWS
  • اختر "High-availability (HA) VPN".
لقطة شاشة تُظهر خطوات إنشاء VPN في AWS

الخطوة 3: إنشاء بوابة Cloud HA VPN

لقطة شاشة تُظهر خطوات إعداد AWS VPN عالية التوفر
  • أضف "اسم بوابة VPN".
  • اختر "الشبكة".
  • اختر "المنطقة" الخاصة بـ VPN الخاص بك.
  • اختر "IPv4 (single-stack)" لنوع تكدس IP الداخلي لنفق VPN.
  • إنشئ واستمر.
  • تأكد من تدوين الواجهات التي تم إنشاؤها في الخطوة أدناه “0 : 35.242.99.173 1 : 35.220.70.6"
لقطة شاشة لواجهة نفق VPN

الخطوة 4a: الانتقال إلى AWS وإنشاء بوابة العميل 1

  • اذهب إلى قسم VPC في AWS وابحث عن "Virtual private network (VPN)".
لقطة شاشة لخطوات VPN موقع إلى موقع في AWS
  • اختر "Customer gateways" ثم اختر "Create customer gateway".
لقطة شاشة تُظهر تفاصيل بوابة العميل
  • الاسم: demo-cg-1
  • BGP ASN: 64567 (ASN الذي استخدمته لإنشاء جهاز التوجيه السحابي GCP في الخطوة 1)
  • عنوان IP: 35.242.99.173 (عنوان IP من الواجهة 0 للنفق في بوابة VPN في GCP في الخطوة 3)
  • شهادة ARN: فارغ
  • الجهاز: فارغ

الخطوة 4b: كرر الخطوة 4a لإنشاء بوابة العميل 2

  • علينا إنشاء بوابتين للعملاء لتلبية 4 أنفاق بين AWS وGCP
  • الاسم: demo-cg-2
  • BGP ASN: 64567 (ASN الذي استخدمته لإنشاء جهاز التوجيه السحابي GCP في الخطوة 1)
  • عنوان IP: 35.220.70.6 (عنوان IP من الواجهة 1 للنفق في بوابة VPN في GCP في الخطوة 3)
  • شهادة ARN: فارغ
  • الجهاز: فارغ
لقطة شاشة تُظهر كيفية إنشاء بوابة العميل لـ AWS

الخطوة 5: إنشاء بوابات خاصة افتراضية

  • اختر "Virtual private gateways" ثم اختر "Create virtual private gateways".
لقطة شاشة تُظهر تفاصيل إنشاء بوابات خاصة افتراضية
  • علامة الاسم: demo-vpg-1
  • ASN: ASN مخصص 64586 (أي ASN تختاره. سيتم استخدامه على جانب GCP في الخطوة 13)
لقطة شاشة تُظهر تفاصيل إنشاء بوابات خاصة افتراضية
  • ستلاحظ أن الحالة تظهر 'Detached'، يجب علينا إرفاق هذه البوابة الخاصة الافتراضية بـ VPC.

الخطوة 6: إرفاق البوابة الخاصة الافتراضية (VPG) بـ VPC

  • اختر الـ VPG الذي أنشأته حديثًا، اذهب إلى الإجراءات واختر إرفاق بـ VPC.
لقطة شاشة تُظهر تفاصيل إرفاق البوابة الخاصة الافتراضية بـ VPC
  • اختر الـ VPC الذي تريد إرفاقه بـ VPG.
لقطة شاشة تُظهر تفاصيل إرفاق البوابة الخاصة الافتراضية بـ VPC

ملاحظة: يمكن إرفاق بوابة خاصة واحدة فقط بـ VPC، لذا إذا كانت هناك بوابة خاصة موجودة بالفعل في VPC الخاص بك، يمكنك إرفاق بوابات العملاء الخاصة بك إلى نفس البوابة الخاصة الموجودة.

الخطوة 7a: إنشاء اتصال VPN موقع إلى موقع (النفق 0)

  • اختر "Site-to-Site VPN connections" ثم اختر "Create VPN connection".
لقطة شاشة لإعداد اتصال VPN
  • علامة الاسم: demo-vpn-1
  • نوع البوابة المستهدفة: بوابة خاصة افتراضية
  • Virtual private gateway: vgw-0bfabc0d783bc9d95 (علامة الاسم: demo-vpg-1). اختر بوابة VPN الخاصة الافتراضية التي أنشأتها للتو.
  • Customer gateway: موجودة
  • Customer gateway: cgw-0a6031d4959a4631e (علامة الاسم: demo-cg-1). اختر أول بوابة عميل أنشأتها والتي تطابق النفق 0 في GCP.
  • خيارات التوجيه: ديناميكي

الخطوة 7b: كرر الخطوة 7a لإنشاء اتصال VPN موقع إلى موقع آخر (النفق 1)

  • علامة الاسم: demo-vpn-2
  • نوع البوابة المستهدفة: بوابة خاصة افتراضية
  • Virtual private gateway: vgw-0bfabc0d783bc9d95 (علامة الاسم: demo-vpg-1). اختر بوابة VPN الخاصة الافتراضية التي أنشأتها للتو.
  • Customer gateway: موجودة
  • Customer gateway: cgw-0e74d3786ff8eb0e9 (علامة الاسم: demo-cg-2). اختر أول بوابة عميل أنشأتها والتي تطابق النفق 1 في GCP.
  • خيارات التوجيه: ديناميكي
لقطة شاشة تُظهر تفاصيل توجيه VPN

الخطوة 8a: تنزيل إعدادات الاتصال VPN-1

  • اختر اتصال VPN موقع إلى موقع الجديد (demo-vpn-1). اضغط على "تنزيل الإعدادات".
لقطة شاشة تعرض تفاصيل إعداد اتصال VPN
  • البائع: Generic
  • المنصة: Generic
  • البرنامج: Vendor Agnostic
  • إصدار IKE: ikev1
  • اضغط على "Download" لحفظ الإعدادات واستخدامها لاحقًا أثناء إعداد GCP.

الخطوة 8b: كرر الخطوة 8a لتنزيل إعدادات الاتصال VPN-2

  • اختر اتصال VPN موقع إلى موقع الجديد (demo-vpn-2). اضغط على "تنزيل الإعدادات".
  • البائع: Generic
  • المنصة: Generic
  • البرنامج: Vendor Agnostic
  • إصدار IKE: ikev1
  • اضغط على "Download" لحفظ الإعدادات واستخدامها لاحقًا أثناء إعداد GCP.

الخطوة 9: العودة إلى GCP للخطوة 3

  • بالنسبة لـ “Peer VPN gateway”، تأكد من اختيار “On-prem or Non Google Cloud”.
  • بالنسبة لـ “Peer VPN gateway name”، اضغط على القائمة المنسدلة واختر “Create new peer VPN Gateway”.
لقطة شاشة تُظهر تفاصيل بوابة VPN الشريكة
  • الاسم: demo-peer-gateway-1
  • الواجهات: اختر “أربع واجهات”

الخطوة 10a: افتح ملف الإعداد الأول الذي قمت بتنزيله من AWS

  • عنوان IP للواجهة 0: 23.23.65.255 (ابحث عن “IPSec Tunnel #1” -> “#3: Tunnel Interface Configuration” -> “Outside IP Addresses:” -> Virtual Private Gateway.))
رمز لعناوين IP الخارجية
  • عنوان IP للواجهة 1: 52.22.80.188 (ابحث عن “IPSec Tunnel #2” -> “#3: Tunnel Interface Configuration” -> “Outside IP Addresses:” -> Virtual Private Gateway.))
رمز لعناوين IP الخارجية

الخطوة 10b: افتح ملف الإعداد الثاني الذي قمت بتنزيله من AWS

  • عنوان IP للواجهة 3: 34.235.79.68 (ابحث عن “IPSec Tunnel #1” -> “#3: Tunnel Interface Configuration” -> “Outside IP Addresses:” -> Virtual Private Gateway.))
رمز لعناوين IP الخارجية
  • عنوان IP للواجهة 4: 54.83.17.30 (ابحث عن “IPSec Tunnel #1” -> “#3: Tunnel Interface Configuration” -> “Outside IP Addresses:” -> Virtual Private Gateway.))
رمز لعناوين IP الخارجية
  • أضف القيمة أعلاه في الخطوة 9.
لقطة شاشة تُظهر تفاصيل بوابة VPN الشريكة

الخطوة 11: إرفاق Cloud Router الذي تم إنشاؤه في الخطوة 1

  • اختر "Create 4 VPN tunnels".
  • أضف اسم جهاز التوجيه السحابي الذي تم إنشاؤه في الخطوة 1 ("demo-peer-gateway-1").
لقطة شاشة تُظهر تفاصيل بوابة VPN الشريكة

الخطوة 12a: تكوين VPN (النفق 1)

  • واجهة بوابة Cloud VPN المرتبطة: “0 : 35.242.99.173”
  • واجهة بوابة VPN الشريكة المرتبطة: “0 : 23.23.65.255”
  • الاسم: demo-vpn-tunnel-1
  • الوصف:
  • إصدار IKE: IKEv1
  • مفتاح IKE المسبق: pUXYaBBHqrwt5fT3zcJ1RFdwpMg5T2Ie (ابحث في ملف الإعداد الأول الذي قمت بتنزيله تحت “IPSec Tunnel #1” -> “#1: Internet Key Exchange Configuration” -> “- Pre-Shared Key”)
إرشادات استخدام NAT-T
لقطة شاشة تُظهر تفاصيل بوابة VPN الشريكة

الخطوة 12b: تكوين VPN (النفق 2)

  • واجهة بوابة Cloud VPN المرتبطة: “0 : 35.242.99.173”
  • واجهة بوابة VPN الشريكة المرتبطة: “0 : 52.22.80.188”
  • الاسم: demo-vpn-tunnel-2
  • الوصف: demo-vpn-tunnel-2
  • إصدار IKE: IKEv1
  • مفتاح IKE المسبق: HeFwR_SmRsZf0WCaKGoFuDSixvXGcbCf (ابحث في ملف الإعداد الأول الذي قمت بتنزيله تحت “IPSec Tunnel #1” -> “#1: Internet Key Exchange Configuration” -> “- Pre-Shared Key”)
إرشادات استخدام NAT-T

الخطوة 12c: تكوين VPN (النفق 3)

  • واجهة بوابة Cloud VPN المرتبطة: “0 : 35.242.99.173”
  • واجهة بوابة VPN الشريكة المرتبطة: “0 : 34.235.79.68”
  • الاسم: demo-vpn-tunnel-3
  • الوصف: demo-vpn-tunnel-3
  • إصدار IKE: IKEv1
  • مفتاح IKE المسبق: JjfmK0HcxGx4sTidWx5cHTvnVKq_oXU7 (ابحث في ملف الإعداد الأول الذي قمت بتنزيله تحت “IPSec Tunnel #1” -> “#1: Internet Key Exchange Configuration” -> “- Pre-Shared Key”)
إرشادات استخدام NAT-T

الخطوة 12d: تكوين VPN (النفق 4)

  • واجهة بوابة Cloud VPN المرتبطة: “0 : 35.242.99.173”
  • واجهة بوابة VPN الشريكة المرتبطة: “0 : 54.83.17.30”
  • الاسم: demo-vpn-tunnel-4
  • الوصف: demo-vpn-tunnel-4
  • إصدار IKE: IKEv1
  • مفتاح IKE المسبق: R1ROQKVBCxVCZrV9Dtg5W6vCBD.3jzq4 (ابحث في ملف الإعداد الأول الذي قمت بتنزيله تحت “IPSec Tunnel #1” -> “#1: Internet Key Exchange Configuration” -> “- Pre-Shared Key”)
إرشادات استخدام NAT-T

الخطوة 13a: تكوين جلسات BGP (النفق 1)

  • يجب أن تكون قادرًا على رؤية الشاشة التالية.
تفاصيل تكوين جلسات BGP
  • انقر على “Configure BGP Session” للنفق demo-vpn-tunnel-1.
  • الاسم: demo-bgp-1
  • Peer ASN: 64568 (الـ ASN من البوابة الخاصة الافتراضية من AWS)
  • أولوية المسار المعلن (MED): فارغ
  • عنوان BGP الخاص بـ Cloud Router: 169.254.60.22 (ابحث عن “IPSec Tunnel #1” -> “#3: Tunnel Interface Configuration” -> “Inside IP Addresses:” -> Customer Gateway)
  • عنوان الـ BGP الشريك: 169.254.60.21 (ابحث عن “IPSec Tunnel #1” -> “#3: Tunnel Interface Configuration” -> “Inside IP Addresses:” -> Virtual Private Gateway)
  • اختر “Use Cloud Router’s advertisements (Default)”.
رمز لعناوين IP الداخلية
لقطة شاشة تُظهر تفاصيل بوابة VPN الشريكة

الخطوة 13b: تكوين جلسات BGP (النفق 2)

  • انقر على “Configure BGP Session” على demo-vpn-tunnel-2.
  • الاسم: demo-bgp-2
  • Peer ASN: 64568 (الـ ASN من البوابة الخاصة الافتراضية من AWS)
  • أولوية المسار المعلن (MED): فارغ
  • عنوان BGP الخاص بـ Cloud Router: 169.254.100.38 (ابحث عن “IPSec Tunnel #1” -> “#3: Tunnel Interface Configuration” -> “Inside IP Addresses:” -> Customer Gateway)
  • عنوان الـ BGP الشريك: 169.254.100.37 (ابحث عن “IPSec Tunnel #1” -> “#3: Tunnel Interface Configuration” -> “Inside IP Addresses:” -> Virtual Private Gateway)
  • اختر “Use Cloud Router’s advertisements (Default)”.
رمز لعناوين IP الداخلية

الخطوة 13c: تكوين جلسات BGP (النفق 3)

  • انقر على “Configure BGP Session” على demo-vpn-tunnel-3.
  • الاسم: demo-bgp-3
  • Peer ASN: 64568 (الـ ASN من البوابة الخاصة الافتراضية من AWS)
  • أولوية المسار المعلن (MED): فارغ
  • عنوان BGP الخاص بـ Cloud Router: 169.254.205.182 (ابحث عن “IPSec Tunnel #1” -> “#3: Tunnel Interface Configuration” -> “Inside IP Addresses:” -> Customer Gateway)
  • عنوان الـ BGP الشريك: 169.254.205.181 (ابحث عن “IPSec Tunnel #1” -> “#3: Tunnel Interface Configuration” -> “Inside IP Addresses:” -> Virtual Private Gateway)
  • اختر "استخدام إعلانات Cloud Router (افتراضي)".
رمز لعناوين IP الداخلية

الخطوة 13d: تكوين جلسات BGP (النفق 4)

  • انقر على “Configure BGP Session” على demo-vpn-tunnel-4.
  • الاسم: demo-bgp-4
  • Peer ASN: 64568 (الـ ASN من البوابة الخاصة الافتراضية من AWS)
  • أولوية المسار المعلن (MED): فارغ
  • عنوان BGP الخاص بـ Cloud Router: 169.254.105.118 (ابحث عن “IPSec Tunnel #1” -> “#3: Tunnel Interface Configuration” -> “Inside IP Addresses:” -> Customer Gateway)
  • عنوان الـ BGP الشريك: 169.254.105.117 (ابحث عن “IPSec Tunnel #1” -> “#3: Tunnel Interface Configuration” -> “Inside IP Addresses:” -> Virtual Private Gateway)
  • اختر "استخدام إعلانات Cloud Router (افتراضي)".
رمز لعناوين IP الداخلية
  • بعد تكوين جلسة BGP، يجب أن يبدو شيء مثل التالي:
تفاصيل تكوين جلسات BGP
  • اضغط على "حفظ إعدادات BGP".

على جانب GCP

تفاصيل تكوين جلسات BGP على GCP

على جانب AWS

لقطة شاشة تُظهر تكوين جلسات BGP على AWS
لقطة شاشة تُظهر تكوين جلسات BGP على AWS

الخطوة 14: إضافة طرق من GCP إلى AWS

  • اختر الـ VPC الذي أنشأت فيه VPN.
  • اضغط على “Route Tables” في شريط التنقل الأيسر. اختر جدول التوجيه المرتبط بـ VPC الخاص بك.
لقطة شاشة لقائمة VPC
  • اضغط على تبويب “Route Propagation”.
  • اضغط على “Edit route propagation”
لقطة شاشة تُظهر نشر طرق VPN
  • عندما تضغط على تبويب “Routes”، يجب أن ترى الآن نطاق CIDR 10.128.0.0/20 الخاص بـ GCP يضاف إلى الجدول تلقائيًا.
لقطة شاشة تُظهر نشر طرق VPN

بهذا نكون قد أنهينا إعداد VPN موقع إلى موقع عالي التوفر (HA). الشبكات عبر السحابة مع توفر عالٍ هي عملية معقدة متعددة المكونات وتتطلب جهدًا كبيرًا للبقاء على القمة. يهدف هذا الدرس إلى أن يكون دليلًا عمليًا يمنحك فهمًا للمكونات المختلفة. إن إنشاء هذا الـ HA VPN موقع إلى موقع يتطلب أدوات سطر الأوامر السحابية الفردية، مثل gcloud و aws-cli، أو أدوات البنية التحتية ككود (IAC) مثل Terraform.

المحتويات