استخدام مثيل القفزة التالية (غير المُصنَّف والمُصنَّف) في المسارات الثابتة لبروتوكول IPv6 وعنوان القفزة التالية وبوابة القفزة التالية

1. مقدمة

تؤثّر المسارات المخصّصة الثابتة في سلوك التوجيه التلقائي في شبكة VPC. تتيح المسارات المخصّصة لبروتوكول IPv6 الآن سمات جديدة للقفزة التالية: next-hop-gateway وnext-hop-instance وnext-hop-address. يوضّح هذا الدرس التطبيقي حول الترميز كيفية استخدام مسارات IPv6 المخصّصة مع خيارات القفزة التالية الجديدة هذه باستخدام شبكتَي VPC متصلتَين من خلال مثيل جهاز افتراضي متعدد بطاقات NIC. ستوضّح أيضًا كيفية دمج عناوين ULA وGUA وتوفير إمكانية الوصول إلى شبكة VPC التي تستخدم عناوين ULA من الإنترنت العام باستخدام إمكانية التوجيه المخصّص الجديدة.

أهداف الدورة التعليمية

  • كيفية إنشاء مسار مخصّص لبروتوكول IPv6 باستخدام قفزة تالية من نوع next-hop-instance
  • كيفية إنشاء مسار IPv6 مخصّص باستخدام next-hop-gateway كقفزة تالية
  • كيفية إنشاء مسار مخصّص لبروتوكول IPv6 باستخدام قفزة تالية بعنوان next-hop-address

المتطلبات

  • مشروع Google Cloud

2. قبل البدء

تعديل المشروع ليتوافق مع الدرس العملي

يستفيد هذا الدرس التطبيقي حول الترميز من $variables للمساعدة في تنفيذ عملية إعداد gcloud في Cloud Shell.

داخل Cloud Shell، نفِّذ ما يلي

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export projectname=$(gcloud config list --format="value(core.project)")

البنية العامة للدرس التطبيقي

eae86f3e371e74b8.png

لتوضيح كلا نوعَي القفزات التالية للمسارات المخصّصة، عليك إنشاء 3 شبكات VPC: شبكة VPC للعميل تستخدم عناوين GUA، وشبكة VPC للخادم تستخدم عناوين ULA، وشبكة VPC ثانية للخادم تستخدم عناوين GUA.

لكي تتمكّن شبكة VPC الخاصة بالعميل من الوصول إلى خادم ULA، ستستخدم مسارًا مخصّصًا يستخدِم كلاً من next-hop-instance وnext-hop-address للإشارة إلى مثيل بوابة متعددة بطاقات NIC. لتوفير إمكانية الوصول إلى خادم GUA (بعد حذف المسار التلقائي ::/0)، ستستخدم مسارًا مخصّصًا مع next-hop-gateway يشير إلى "بوابة الإنترنت التلقائية" لتوفير التوجيه عبر الإنترنت.

3- إعداد شبكة VPC للعميل

إنشاء شبكة VPC للعميل

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute networks create client-vpc \
    --project=$projectname \
    --subnet-mode=custom \
    --mtu=1500 --bgp-routing-mode=regional

إنشاء الشبكة الفرعية للعميل

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute networks subnets create client-subnet  \
    --network=client-vpc \
    --project=$projectname \
    --range=192.168.1.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=external \
    --region=us-central1

سجِّل الشبكة الفرعية GUA المعيّنة في متغيّر بيئي باستخدام الأمر التالي

export client_subnet=$(gcloud compute networks subnets \
    describe client-subnet \
    --project $projectname \
    --format="value(externalIpv6Prefix)" \
    --region us-central1)

تشغيل نسخة العميل

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute instances create client-instance \
    --subnet client-subnet \
    --stack-type IPV4_IPV6 \
    --zone us-central1-a \
    --project=$projectname

إضافة قاعدة جدار الحماية لزيارات شبكة VPC الخاصة بالعميل

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute firewall-rules create allow-gateway-client \
    --direction=INGRESS --priority=1000 \
    --network=client-vpc --action=ALLOW \
    --rules=tcp --source-ranges=$client_subnet \
    --project=$projectname 

