১. ভূমিকা
স্ট্যাটিক কাস্টম রুট একটি VPC-এর ডিফল্ট রাউটিং আচরণকে প্রভাবিত করে। IPv6 কাস্টম রুট এখন নতুন নেক্সট-হপ অ্যাট্রিবিউট সমর্থন করে: নেক্সট-হপ-গেটওয়ে, নেক্সট-হপ-ইনস্ট্যান্স এবং নেক্সট-হপ-অ্যাড্রেস। এই কোডল্যাবে বর্ণনা করা হয়েছে কিভাবে একটি মাল্টি-এনআইসি ভিএম ইনস্ট্যান্স দ্বারা সংযুক্ত দুটি VPC ব্যবহার করে এই নতুন নেক্সট-হপ অপশনগুলোর সাথে IPv6 কাস্টম রুট ব্যবহার করতে হয়। এছাড়াও আপনি ULA এবং GUA অ্যাড্রেসিং-এর মিশ্রণ প্রদর্শন করবেন এবং নতুন কাস্টম রুট সক্ষমতা ব্যবহার করে ULA VPC-কে পাবলিক ইন্টারনেটে পৌঁছানোর সুবিধা প্রদান করবেন।
আপনি যা শিখবেন
- ILB-এর নাম উল্লেখ করে কীভাবে নেক্সট-হপ-আইএলবি (next-hop-ilb) নেক্সট-হপ সহ একটি IPv6 কাস্টম রুট তৈরি করবেন
- ILB-এর IPv6 অ্যাড্রেস উল্লেখ করে কীভাবে নেক্সট-হপ-আইএলবি নেক্সট-হপ সহ একটি IPv6 কাস্টম রুট তৈরি করবেন
আপনার যা যা লাগবে
- গুগল ক্লাউড প্রজেক্ট
২. শুরু করার আগে
কোডল্যাব সমর্থন করার জন্য প্রকল্পটি আপডেট করুন।
এই কোডল্যাবটি ক্লাউড শেলে gcloud কনফিগারেশন বাস্তবায়নে সাহায্য করার জন্য $variables ব্যবহার করে।
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন।
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export projectname=$(gcloud config list --format="value(core.project)")
সামগ্রিক ল্যাব স্থাপত্য

