IPv6 স্ট্যাটিক রুট ব্যবহার করে পরবর্তী হপ ইনস্ট্যান্স (আনট্যাগ করা এবং ট্যাগ করা), পরবর্তী হপ ঠিকানা এবং পরবর্তী হপ গেটওয়ে

১. ভূমিকা

স্ট্যাটিক কাস্টম রুট একটি VPC-এর ডিফল্ট রাউটিং আচরণকে প্রভাবিত করে। IPv6 কাস্টম রুট এখন নতুন নেক্সট-হপ অ্যাট্রিবিউট সমর্থন করে: নেক্সট-হপ-গেটওয়ে, নেক্সট-হপ-ইনস্ট্যান্স এবং নেক্সট-হপ-অ্যাড্রেস। এই কোডল্যাবে বর্ণনা করা হয়েছে কিভাবে একটি মাল্টি-এনআইসি ভিএম ইনস্ট্যান্স দ্বারা সংযুক্ত দুটি VPC ব্যবহার করে এই নতুন নেক্সট-হপ অপশনগুলোর সাথে IPv6 কাস্টম রুট ব্যবহার করতে হয়। এছাড়াও আপনি ULA এবং GUA অ্যাড্রেসিং-এর মিশ্রণ প্রদর্শন করবেন এবং নতুন কাস্টম রুট সক্ষমতা ব্যবহার করে ULA VPC-কে পাবলিক ইন্টারনেটে পৌঁছানোর সুবিধা প্রদান করবেন।

আপনি যা শিখবেন

  • নেক্সট-হপ-ইনস্ট্যান্স নেক্সট-হপ ব্যবহার করে কীভাবে একটি IPv6 কাস্টম রুট তৈরি করবেন
  • নেক্সট-হপ-গেটওয়ে নেক্সট-হপ ব্যবহার করে কীভাবে একটি IPv6 কাস্টম রুট তৈরি করবেন
  • নেক্সট-হপ-অ্যাড্রেস নেক্সট-হপ সহ কীভাবে একটি IPv6 কাস্টম রুট তৈরি করবেন

আপনার যা যা লাগবে

  • গুগল ক্লাউড প্রজেক্ট

২. শুরু করার আগে

কোডল্যাব সমর্থন করার জন্য প্রকল্পটি আপডেট করুন।

এই কোডল্যাবটি ক্লাউড শেলে gcloud কনফিগারেশন বাস্তবায়নে সাহায্য করার জন্য $variables ব্যবহার করে।

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন।

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

সামগ্রিক ল্যাব স্থাপত্য

eae86f3e371e74b8.png

উভয় ধরণের কাস্টম রুট নেক্সট-হপ দেখানোর জন্য, আপনি ৩টি ভিপিসি তৈরি করবেন: একটি ক্লায়েন্ট ভিপিসি যা GUA অ্যাড্রেসিং ব্যবহার করে, একটি সার্ভার ভিপিসি যা ULA অ্যাড্রেসিং ব্যবহার করে এবং দ্বিতীয় একটি সার্ভার ভিপিসি যা GUA অ্যাড্রেসিং ব্যবহার করে।

ক্লায়েন্ট VPC থেকে ULA সার্ভার অ্যাক্সেস করার জন্য, আপনাকে একটি মাল্টি-NIC গেটওয়ে ইনস্ট্যান্সের দিকে নির্দেশ করে এমন একটি কাস্টম রুট ব্যবহার করতে হবে, যেখানে নেক্সট-হপ-ইনস্ট্যান্স এবং নেক্সট-হপ-অ্যাড্রেস উভয়ই থাকবে। GUA সার্ভারে অ্যাক্সেস দেওয়ার জন্য (ডিফল্ট ::/0 রুটটি মুছে ফেলার পর), ইন্টারনেটের মাধ্যমে রাউটিং প্রদানের উদ্দেশ্যে আপনাকে ডিফল্ট ইন্টারনেট গেটওয়ের দিকে নির্দেশ করে এমন একটি কাস্টম রুট ব্যবহার করতে হবে, যেখানে নেক্সট-হপ-গেটওয়ে থাকবে।

