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

كجزء من جهودنا لنكون مستقلين عن السحابة، نقوم بنقل جزء من خدمات الإنتاج الخاصة بنا إلى 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) ويعمل كأنفاق افتراضية تمر عبرها حركة مرور مشفرة.

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

الخطوة 2: إنشاء VPN
- انزل إلى Hybrid Connectivity، واختر "CREATE VPN CONNECTION"

- اختر "High-availability (HA) VPN".

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

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

الخطوة 4a: الانتقال إلى AWS وإنشاء بوابة العميل 1
- اذهب إلى قسم VPC في AWS وابحث عن "Virtual private network (VPN)".

- اختر "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: فارغ
- الجهاز: فارغ

الخطوة 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 الذي تريد إرفاقه بـ VPG.

ملاحظة: يمكن إرفاق بوابة خاصة واحدة فقط بـ VPC، لذا إذا كانت هناك بوابة خاصة موجودة بالفعل في VPC الخاص بك، يمكنك إرفاق بوابات العملاء الخاصة بك إلى نفس البوابة الخاصة الموجودة.
الخطوة 7a: إنشاء اتصال VPN موقع إلى موقع (النفق 0)
- اختر "Site-to-Site VPN connections" ثم اختر "Create VPN connection".

- علامة الاسم: 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.
- خيارات التوجيه: ديناميكي

الخطوة 8a: تنزيل إعدادات الاتصال VPN-1
- اختر اتصال VPN موقع إلى موقع الجديد (demo-vpn-1). اضغط على "تنزيل الإعدادات".

- البائع: 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”.

- الاسم: 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 للواجهة 1: 52.22.80.188 (ابحث عن “IPSec Tunnel #2” -> “#3: Tunnel Interface Configuration” -> “Outside IP Addresses:” -> Virtual Private Gateway.))

الخطوة 10b: افتح ملف الإعداد الثاني الذي قمت بتنزيله من AWS
- عنوان IP للواجهة 3: 34.235.79.68 (ابحث عن “IPSec Tunnel #1” -> “#3: Tunnel Interface Configuration” -> “Outside IP Addresses:” -> Virtual Private Gateway.))

- عنوان IP للواجهة 4: 54.83.17.30 (ابحث عن “IPSec Tunnel #1” -> “#3: Tunnel Interface Configuration” -> “Outside IP Addresses:” -> Virtual Private Gateway.))

- أضف القيمة أعلاه في الخطوة 9.

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

الخطوة 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”)


الخطوة 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”)

الخطوة 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”)

الخطوة 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”)

الخطوة 13a: تكوين جلسات BGP (النفق 1)
- يجب أن تكون قادرًا على رؤية الشاشة التالية.

- انقر على “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)”.


الخطوة 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)”.

الخطوة 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 (افتراضي)".

الخطوة 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 (افتراضي)".

- بعد تكوين جلسة BGP، يجب أن يبدو شيء مثل التالي:

- اضغط على "حفظ إعدادات BGP".
على جانب GCP

على جانب AWS


الخطوة 14: إضافة طرق من GCP إلى AWS
- اختر الـ VPC الذي أنشأت فيه VPN.
- اضغط على “Route Tables” في شريط التنقل الأيسر. اختر جدول التوجيه المرتبط بـ VPC الخاص بك.

- اضغط على تبويب “Route Propagation”.
- اضغط على “Edit route propagation”

- عندما تضغط على تبويب “Routes”، يجب أن ترى الآن نطاق CIDR 10.128.0.0/20 الخاص بـ GCP يضاف إلى الجدول تلقائيًا.

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