উভয় ধরণের কাস্টম রুট নেক্সট-হপ দেখানোর জন্য, আপনি ULA অ্যাড্রেসিং ব্যবহার করে দুটি VPC তৈরি করবেন: একটি ক্লায়েন্ট এবং একটি সার্ভার VPC।
ক্লায়েন্ট VPC থেকে সার্ভার অ্যাক্সেস করার জন্য, আপনাকে দুটি ILB-এর মাঝে থাকা একাধিক NIC গেটওয়ে ইনস্ট্যান্সের একটি গ্রুপের সামনে একটি ILB-এর দিকে (ILB-এর নাম ব্যবহার করে) নির্দেশিত next-hop-ilb সহ একটি কাস্টম রুট ব্যবহার করতে হবে। ক্লায়েন্ট ইনস্ট্যান্সে রাউটিং ফিরিয়ে দেওয়ার জন্য (ডিফল্ট ::/0 রুটটি মুছে ফেলার পর), আপনাকে ILB-এর দিকে নির্দেশিত next-hop-ilb সহ (ILB-এর ঠিকানা ব্যবহার করে) একটি কাস্টম রুট ব্যবহার করতে হবে।
৩. ক্লায়েন্ট ভিপিসি সেটআপ
ক্লায়েন্ট ভিপিসি তৈরি করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute networks create client-vpc \
--project=$projectname \
--subnet-mode=custom --mtu=1500 \
--bgp-routing-mode=regional \
--enable-ula-internal-ipv6
ক্লায়েন্ট সাবনেট তৈরি করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
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=internal \
--region=us-central1
এই কমান্ডটি ব্যবহার করে নির্ধারিত IPv6 সাবনেটটি একটি এনভায়রনমেন্ট ভেরিয়েবলে রেকর্ড করুন।
export client_subnet=$(gcloud compute networks subnets \
describe client-subnet \
--project $projectname \
--format="value(internalIpv6Prefix)" \
--region us-central1)
ক্লায়েন্ট ইনস্ট্যান্স চালু করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute instances create client-instance \
--subnet client-subnet \
--stack-type IPV4_IPV6 \
--zone us-central1-a \
--project=$projectname
ক্লায়েন্ট VPC ট্র্যাফিকের জন্য ফায়ারওয়াল নিয়ম যোগ করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
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 অনুমোদনের জন্য ফায়ারওয়াল নিয়ম যোগ করুন।
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
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 অ্যাক্সেস নিশ্চিত করুন
ক্লাউড শেলের ভিতরে, ক্লায়েন্ট-ইনস্ট্যান্সে লগ ইন করুন:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
সফল হলে, আপনি ক্লায়েন্ট ইনস্ট্যান্স থেকে একটি টার্মিনাল উইন্ডো দেখতে পাবেন। কোডল্যাবের কাজ চালিয়ে যেতে SSH সেশন থেকে বেরিয়ে যান।
৪. সার্ভার ভিপিসি সেটআপ
সার্ভার ভিপিসি তৈরি করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute networks create server-vpc \
--project=$projectname \
--subnet-mode=custom --mtu=1500 \
--bgp-routing-mode=regional \
--enable-ula-internal-ipv6
সার্ভার সাবনেট তৈরি করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute networks subnets create server-subnet \
--network=server-vpc \
--project=$projectname \
--range=192.168.0.0/24 \
--stack-type=IPV4_IPV6 \
--ipv6-access-type=internal \
--region=us-central1
এই কমান্ডটি ব্যবহার করে নির্ধারিত সাবনেটটি একটি এনভায়রনমেন্ট ভেরিয়েবলে রেকর্ড করুন।
export server_subnet=$(gcloud compute networks subnets \
describe server-subnet \
--project $projectname \
--format="value(internalIpv6Prefix)" \
--region us-central1)
সার্ভার ভিএম চালু করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute instances create server-instance \
--subnet server-subnet \
--stack-type IPV4_IPV6 \
--zone us-central1-a \
--project=$projectname
ক্লায়েন্ট থেকে সার্ভারে অ্যাক্সেসের অনুমতি দিতে ফায়ারওয়াল নিয়ম যোগ করুন।
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute firewall-rules create allow-client-server \
--direction=INGRESS --priority=1000 \
--network=server-vpc --action=ALLOW \
--rules=tcp --source-ranges=$client_subnet \
--project=$projectname
IAP অনুমোদনের জন্য ফায়ারওয়াল নিয়ম যোগ করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute firewall-rules create allow-iap-server \
--direction=INGRESS --priority=1000 \
--network=server-vpc --action=ALLOW \
--rules=tcp:22 \
--source-ranges=35.235.240.0/20 \
--project=$projectname
ULA সার্ভার ইনস্ট্যান্সে অ্যাপাচি ইনস্টল করুন
ক্লাউড শেলের ভিতরে, ক্লায়েন্ট-ইনস্ট্যান্সে লগ ইন করুন:
gcloud compute ssh server-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
সার্ভার ভিএম শেলের ভিতরে, নিম্নলিখিত কমান্ডটি চালান।
sudo apt update && sudo apt -y install apache2
অ্যাপাচি চালু আছে কিনা তা যাচাই করুন।
sudo systemctl status apache2
ডিফল্ট ওয়েব পৃষ্ঠাটি ওভাররাইট করুন
echo '<!doctype html><html><body><h1>Hello World! From Server Instance!</h1></body></html>' | sudo tee /var/www/html/index.html
কোডল্যাবের কাজ চালিয়ে যেতে SSH সেশন থেকে বেরিয়ে যান।
৫. গেটওয়ে ইনস্ট্যান্স তৈরি করুন
একাধিক NIC গেটওয়ে ইনস্ট্যান্স টেমপ্লেট তৈরি করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute instance-templates create gateway-instance-template \
--project=$projectname \
--instance-template-region=us-central1 \
--region=us-central1 \
--network-interface=stack-type=IPV4_IPV6,subnet=client-subnet,no-address \
--network-interface=stack-type=IPV4_IPV6,subnet=server-subnet,no-address \
--can-ip-forward \
--metadata=startup-script='#! /bin/bash
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'
একাধিক NIC গেটওয়ে ইনস্ট্যান্স গ্রুপ তৈরি করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute instance-groups managed create gateway-instance-group \
--project=$projectname \
--base-instance-name=gateway-instance \
--template=projects/$projectname/regions/us-central1/instanceTemplates/gateway-instance-template \
--size=2 \
--zone=us-central1-a
গেটওয়ে ইনস্ট্যান্সগুলি যাচাই করুন
আমাদের স্টার্টআপ স্ক্রিপ্টটি সঠিকভাবে পাস করা হয়েছে এবং v6 রাউটিং টেবিলটি সঠিক আছে কিনা তা নিশ্চিত করতে, গেটওয়ে ইনস্ট্যান্সগুলোর একটিতে SSH করুন।
ক্লাউড শেলের ভিতরে, নিম্নলিখিত কমান্ডটি চালিয়ে গেটওয়ে ইনস্ট্যান্সগুলির তালিকা তৈরি করুন:
gcloud compute instances list \
--project=$projectname \
--zones=us-central1-a \
--filter name~gateway \
--format 'csv(name)'
ইনস্ট্যান্সের নামগুলোর মধ্যে একটি নোট করুন এবং পরবর্তী কমান্ডে সেই ইনস্ট্যান্সে SSH করার জন্য এটি ব্যবহার করুন।
ক্লাউড শেলের ভিতরে, গেটওয়ে ইনস্ট্যান্সগুলির মধ্যে একটিতে লগ ইন করুন।
gcloud compute ssh gateway-instance-<suffix> \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
IPv6 ফরওয়ার্ডিং পরীক্ষা করতে গেটওয়ে ভিএম শেলের ভিতরে নিম্নলিখিত কমান্ডটি চালান।
sudo sysctl net.ipv6.conf.all.forwarding
কমান্ডটির রিটার্ন ভ্যালু "1" হওয়া উচিত, যা নির্দেশ করে যে IPv6 ফরওয়ার্ডিং সক্রিয় করা হয়েছে।
ইনস্ট্যান্সটিতে 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 সেশন থেকে বেরিয়ে যান।
৬. লোড ব্যালেন্সার উপাদান তৈরি করুন
উভয় VPC-তে রাউট তৈরি করার আগে, ট্র্যাফিক ফরওয়ার্ড করার জন্য আমাদের গেটওয়ে ইনস্ট্যান্সগুলোর উভয় পাশে অভ্যন্তরীণ পাসথ্রু লোড ব্যালেন্সার তৈরি করতে হবে।
এই কোডল্যাবে তৈরি লোড ব্যালেন্সারগুলো গঠিত হয়েছে
- হেলথ চেক: এই কোডল্যাবে, আমরা পোর্ট ২২-কে লক্ষ্য করে কিছু সাধারণ হেলথ চেক তৈরি করব। উল্লেখ্য যে, হেলথ চেকগুলো সরাসরি ডেপ্লয় করা অবস্থায় কাজ করবে না (এর জন্য হেলথ চেকের অনুমতি দিতে ফায়ারওয়াল রুল যোগ করতে হবে এবং গেটওয়ে ইনস্ট্যান্সগুলোতে বিশেষ রুট তৈরি করতে হবে)। যেহেতু এই কোডল্যাবটি IPv6 ফরওয়ার্ডিং-এর উপর কেন্দ্র করে তৈরি, তাই সব ব্যাকএন্ড আনহেলদি বা অস্বাস্থ্যকর হয়ে গেলে আমরা ইন্টারনাল পাস-থ্রু লোড ব্যালান্সারগুলোর ডিফল্ট ট্র্যাফিক ডিস্ট্রিবিউশন আচরণের উপর নির্ভর করব, অর্থাৎ, শেষ উপায় হিসেবে সব ব্যাকএন্ডে ট্র্যাফিক ফরওয়ার্ড করে দেব।
- ব্যাকএন্ড সার্ভিস: আমরা ব্যাকএন্ড সার্ভিসের জন্য TCP প্রোটোকল ব্যবহার করব। কিন্তু যেহেতু লোড ব্যালেন্সারগুলো রাউটিংয়ের উদ্দেশ্যে তৈরি করা হয়েছে, তাই ব্যাকএন্ড সার্ভিসের প্রোটোকল নির্বিশেষে সমস্ত প্রোটোকলই ফরওয়ার্ড করা হয়।
- ফরওয়ার্ডিং রুল: আমরা প্রতিটি VPC-এর জন্য একটি করে ফরওয়ার্ডিং রুল তৈরি করি।
- অভ্যন্তরীণ IPv6 ঠিকানা: এই কোডল্যাবে, আমরা ফরওয়ার্ডিং নিয়মকে সাবনেট থেকে স্বয়ংক্রিয়ভাবে IPv6 ঠিকানা বরাদ্দ করতে দেব।
স্বাস্থ্য পরীক্ষা তৈরি করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute health-checks create tcp tcp-hc-22 \
--project=$projectname \
--region=us-central1 \
--port=22
ব্যাকএন্ড পরিষেবা তৈরি করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute backend-services create bes-ilb-clientvpc \
--project=$projectname \
--load-balancing-scheme=internal \
--protocol=tcp \
--network=client-vpc \
--region=us-central1 \
--health-checks=tcp-hc-22 \
--health-checks-region=us-central1
gcloud compute backend-services create bes-ilb-servervpc \
--project=$projectname \
--load-balancing-scheme=internal \
--protocol=tcp \
--network=server-vpc \
--region=us-central1 \
--health-checks=tcp-hc-22 \
--health-checks-region=us-central1
ব্যাকএন্ড সার্ভিসে ইনস্ট্যান্স গ্রুপ যোগ করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute backend-services add-backend bes-ilb-clientvpc \
--project=$projectname \
--region=us-central1 \
--instance-group=gateway-instance-group \
--instance-group-zone=us-central1-a
gcloud compute backend-services add-backend bes-ilb-servervpc \
--project=$projectname \
--region=us-central1 \
--instance-group=gateway-instance-group \
--instance-group-zone=us-central1-a
ফরওয়ার্ডিং নিয়ম তৈরি করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute forwarding-rules create fr-ilb-clientvpc \
--project=$projectname \
--region=us-central1 \
--load-balancing-scheme=internal \
--network=client-vpc \
--subnet=client-subnet \
--ip-protocol=TCP \
--ip-version=IPV6 \
--ports=ALL \
--backend-service=bes-ilb-clientvpc \
--backend-service-region=us-central1
gcloud compute forwarding-rules create fr-ilb-servervpc \
--project=$projectname \
--region=us-central1 \
--load-balancing-scheme=internal \
--network=server-vpc \
--subnet=server-subnet \
--ip-protocol=TCP \
--ip-version=IPV6 \
--ports=ALL \
--backend-service=bes-ilb-servervpc \
--backend-service-region=us-central1
Cloudshell-এ নিম্নলিখিত কমান্ডগুলো ব্যবহার করে উভয় ফরওয়ার্ডিং রুলের IPv6 অ্যাড্রেসগুলো রেকর্ড করুন:
export fraddress_client=$(gcloud compute forwarding-rules \
describe fr-ilb-clientvpc \
--project $projectname \
--format="value(IPAddress)" \
--region us-central1)
export fraddress_server=$(gcloud compute forwarding-rules \
describe fr-ilb-servervpc \
--project $projectname \
--format="value(IPAddress)" \
--region us-central1)
৭. লোড ব্যালেন্সারের ঠিকানা ব্যবহার করে লোড ব্যালেন্সারগুলোর জন্য রুট তৈরি ও পরীক্ষা করুন।
এই অংশে, আপনি লোড ব্যালেন্সারের IPv6 অ্যাড্রেসগুলোকে নেক্সট-হপ হিসেবে ব্যবহার করে ক্লায়েন্ট এবং সার্ভার উভয় VPC-এর জন্য রাউট যোগ করবেন।
সার্ভার ঠিকানাগুলো লিখে রাখুন।
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute instances list \
--project $projectname \
--zones us-central1-a \
--filter="name~server-instance" \
--format='value[separator=","](name,networkInterfaces[0].ipv6Address)'
এটি সার্ভার ইনস্ট্যান্সের নাম এবং তাদের IPv6 প্রিফিক্স উভয়ই আউটপুট করবে। নমুনা আউটপুট
server-instance,fd20:3df:8d5c:0:0:0:0:0
সার্ভারের ঠিকানাটি লিখে রাখুন, কারণ পরে ক্লায়েন্ট ইনস্ট্যান্স থেকে `curl` কমান্ড চালানোর সময় এটি ব্যবহার করতে হবে। দুর্ভাগ্যবশত, এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে এগুলো সহজে সংরক্ষণ করা যায় না, কারণ SSH সেশনের মাধ্যমে এগুলো স্থানান্তরিত হয় না।
ক্লায়েন্ট থেকে ULA সার্ভার ইনস্ট্যান্সে curl কমান্ড চালান
যেকোনো নতুন রাউট যোগ করার আগে এর আচরণ দেখতে, ক্লায়েন্ট ইনস্ট্যান্স থেকে সার্ভার-ইনস্ট্যান্স১-এর দিকে একটি কার্ল (curl) কমান্ড চালান।
ক্লাউড শেলের ভিতরে, ক্লায়েন্ট-ইনস্ট্যান্সে লগ ইন করুন:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
ক্লায়েন্ট ইনস্ট্যান্সের ভিতরে, server1 ইনস্ট্যান্সের ULA IPV6 অ্যাড্রেস ব্যবহার করে একটি curl কমান্ড চালান (curl-কে বেশিক্ষণ অপেক্ষা করানো এড়াতে কমান্ডটি ৫ সেকেন্ডের একটি স্বল্প টাইমআউট সেট করে)।
curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'
এই curl কমান্ডটির টাইমআউট হওয়া উচিত, কারণ ক্লায়েন্ট VPC-তে এখনও সার্ভার VPC-এর দিকে কোনো রুট নেই।
চলুন এটা ঠিক করার চেষ্টা করি! আপাতত SSH সেশন থেকে বেরিয়ে যান।
ক্লায়েন্ট VPC-তে কাস্টম রুট যোগ করুন
যেহেতু ক্লায়েন্ট VPC-তে ULA প্রিফিক্সের দিকে কোনো রুট নেই, তাই এখন অ্যাড্রেসের মাধ্যমে ক্লায়েন্ট-সাইড ILB-কে নির্দেশ করে এমন একটি রুট তৈরি করে সেটি যোগ করা যাক।
দ্রষ্টব্য: IPv6 অভ্যন্তরীণ পাসথ্রু লোড ব্যালেন্সারগুলিকে /96 অ্যাড্রেস বরাদ্দ করা হয়। পরবর্তী কমান্ডে পাঠানোর আগে অ্যাড্রেসটি থেকে /96 মাস্কটি বাদ দেওয়া প্রয়োজন। (নিচে ব্যাশ ইন-প্লেস সাবস্টিটিউশন ব্যবহার করা হয়েছে)
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute routes create client-to-server-route \
--project=$projectname \
--destination-range=$server_subnet \
--network=client-vpc \
--next-hop-ilb=${fraddress_client//\/96}
ক্লায়েন্ট ইনস্ট্যান্সে SSH-এর মাধ্যমে পুনরায় লগইন করুন:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
ক্লায়েন্ট ইনস্ট্যান্সের ভেতর থেকে সার্ভার ইনস্ট্যান্সে আবার `curl` কমান্ডটি চালানোর চেষ্টা করুন। (এই কমান্ডটি `curl`-কে বেশিক্ষণ অপেক্ষা করা থেকে বিরত রাখতে ৫ সেকেন্ডের একটি স্বল্প সময়ের টাইমআউট সেট করে।)
curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'
এই curl কমান্ডটি এখনও টাইম আউট হয়ে যাচ্ছে, কারণ সার্ভার VPC-তে এখনও গেটওয়ে ইনস্ট্যান্সের মাধ্যমে ক্লায়েন্ট VPC-তে ফিরে যাওয়ার কোনো রুট নেই।
কোডল্যাবের কাজ চালিয়ে যেতে SSH সেশন থেকে বেরিয়ে যান।
সার্ভার ভিপিসিতে কাস্টম রুট যোগ করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute routes create server-to-client-route \
--project=$projectname \
--destination-range=$client_subnet \
--network=server-vpc \
--next-hop-ilb=${fraddress_server//\/96}
ক্লায়েন্ট ইনস্ট্যান্সে SSH-এর মাধ্যমে পুনরায় লগইন করুন:
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 সার্ভার ইনস্ট্যান্স পর্যন্ত এন্ড-টু-এন্ড সংযোগ স্থাপন করা সম্ভব হয়েছে। এই সংযোগটি এখন শুধুমাত্র নেক্সট-হপ হিসেবে next-hop-ilb সহ 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 Server Instance!</h1></body></html>
কোডল্যাবের কাজ চালিয়ে যেতে SSH সেশন থেকে বেরিয়ে যান।
৮. লোড ব্যালেন্সারের নাম ব্যবহার করে লোড ব্যালেন্সারগুলোর জন্য রুট তৈরি ও পরীক্ষা করুন।
বিকল্পভাবে, নেক্সট-হপ-আইএলবি লোড ব্যালান্সারের IPv6 অ্যাড্রেসের পরিবর্তে তার নামও উল্লেখ করতে পারে। এই অংশে আমরা তা করার পদ্ধতি আলোচনা করব এবং ক্লায়েন্ট ও সার্ভারের মধ্যে সংযোগ এখনও স্থাপিত আছে কিনা তা পরীক্ষা করব।
পূর্ববর্তী রুটগুলি মুছে ফেলুন
ইনস্ট্যান্স নামটি ব্যবহার করে এমন কাস্টম রুটগুলো মুছে ফেলার মাধ্যমে, চলুন যেকোনো কাস্টম রুট যোগ করার আগের অবস্থায় পরিবেশটি ফিরিয়ে আনি।
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute routes delete client-to-server-route --quiet --project=$projectname
gcloud compute routes delete server-to-client-route --quiet --project=$projectname
ক্লায়েন্ট থেকে ULA সার্ভার ইনস্ট্যান্সে curl কমান্ড চালান
পূর্ববর্তী রুটগুলি সফলভাবে মুছে ফেলা হয়েছে কিনা তা নিশ্চিত করতে, ক্লায়েন্ট ইনস্ট্যান্স থেকে সার্ভার-ইনস্ট্যান্স১-এর দিকে একটি কার্ল (curl) কমান্ড চালান।
ক্লাউড শেলের ভিতরে, ক্লায়েন্ট-ইনস্ট্যান্সে লগ ইন করুন:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
ক্লায়েন্ট ইনস্ট্যান্সের ভিতরে, server1 ইনস্ট্যান্সের ULA IPV6 অ্যাড্রেস ব্যবহার করে একটি curl কমান্ড চালান (curl-কে বেশিক্ষণ অপেক্ষা করানো এড়াতে কমান্ডটি ৫ সেকেন্ডের একটি স্বল্প টাইমআউট সেট করে)।
curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'
এই curl কমান্ডটির টাইমআউট হওয়া উচিত, কারণ ক্লায়েন্ট VPC-তে সার্ভার VPC-এর দিকে আর কোনো রুট নেই।
ক্লায়েন্ট এবং সার্ভার ভিপিসিতে কাস্টম রুট যোগ করুন
চলুন ক্লায়েন্ট এবং সার্ভার উভয় VPC-তেই কাস্টম রুটগুলো পুনরায় যোগ করি, কিন্তু এবার ILB-এর অ্যাড্রেসের পরিবর্তে কমান্ডে ILB-এর নাম এবং রিজিয়ন ব্যবহার করব।
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute routes create client-to-server-route \
--project=$projectname \
--destination-range=$server_subnet \
--network=client-vpc \
--next-hop-ilb=fr-ilb-clientvpc \
--next-hop-ilb-region=us-central1
gcloud compute routes create server-to-client-route \
--project=$projectname \
--destination-range=$client_subnet \
--network=server-vpc \
--next-hop-ilb=fr-ilb-servervpc \
--next-hop-ilb-region=us-central1
ক্লায়েন্ট ইনস্ট্যান্সে SSH-এর মাধ্যমে পুনরায় লগইন করুন:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
ক্লায়েন্ট ইনস্ট্যান্সের ভেতর থেকে সার্ভার ইনস্ট্যান্সে আবার `curl` কমান্ডটি চালানোর চেষ্টা করুন। (এই কমান্ডটি `curl`-কে বেশিক্ষণ অপেক্ষা করা থেকে বিরত রাখতে ৫ সেকেন্ডের একটি স্বল্প সময়ের টাইমআউট সেট করে।)
curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'
এই curl কমান্ডটি এখন সফল হয়েছে, যা প্রমাণ করে যে ক্লায়েন্ট ইনস্ট্যান্স থেকে ULA সার্ভার ইনস্ট্যান্সের দিকে এন্ড-টু-এন্ড সংযোগ স্থাপন করা সম্ভব হয়েছে।
৯. পরিষ্কার করুন
কাস্টম রুটগুলি পরিষ্কার করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute routes delete client-to-server-route --quiet --project=$projectname
gcloud compute routes delete server-to-client-route --quiet --project=$projectname
এলবি উপাদানগুলি পরিষ্কার করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute forwarding-rules delete fr-ilb-clientvpc --region us-central1 --quiet --project=$projectname
gcloud compute forwarding-rules delete fr-ilb-servervpc --region us-central1 --quiet --project=$projectname
gcloud compute backend-services delete bes-ilb-clientvpc --region us-central1 --quiet --project=$projectname
gcloud compute backend-services delete bes-ilb-servervpc --region us-central1 --quiet --project=$projectname
gcloud compute health-checks delete tcp-hc-22 --region us-central1 --quiet --project=$projectname
ইনস্ট্যান্স এবং ইনস্ট্যান্স টেমপ্লেট পরিষ্কার করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute instances delete client-instance --zone us-central1-a --quiet --project=$projectname
gcloud compute instances delete server-instance --zone us-central1-a --quiet --project=$projectname
gcloud compute instance-groups managed delete gateway-instance-group --zone us-central1-a --quiet --project=$projectname
gcloud compute instance-templates delete gateway-instance-template --region us-central1 --quiet --project=$projectname
সাবনেট পরিষ্কার করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute networks subnets delete client-subnet --region=us-central1 --quiet --project=$projectname
gcloud compute networks subnets delete server-subnet --region=us-central1 --quiet --project=$projectname
ফায়ারওয়াল নিয়ম পরিষ্কার করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute firewall-rules delete allow-iap-client --quiet --project=$projectname
gcloud compute firewall-rules delete allow-iap-server --quiet --project=$projectname
gcloud compute firewall-rules delete allow-gateway-client --quiet --project=$projectname
gcloud compute firewall-rules delete allow-client-server --quiet --project=$projectname
ভিপিসি পরিষ্কার করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute networks delete client-vpc --quiet --project=$projectname
gcloud compute networks delete server-vpc --quiet --project=$projectname
১০. অভিনন্দন
আপনি নেক্সট-হপ-আইএলবি (next-hop-ilb)-তে নেক্সট-হপ সেট করে সফলভাবে স্ট্যাটিক কাস্টম আইপিভি৬ (IPv6) রুট ব্যবহার করেছেন। আপনি ঐ রুটগুলো ব্যবহার করে এন্ড-টু-এন্ড আইপিভি৬ (IPv6) যোগাযোগও যাচাই করেছেন।
এরপর কী?
এই কোডল্যাবগুলো দেখে নিন...
- IPv6 ঠিকানা ব্যবহার করে অন-প্রিমিসেস হোস্ট থেকে গুগল এপিআই অ্যাক্সেস করুন
- আইপি অ্যাড্রেসিং বিকল্প IPv4 এবং IPv6
- IPv6 স্ট্যাটিক রুটের নেক্সট হপ ইনস্ট্যান্স, নেক্সট হপ অ্যাড্রেস এবং নেক্সট হপ গেটওয়ে ব্যবহার করে