৩. ক্লায়েন্ট ভিপিসি সেটআপ

ক্লায়েন্ট ভিপিসি তৈরি করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

ক্লায়েন্ট সাবনেট তৈরি করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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)

ক্লায়েন্ট ইনস্ট্যান্স চালু করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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 সেশন থেকে বেরিয়ে যান।

৪. ইউএলএ সার্ভার ভিপিসি সেটআপ

ULA সার্ভার VPC তৈরি করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

ULA সার্ভার সাবনেট তৈরি করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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)

একটি ULA অভ্যন্তরীণ IPV6 ঠিকানা দিয়ে সার্ভার VM চালু করুন।

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

ক্লায়েন্ট থেকে সার্ভারে অ্যাক্সেসের অনুমতি দিতে ফায়ারওয়াল নিয়ম যোগ করুন।

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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 অনুমোদনের জন্য ফায়ারওয়াল নিয়ম যোগ করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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 

ULA সার্ভার ইনস্ট্যান্সে অ্যাপাচি ইনস্টল করুন

ক্লাউড শেলের ভিতরে, ক্লায়েন্ট-ইনস্ট্যান্সে লগ ইন করুন:

gcloud compute ssh server-instance1 \
    --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 Server1!</h1></body></html>' | sudo tee /var/www/html/index.html

কোডল্যাবের কাজ চালিয়ে যেতে SSH সেশন থেকে বেরিয়ে যান।

৫. GUA সার্ভার VPC সেটআপ

GUA সার্ভার VPC তৈরি করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

GUA সার্ভার সাবনেট তৈরি করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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)

একটি GUA IPV6 ঠিকানা দিয়ে সার্ভার VM চালু করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

সাবনেটের মধ্যে অ্যাক্সেসের অনুমতি দিতে ফায়ারওয়াল নিয়ম যোগ করুন।

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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 অনুমোদনের জন্য ফায়ারওয়াল নিয়ম যোগ করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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 ইনস্টল করুন।

ক্লাউড শেলের ভিতরে, ক্লায়েন্ট-ইনস্ট্যান্সে লগ ইন করুন:

gcloud compute ssh server-instance2 \
    --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 Server2!</h1></body></html>' | sudo tee /var/www/html/index.html

কোডল্যাবের কাজ চালিয়ে যেতে SSH সেশন থেকে বেরিয়ে যান।

৬. গেটওয়ে ইনস্ট্যান্স তৈরি করুন

ক্লায়েন্ট ভিপিসির ডিফল্ট রুটটি মুছে ফেলুন

ULA v6 ট্র্যাফিককে মাল্টি-এনআইসি ইনস্ট্যান্সে পুনঃনির্দেশিত করার এবং ইন্টারনেট ইগ্রেস রাউটিং নিষ্ক্রিয় করার প্রস্তুতির জন্য, ডিফল্ট ইন্টারনেট গেটওয়ের দিকে নির্দেশকারী ডিফল্ট ::/0 রুটটি মুছে ফেলুন।

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

লঞ্চ গেটওয়ে মাল্টি-এনআইসি ভিএম

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

গেটওয়ে ইনস্ট্যান্স কনফিগার করুন

ক্লাউড শেলের ভিতরে, গেটওয়ে ইনস্ট্যান্সে লগ ইন করুন (ইনস্ট্যান্সটি বুট আপ হওয়ার সময় সফলভাবে SSH করতে কয়েক মিনিট সময় লাগতে পারে):

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