إضافة قاعدة جدار الحماية للسماح بالوصول إلى IAP لمثيل العميل

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute firewall-rules create allow-iap-client \
    --direction=INGRESS --priority=1000 \
    --network=client-vpc --action=ALLOW \
    --rules=tcp:22 --source-ranges=35.235.240.0/20 \
    --project=$projectname 

تأكيد إمكانية الوصول إلى الجهاز الظاهري للعميل عبر بروتوكول SSH

داخل Cloud Shell، سجِّل الدخول إلى الجهاز الظاهري للعميل:

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

في حال نجاح العملية، ستظهر لك نافذة طرفية من مثيل العميل. اخرج من جلسة SSH لمتابعة الدرس البرمجي.

4. إعداد شبكة VPC لخادم ULA

إنشاء شبكة VPC لخادم ULA

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute networks create server-vpc1 \
    --project=$projectname \
    --subnet-mode=custom --mtu=1500 \
    --bgp-routing-mode=regional \
    --enable-ula-internal-ipv6

إنشاء الشبكات الفرعية لخادم ULA

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute networks subnets create server-subnet1 \
    --network=server-vpc1 \
    --project=$projectname \
    --range=192.168.0.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=internal \
    --region=us-central1

سجِّل شبكة ULA الفرعية المخصّصة في متغيّر بيئة باستخدام الأمر التالي

export server_subnet1=$(gcloud compute networks subnets \
    describe server-subnet1 \
    --project $projectname \
    --format="value(internalIpv6Prefix)" \
    --region us-central1)

تشغيل الجهاز الافتراضي للخادم باستخدام عنوان IPV6 داخلي من نوع ULA

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute instances create server-instance1 \
    --subnet server-subnet1 \
    --stack-type IPV4_IPV6 \
    --zone us-central1-a \
    --project=$projectname

إضافة قاعدة جدار الحماية للسماح بالوصول إلى الخادم من العميل

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute firewall-rules create allow-client-server1 \
    --direction=INGRESS --priority=1000 \
    --network=server-vpc1 --action=ALLOW \
    --rules=tcp --source-ranges=$client_subnet \
    --project=$projectname 

إضافة قاعدة جدار الحماية للسماح باستخدام IAP

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute firewall-rules create allow-iap-server1 \
    --direction=INGRESS --priority=1000 \
    --network=server-vpc1 --action=ALLOW \
    --rules=tcp:22 \
    --source-ranges=35.235.240.0/20 \
    --project=$projectname 

تثبيت Apache في مثيل خادم ULA

داخل Cloud Shell، سجِّل الدخول إلى الجهاز الظاهري للعميل:

gcloud compute ssh server-instance1 \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

داخل واجهة الجهاز الظاهري للخادم، نفِّذ الأمر التالي

sudo apt update && sudo apt -y install apache2

التأكّد من أنّ Apache قيد التشغيل

sudo systemctl status apache2

استبدال صفحة الويب الافتراضية

echo '<!doctype html><html><body><h1>Hello World! From Server1!</h1></body></html>' | sudo tee /var/www/html/index.html

اخرج من جلسة SSH لمتابعة الدرس البرمجي.

5- إعداد شبكة VPC لخادم GUA

إنشاء شبكة VPC لخادم GUA

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute networks create server-vpc2 \
    --project=$projectname \
    --subnet-mode=custom --mtu=1500 \
    --bgp-routing-mode=regional

إنشاء الشبكات الفرعية لخادم GUA

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute networks subnets create server-subnet2 \
    --network=server-vpc2 \
    --project=$projectname \
    --range=192.168.0.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=external \
    --region=us-central1

سجِّل الشبكة الفرعية GUA المعيّنة في متغيّر بيئي باستخدام الأمر التالي

export server_subnet2=$(gcloud compute networks subnets \
    describe server-subnet2 \
    --project $projectname \
    --format="value(externalIpv6Prefix)" \
    --region us-central1)

تشغيل الجهاز الافتراضي للخادم باستخدام عنوان IPV6 من نوع GUA

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute instances create server-instance2 \
    --subnet server-subnet2 \
    --stack-type IPV4_IPV6 \
    --zone us-central1-a \
    --project=$projectname

إضافة قاعدة جدار الحماية للسماح بالوصول داخل الشبكة الفرعية

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute firewall-rules create allow-client-server2 \
    --direction=INGRESS \
    --priority=1000 \
    --network=server-vpc2 \
    --action=ALLOW \
    --rules=tcp --source-ranges=$client_subnet \
    --project=$projectname 

