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)")
البنية العامة للمختبر

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