গেটওয়ে ভিএম শেলের ভিতরে, IPv6 ফরওয়ার্ডিং সক্রিয় করতে এবং ফরওয়ার্ডিং সক্রিয় থাকা অবস্থায় (accept_ra = 2) RA গ্রহণ করা চালিয়ে যেতে নিম্নলিখিত কমান্ডটি চালান।

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 সেশন থেকে বেরিয়ে যান।

৭. গেটওয়ে ইনস্ট্যান্সের জন্য রুট তৈরি ও পরীক্ষা করুন (ইনস্ট্যান্সের নামটি ব্যবহার করে)

এই অংশে, আপনি গেটওয়ে ইনস্ট্যান্সের নামটিকে নেক্সট-হপ হিসেবে ব্যবহার করে ক্লায়েন্ট এবং সার্ভার উভয় VPC-এর জন্য রাউট যোগ করবেন।

সার্ভার ঠিকানাগুলো লিখে রাখুন।

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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 সেশনের মাধ্যমে এগুলি স্থানান্তরিত হয় না।

ক্লায়েন্ট থেকে 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 প্রিফিক্সের দিকে কোনো রুট নেই, চলুন এখন সেটি যোগ করা যাক।

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

ক্লায়েন্ট ইনস্ট্যান্সে 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 কমান্ডটি এখনও টাইম আউট হয়ে যাচ্ছে, কারণ server1 VPC-তে এখনও গেটওয়ে ইনস্ট্যান্সের মাধ্যমে ক্লায়েন্ট VPC-তে ফিরে যাওয়ার কোনো রুট নেই।

কোডল্যাবের কাজ চালিয়ে যেতে SSH সেশন থেকে বেরিয়ে যান।

ULA সার্ভার VPC-তে কাস্টম রুট যোগ করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

ক্লায়েন্ট ইনস্ট্যান্সে 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 সার্ভার ইনস্ট্যান্স পর্যন্ত এন্ড-টু-এন্ড সংযোগ স্থাপন করা সম্ভব হয়েছে। এই সংযোগটি এখন শুধুমাত্র নেক্সট-হপ হিসেবে নেক্সট-হপ-ইনস্ট্যান্স ব্যবহার করে 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 সেশন থেকে বেরিয়ে যান।

৮. গেটওয়ে ইনস্ট্যান্সের জন্য রুট তৈরি ও পরীক্ষা করুন (ইনস্ট্যান্সের ঠিকানা ব্যবহার করে)

এই অংশে, আপনি গেটওয়ে ইনস্ট্যান্সের ipv6 অ্যাড্রেসকে নেক্সট-হপ হিসেবে ব্যবহার করে ক্লায়েন্ট এবং সার্ভার উভয় VPC-এর জন্য রাউট যোগ করবেন।

পূর্ববর্তী রুটগুলি মুছে ফেলুন

ইনস্ট্যান্স নামটি ব্যবহার করে এমন কাস্টম রুটগুলো মুছে ফেলার মাধ্যমে, চলুন যেকোনো কাস্টম রুট যোগ করার আগের অবস্থায় পরিবেশটি ফিরিয়ে আনি।

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

gcloud compute routes delete client-to-server1-route  --quiet --project=$projectname
gcloud compute routes delete server1-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-এর দিকে আর কোনো রুট নেই।

গেটওয়ে ইনস্ট্যান্স IPv6 ঠিকানাগুলি পান

নেক্সট-হপ-অ্যাড্রেস ব্যবহার করে রাউট লেখার আগে আমাদের গেটওয়ে ইনস্ট্যান্সের IPv6 অ্যাড্রেসগুলো সংগ্রহ করতে হবে।

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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 অ্যাড্রেস ব্যবহার করতে হবে।

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

ক্লায়েন্ট ইনস্ট্যান্সে 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/'

প্রত্যাশিতভাবেই, এই কার্ল কমান্ডটি এখনও টাইম আউট হয়ে যাচ্ছে, কারণ সার্ভার1 ভিপিসি-তে এখনও গেটওয়ে ইনস্ট্যান্সের মাধ্যমে ক্লায়েন্ট ভিপিসি-তে ফিরে যাওয়ার কোনো রুট নেই।