إضافة قاعدة جدار الحماية للسماح باستخدام IAP

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute firewall-rules create allow-iap-server2 \
    --direction=INGRESS \
    --priority=1000 \
    --network=server-vpc2 \
    --action=ALLOW \
    --rules=tcp:22 \
    --source-ranges=35.235.240.0/20 \
    --project=$projectname 

تأكيد إمكانية الوصول إلى مثيل خادم GUA باستخدام بروتوكول SSH وتثبيت Apache

داخل Cloud Shell، سجِّل الدخول إلى الجهاز الظاهري للعميل:

gcloud compute ssh server-instance2 \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

داخل واجهة الجهاز الظاهري للخادم، نفِّذ الأمر التالي

sudo apt update && sudo apt -y install apache2

التأكّد من أنّ Apache قيد التشغيل

sudo systemctl status apache2

استبدال صفحة الويب الافتراضية

echo '<!doctype html><html><body><h1>Hello World! From Server2!</h1></body></html>' | sudo tee /var/www/html/index.html

اخرج من جلسة SSH لمتابعة الدرس البرمجي.

6. إنشاء مثيل بوابة

حذف المسار التلقائي لشبكة VPC الخاصة بالعميل

في إطار الاستعداد لإعادة توجيه حركة بيانات الإصدار 6 من عنوان ULA إلى الجهاز الظاهري الذي يتضمّن بطاقات شبكة متعددة وإيقاف توجيه الخروج من الإنترنت احذف المسار التلقائي ::/0 الذي يشير إلى مدخل الإنترنت التلقائي.

داخل Cloud Shell، اتّبِع الخطوات التالية:

export client_defroutename=$(gcloud compute routes list \
--project $projectname \
--format='value(name)' \
--filter="network:client-vpc AND destRange~'::/0'")

gcloud compute routes delete $client_defroutename \
--project $projectname \
--quiet

تشغيل جهاز افتراضي متعدد واجهات الشبكة (NIC) لبوابة

داخل Cloud Shell، نفِّذ ما يلي:

gcloud compute instances create gateway-instance \
    --project=$projectname \
    --zone=us-central1-a \
--network-interface=stack-type=IPV4_IPV6,subnet=client-subnet,no-address \
--network-interface=stack-type=IPV4_IPV6,subnet=server-subnet1,no-address \
    --can-ip-forward

ضبط مثيل البوابة

في Cloud Shell، سجِّل الدخول إلى مثيل البوابة (قد يستغرق ذلك بضع دقائق لتتمكّن من استخدام SSH بنجاح أثناء بدء تشغيل المثيل):

gcloud compute ssh gateway-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

داخل واجهة سطر الأوامر لجهاز VM الخاص بالبوابة، نفِّذ الأمر التالي لتفعيل إعادة توجيه IPv6 ومواصلة قبول إعلانات الموجه مع تفعيل إعادة التوجيه (accept_ra = 2)

sudo sysctl -w net.ipv6.conf.ens4.accept_ra=2
sudo sysctl -w net.ipv6.conf.ens5.accept_ra=2
sudo sysctl -w net.ipv6.conf.ens4.accept_ra_defrtr=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1

التحقّق من جدول توجيه الإصدار السادس من بروتوكول الإنترنت (IPv6) على الجهاز الظاهري

ip -6 route show

نموذج للناتج يعرض مسارات الشبكة الفرعية لكلّ من ULA وGUA، مع توجيه المسار التلقائي إلى واجهة GUA.

::1 dev lo proto kernel metric 256 pref medium
2600:1900:4000:7a7f:0:1:: dev ens4 proto kernel metric 256 expires 83903sec pref medium
2600:1900:4000:7a7f::/65 via fe80::4001:c0ff:fea8:101 dev ens4 proto ra metric 1024 expires 88sec pref medium
fd20:3df:8d5c::1:0:0 dev ens5 proto kernel metric 256 expires 83904sec pref medium
fd20:3df:8d5c::/64 via fe80::4001:c0ff:fea8:1 dev ens5 proto ra metric 1024 expires 84sec pref medium
fe80::/64 dev ens5 proto kernel metric 256 pref medium
fe80::/64 dev ens4 proto kernel metric 256 pref medium
default via fe80::4001:c0ff:fea8:101 dev ens4 proto ra metric 1024 expires 88sec pref medium

