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

1. مقدمة

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

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

  • كيفية إنشاء مسار مخصّص لبروتوكول IPv6 باستخدام مثيل الوجهة التالية
  • كيفية إنشاء مسار مخصّص لبروتوكول IPv6 باستخدام عبّارة القفزة التالية
  • كيفية إنشاء مسار مخصّص لبروتوكول IPv6 باستخدام عنوان الوثبة التالية

المتطلبات

  • مشروع Google Cloud

2. قبل البدء

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

يستفيد هذا الدرس التطبيقي حول الترميز من المتغيرات $للمساعدة في تنفيذ إعدادات 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 داخلي فريد محليًا

داخل 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

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

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

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

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 الخاصة بالعميل

استعدادًا لإعادة توجيه حركة بيانات ULA v6 إلى مثيل متعدد بطاقات NIC وإيقاف توجيه الخروج من الإنترنت احذف المسار التلقائي ::/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 للعميل والخادم باستخدام اسم مثيل البوابة كعنوان IP للقفزة التالية.

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

داخل 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 هذا الآن، ما يوضّح أنّه يمكنك الوصول إلى الخادم من مثيل العميل إلى مثيل خادم ULA. لا يمكن تحقيق هذا الاتصال الآن إلا من خلال استخدام مسارات مخصّصة لإصدار 6 من بروتوكول الإنترنت مع استخدام next-hop-instance كقفزات تالية.

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

<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 هذا الآن، ما يوضّح أنّه يمكنك الوصول إلى الخادم من مثيل العميل إلى مثيل خادم ULA. لا يمكن تحقيق إمكانية الربط هذه الآن إلا من خلال استخدام مسارات مخصّصة لإصدار 6 من بروتوكول الإنترنت (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 بين الأطراف باستخدام هذه المسارات.

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

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

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

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