কোডল্যাবের কাজ চালিয়ে যেতে SSH সেশন থেকে বেরিয়ে যান।

ULA সার্ভার VPC-তে কাস্টম রুট যোগ করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

ক্লায়েন্ট ইনস্ট্যান্সে 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 সার্ভার ইনস্ট্যান্স পর্যন্ত এন্ড-টু-এন্ড সংযোগ স্থাপন করা সম্ভব হয়েছে। এই সংযোগটি এখন শুধুমাত্র নেক্সট-হপ হিসেবে নেক্সট-হপ-অ্যাড্রেস ব্যবহার করে 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 সেশন থেকে বেরিয়ে যান।

৯. ইন্টারনেট গেটওয়েতে রুট তৈরি ও পরীক্ষা করুন

যেহেতু আপনি এই ল্যাবটি সেটআপ করে রেখেছেন, চলুন নতুন নেক্সট-হপ প্রপার্টি ‘নেক্সট-হপ-গেটওয়ে’-এর কার্যকারিতাও পরীক্ষা করে দেখি।

ক্লায়েন্ট থেকে GUA সার্ভার ইনস্ট্যান্সে curl কমান্ড চালান

যেকোনো নতুন রাউট যোগ করার আগে এর আচরণ দেখতে, ক্লায়েন্ট ইনস্ট্যান্স থেকে server2-এর IP অ্যাড্রেসে একটি curl কমান্ড চালান।

ক্লাউড শেলের ভিতরে, ক্লায়েন্ট ইনস্ট্যান্সে লগ ইন করুন:

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

ক্লায়েন্ট ইনস্ট্যান্সের ভিতরে, IPv6 এন্ডপয়েন্টের দিকে একটি কার্ল (curl) চালান।

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

এই curl কমান্ডটির টাইমআউট হওয়া উচিত, কারণ ক্লায়েন্ট VPC-টির শুধুমাত্র নিজস্ব সাবনেট রুট এবং server1-এর VPC-তে যাওয়ার একটি রুট রয়েছে। server2 VPC-এর GUA রেঞ্জে পৌঁছানোর জন্য, আপনাকে একটি কাস্টম রুটের মাধ্যমে ডিফল্ট ইন্টারনেট গেটওয়ে ব্যবহার করতে হবে।

কোডল্যাবের কাজ চালিয়ে যেতে SSH সেশন থেকে বেরিয়ে যান।

ক্লায়েন্ট VPC-তে কাস্টম গেটওয়ে রুট যোগ করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

ক্লায়েন্ট ইনস্ট্যান্সে SSH-এর মাধ্যমে পুনরায় লগইন করুন:

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 সেশন থেকে বেরিয়ে যান।

১০. পরিষ্কার করুন

ইনস্ট্যান্সগুলি পরিষ্কার করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

সাবনেট পরিষ্কার করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

ফায়ারওয়াল নিয়ম পরিষ্কার করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

কাস্টম রুটগুলি পরিষ্কার করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

ভিপিসি পরিষ্কার করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

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

১১. অভিনন্দন

আপনি সফলভাবে স্ট্যাটিক কাস্টম IPv6 রুট ব্যবহার করেছেন, যেখানে নেক্সট-হপ হিসেবে নেক্সট-হপ-গেটওয়ে, নেক্সট-হপ-ইনস্ট্যান্স এবং নেক্সট-হপ-অ্যাড্রেস সেট করা হয়েছে। আপনি ঐ রুটগুলো ব্যবহার করে এন্ড-টু-এন্ড IPv6 কমিউনিকেশনও যাচাই করেছেন।

এরপর কী?

এই কোডল্যাবগুলো দেখে নিন...

আরও পড়ুন ও ভিডিও

রেফারেন্স নথি