اخرج من جلسة SSH لمتابعة الدرس البرمجي.

7. إنشاء مسارات إلى مثيل البوابة واختبارها (باستخدام اسم المثيل)

في هذا القسم، ستضيف مسارات إلى كلّ من شبكتَي VPC للعميل والخادم باستخدام اسم مثيل البوابة كقفزة تالية.

تدوين عناوين الخادم

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute instances list \
   --project $projectname \
   --filter="name~server-instance" \
--format='value[separator=","](name,networkInterfaces[0].ipv6Address,networkInterfaces[0].ipv6AccessConfigs[0].externalIpv6)'

من المفترض أن يعرض هذا الأمر أسماء مثيلات الخادم وبادئات IPv6 الخاصة بها. مثال على الناتج

server-instance1,fd20:3df:8d5c:0:0:0:0:0,
server-instance2,,2600:1900:4000:71fd:0:0:0:0

دوِّن كلا العنوانين لأنّك ستستخدمهما لاحقًا في أوامر curl من مثيل العميل. لسوء الحظ، لا يمكن استخدام متغيّرات البيئة بسهولة لتخزين هذه المتغيّرات لأنّها لا تنتقل عبر جلسات SSH.

تنفيذ أمر curl من العميل إلى مثيل خادم ULA

للاطّلاع على السلوك قبل إضافة أي مسارات جديدة نفِّذ أمر curl من مثيل العميل إلى مثيل الخادم 1.

داخل Cloud Shell، سجِّل الدخول إلى الجهاز الظاهري للعميل:

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

داخل مثيل العميل، نفِّذ عملية curl باستخدام عنوان ULA IPV6 الخاص بمثيل server1 (يضبط الأمر مهلة قصيرة تبلغ 5 ثوانٍ لتجنُّب انتظار curl لفترة طويلة جدًا).

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

من المفترض أن تنتهي مهلة أمر curl هذا لأنّ شبكة VPC الخاصة بالعميل لا تتضمّن مسارًا يؤدي إلى شبكة VPC الخاصة بالخادم بعد.

لنحاول حلّ هذه المشكلة. اخرج من جلسة SSH في الوقت الحالي.

إضافة مسار مخصّص في شبكة VPC الخاصة بالعميل

لأنّ شبكة VPC الخاصة بالعميل لا تتضمّن مسارًا يؤدي إلى بادئة ULA. لنضِفها الآن.

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute routes create client-to-server1-route \
   --project=$projectname \
   --destination-range=$server_subnet1 \
   --network=client-vpc \
   --next-hop-instance=gateway-instance \
   --next-hop-instance-zone=us-central1-a

العودة إلى مثيل العميل باستخدام بروتوكول النقل الآمن:

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

داخل مثيل العميل، حاوِل إرسال طلب curl إلى مثيل الخادم مرة أخرى. (يضبط الأمر مهلة قصيرة تبلغ 5 ثوانٍ لتجنُّب انتظار curl لفترة طويلة جدًا)

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

سيظلّ أمر curl هذا يتجاوز المهلة لأنّ شبكة VPC الخاصة بالخادم1 لا تتضمّن مسارًا للعودة إلى شبكة VPC الخاصة بالعميل من خلال مثيل البوابة بعد.

اخرج من جلسة SSH لمتابعة الدرس البرمجي.

إضافة مسار مخصّص في شبكة VPC لخادم ULA

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute routes create server1-to-client-route \
   --project=$projectname \
   --destination-range=$client_subnet \
   --network=server-vpc1 \
   --next-hop-instance=gateway-instance \
   --next-hop-instance-zone=us-central1-a

العودة إلى مثيل العميل باستخدام بروتوكول النقل الآمن:

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

داخل مثيل العميل، حاوِل إرسال طلب curl إلى مثيل الخادم مرة أخرى.

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

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

مثال على الناتج

<user id>@client-instance:~$ curl -m 5.0 -g -6 'http://[fd20:3df:8d5c:0:0:0:0:0]:80/'
<!doctype html><html><body><h1>Hello World! From Server1!</h1></body></html>

اخرج من جلسة SSH لمتابعة الدرس البرمجي.

8. إنشاء مسارات إلى مثيل البوابة واختبارها (باستخدام عنوان المثيل)

في هذا القسم، ستضيف مسارات إلى كلّ من شبكتَي VPC للعميل والخادم باستخدام عنوان IPv6 لجهاز البوابة الافتراضي كقفزة تالية.

حذف المسارات السابقة

لنستعد البيئة إلى ما كانت عليه قبل إضافة أي مسارات مخصّصة من خلال حذف المسارات المخصّصة التي تستخدم اسم المثيل.

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute routes delete client-to-server1-route  --quiet --project=$projectname
gcloud compute routes delete server1-to-client-route  --quiet --project=$projectname

تنفيذ أمر curl من العميل إلى مثيل خادم ULA

للتأكّد من أنّه تم حذف المسارات السابقة بنجاح، نفِّذ أمر curl من مثيل العميل إلى server-instance1.

داخل Cloud Shell، سجِّل الدخول إلى الجهاز الظاهري للعميل:

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

داخل مثيل العميل، نفِّذ عملية curl باستخدام عنوان ULA IPV6 الخاص بمثيل server1 (يضبط الأمر مهلة قصيرة تبلغ 5 ثوانٍ لتجنُّب انتظار curl لفترة طويلة جدًا).

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

من المفترض أن تنتهي مهلة أمر curl هذا لأنّ شبكة VPC الخاصة بالعميل لم تعُد تتضمّن مسارًا يؤدي إلى شبكة VPC الخاصة بالخادم.

الحصول على عناوين IPv6 الخاصة بمثيل البوابة

يجب الحصول على عناوين IPv6 الخاصة بالجهاز الافتراضي للبوابة قبل أن نتمكّن من كتابة مسارات تستخدم next-hop-address.

داخل Cloud Shell، اتّبِع الخطوات التالية:

export gateway_ula_address=$(gcloud compute instances \
   describe gateway-instance \
   --project $projectname  \
   --format='value(networkInterfaces[1].ipv6Address)')

export gateway_gua_address=$(gcloud compute instances \
   describe gateway-instance \
   --project $projectname  \
   --format='value(networkInterfaces[0].ipv6AccessConfigs[0].externalIpv6)')

إضافة مسار مخصّص في شبكة VPC الخاصة بالعميل

يمكننا الآن إعادة إضافة المسار في شبكة VPC الخاصة بالعميل إلى بادئة ULA ولكن باستخدام عنوان GUA الخاص بالبوابة كعنوان الوجهة التالية.

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute routes create client-to-server1-route \
   --project=$projectname \
   --destination-range=$server_subnet1 \
   --network=client-vpc \
   --next-hop-address=$gateway_gua_address

العودة إلى مثيل العميل باستخدام بروتوكول النقل الآمن:

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

داخل مثيل العميل، حاوِل إرسال طلب curl إلى مثيل الخادم مرة أخرى.

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

وكما هو متوقّع، لا يزال أمر curl هذا ينتهي بانتهاء المهلة لأنّ شبكة VPC الخاصة بالخادم1 لا تتضمّن مسارًا للعودة إلى شبكة VPC الخاصة بالعميل من خلال مثيل البوابة حتى الآن.

اخرج من جلسة SSH لمتابعة الدرس البرمجي.

إضافة مسار مخصّص في شبكة VPC لخادم ULA

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute routes create server1-to-client-route \
   --project=$projectname \
   --destination-range=$client_subnet \
   --network=server-vpc1 \
   --next-hop-address=$gateway_ula_address

العودة إلى مثيل العميل باستخدام بروتوكول النقل الآمن:

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

داخل مثيل العميل، حاوِل إرسال طلب curl إلى مثيل الخادم مرة أخرى.

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

سينجح أمر curl هذا الآن، ما يوضّح أنّه يمكنك الوصول إلى الخادم من مثيل العميل. لا يمكن تحقيق إمكانية الاتصال هذه الآن إلا من خلال استخدام مسارات IPv6 المخصّصة مع next-hop-address كقفزات تالية.

مثال على الناتج

<user id>@client-instance:~$ curl -m 5.0 -g -6 'http://[fd20:3df:8d5c:0:0:0:0:0]:80/'
<!doctype html><html><body><h1>Hello World! From Server1!</h1></body></html>

اخرج من جلسة SSH لمتابعة الدرس البرمجي.

9. إنشاء مسار إلى بوابة الإنترنت واختباره

أثناء إعداد هذا المختبر، لنختبر أيضًا وظيفة السمة الجديدة الخاصة بالقفزة التالية: next-hop-gateway.

تنفيذ أمر curl من العميل إلى مثيل خادم GUA

للاطّلاع على السلوك قبل إضافة أي مسارات جديدة نفِّذ أمر curl من مثيل العميل إلى عنوان IP الخاص بالخادم 2.

داخل Cloud Shell، سجِّل الدخول إلى مثيل العميل:

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

داخل مثيل العميل، نفِّذ عملية curl باتجاه نقطة نهاية IPv6

curl -m 5.0 -g -6 'http://[GUA-ipv6-address-of-server2]:80/'

من المفترض أن تنتهي مهلة أمر curl هذا لأنّ شبكة VPC للعميل لا تتضمّن سوى مسار الشبكة الفرعية ومسارًا إلى شبكة VPC الخاصة بالخادم 1. للوصول إلى نطاق عنوان GUA الخاص بشبكة VPC للخادم 2، عليك استخدام بوابة الإنترنت التلقائية من خلال مسار مخصّص.

اخرج من جلسة SSH لمتابعة الدرس البرمجي.

إضافة مسار مدخل مخصّص في شبكة VPC الخاصة بالعميل

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute routes create client-to-server2-route \
   --project=$projectname \
   --destination-range=$server_subnet2 \
   --network=client-vpc \
   --next-hop-gateway=default-internet-gateway

العودة إلى مثيل العميل باستخدام بروتوكول النقل الآمن:

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

داخل مثيل العميل، كرِّر الأمر curl نفسه

curl -m 5.0 -g -6 'http://[GUA-ipv6-address-of-server2]:80/'

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

مثال على الناتج:

<user id>@client-instance:~$ curl -m 5.0 -g -6 'http://[2600:1900:4000:71fd:0:0:0:0]:80/'
<!doctype html><html><body><h1>Hello World! From Server2!</h1></body></html>

اخرج من جلسة SSH للانتقال إلى قسم التنظيف في المختبر.

10. تَنظيم

تنظيف الأجهزة الافتراضية

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute instances delete client-instance --zone us-central1-a --quiet --project=$projectname

gcloud compute instances delete server-instance1 --zone us-central1-a --quiet --project=$projectname

gcloud compute instances delete server-instance2 --zone us-central1-a --quiet --project=$projectname

gcloud compute instances delete gateway-instance --zone us-central1-a --quiet --project=$projectname

تنظيف الشبكات الفرعية

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute networks subnets delete client-subnet --region=us-central1 --quiet --project=$projectname

gcloud compute networks subnets delete server-subnet1 --region=us-central1 --quiet --project=$projectname

gcloud compute networks subnets delete server-subnet2 --region=us-central1 --quiet --project=$projectname

تنظيف قواعد جدار الحماية

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute firewall-rules delete allow-iap-client  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-iap-server1  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-iap-server2  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-gateway-client  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-client-server1  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-client-server2  --quiet --project=$projectname

تنظيف المسارات المخصّصة

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute routes delete client-to-server1-route  --quiet --project=$projectname
gcloud compute routes delete client-to-server2-route  --quiet --project=$projectname
gcloud compute routes delete server1-to-client-route  --quiet --project=$projectname

تنظيف السحابات الخاصة الافتراضية (VPC)

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute networks delete client-vpc --quiet --project=$projectname
gcloud compute networks delete server-vpc1 --quiet --project=$projectname
gcloud compute networks delete server-vpc2 --quiet --project=$projectname

11. تهانينا

لقد استخدمت بنجاح مسارات IPv6 الثابتة المخصّصة مع ضبط القفزات التالية على next-hop-gateway وnext-hop-instance وnext-hop-address. لقد تحقّقت أيضًا من إمكانية التواصل عبر بروتوكول IPv6 بشكل تام بين الأطراف باستخدام هذه المسارات.

ما هي الخطوات التالية؟

اطّلِع على بعض دروس الترميز التطبيقية هذه...

محتوى إضافي للقراءة والفيديوهات

المستندات المرجعية