ক্লাউড NAT ডায়নামিক পোর্ট অ্যালোকেশন ব্যবহার করা

1. ওভারভিউ

ডাইনামিক পোর্ট অ্যালোকেশন (DPA) হল Cloud NAT-এর একটি নতুন বৈশিষ্ট্য। DPA সক্ষম হলে, ক্লাউড NAT গতিশীলভাবে তাদের প্রয়োজনের উপর নির্ভর করে দৃষ্টান্তের জন্য পোর্ট বরাদ্দ উপরে/নীচ করে। DPA ন্যূনতম এবং সর্বোচ্চ পোর্ট সীমার সাথে কনফিগার করা হয়েছে যাতে এটি কখনই পোর্টগুলিকে সর্বনিম্ন থেকে কম না করে বা সর্বোচ্চ সীমা ছাড়িয়ে যায়। এটি NAT গেটওয়ের পিছনের কিছু দৃষ্টান্তকে ক্লাউড NAT-এর পিছনে সমস্ত দৃষ্টান্তে আরও পোর্ট বরাদ্দ না করেই তাদের সংযোগের সংখ্যাকে গতিশীলভাবে স্কেল করার অনুমতি দেয়।

DPA ছাড়া, ক্লাউড NAT-এর পিছনের সমস্ত দৃষ্টান্ত ব্যবহার নির্বিশেষে একই সংখ্যক পোর্ট বরাদ্দ করা হয়, যেমন minPortsPerVm প্যারামিটার দ্বারা সংজ্ঞায়িত করা হয়েছে।

আরও তথ্যের জন্য অনুগ্রহ করে NAT DPA সম্পর্কে ডকুমেন্টেশন বিভাগটি পর্যালোচনা করুন।

আপনি কি শিখবেন

  • DPA এর প্রস্তুতির জন্য কিভাবে একটি ক্লাউড NAT গেটওয়ে সেট আপ করবেন।
  • ডিপিএ ছাড়া বন্দর বরাদ্দ কিভাবে পরিদর্শন করবেন।
  • কিভাবে NAT গেটওয়ের জন্য DPA সক্রিয় এবং কনফিগার করবেন।
  • সমান্তরাল নির্গমন সংযোগগুলি চালিয়ে DPA এর প্রভাবগুলি কীভাবে পর্যবেক্ষণ করা যায়।
  • DPA সক্ষম করে NAT গেটওয়েতে NAT নিয়মগুলি কীভাবে যুক্ত করবেন।
  • একাধিক গন্তব্যে এগ্রেস সংযোগ চালিয়ে নিয়মগুলির সাথে ডিপিএর আচরণ কীভাবে দেখতে হয়।

আপনি কি প্রয়োজন হবে

  • গুগল কম্পিউট ইঞ্জিনের প্রাথমিক জ্ঞান
  • বেসিক নেটওয়ার্কিং এবং TCP/IP জ্ঞান
  • মৌলিক ইউনিক্স/লিনাক্স কমান্ড লাইন জ্ঞান
  • Google ক্লাউডে নেটওয়ার্কিং এর একটি ট্যুর সম্পন্ন করা সহায়ক যেমন Google ক্লাউড ল্যাবে নেটওয়ার্কিং
  • 'আলফা অ্যাক্সেস' সক্ষম সহ একটি Google ক্লাউড প্রকল্প।
  • ক্লাউড NAT বুনিয়াদি বোঝা।

2. Google ক্লাউড কনসোল এবং ক্লাউড শেল ব্যবহার করা

GCP-এর সাথে ইন্টারঅ্যাক্ট করতে, আমরা এই ল্যাব জুড়ে Google ক্লাউড কনসোল এবং ক্লাউড শেল উভয়ই ব্যবহার করব।

গুগল ক্লাউড কনসোল

ক্লাউড কনসোলে https://console.cloud.google.com- এ পৌঁছানো যেতে পারে।

75eef5f6fd6d7e41.png

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না এবং আপনি যে কোনো সময় এটি আপডেট করতে পারেন।
  • সমস্ত Google ক্লাউড প্রজেক্ট জুড়ে প্রোজেক্ট আইডি অবশ্যই অনন্য হতে হবে এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এবং এটি সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়), তাই আপনি যদি এটি পছন্দ না করেন তবে অন্য একটি এলোমেলো তৈরি করুন, অথবা, আপনি নিজের চেষ্টা করে দেখতে পারেন এটি উপলব্ধ কিনা। তারপর প্রকল্প তৈরি হওয়ার পরে এটি "হিমায়িত" হয়।
  • একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। রিসোর্স বন্ধ করতে যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন, কোডল্যাবের শেষে পাওয়া যেকোনো "ক্লিন-আপ" নির্দেশাবলী অনুসরণ করুন। Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

ক্লাউড শেল শুরু করুন

যদিও Google ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি Google ক্লাউড শেল ব্যবহার করবেন, একটি কমান্ড লাইন পরিবেশ যা ক্লাউডে চলছে।

GCP কনসোল থেকে উপরের ডানদিকে টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:

bce75f34b2c53987.png

পরিবেশের ব্যবস্থা করতে এবং সংযোগ করতে এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে। এটি সমাপ্ত হলে, আপনি এই মত কিছু দেখতে হবে:

f6ef2b5f13479f3a.png

এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই ল্যাবে আপনার সমস্ত কাজ কেবল একটি ব্রাউজার দিয়ে করা যেতে পারে।

3. ল্যাব সেটআপ

এই ল্যাবের জন্য, আপনি একটি প্রকল্প ব্যবহার করবেন এবং প্রতিটিতে একটি সাবনেট সহ দুটি ভিপিসি তৈরি করবেন৷ আপনি বাহ্যিক আইপি ঠিকানাগুলি সংরক্ষণ করবেন এবং তারপরে একটি ক্লাউড ন্যাট গেটওয়ে (একটি ক্লাউড রাউটার সহ), দুটি প্রযোজক দৃষ্টান্তের পাশাপাশি দুটি ভোক্তা উদাহরণ তৈরি এবং কনফিগার করবেন৷ ডিফল্ট ক্লাউড NAT আচরণ যাচাই করার পরে, আপনি ডায়নামিক পোর্ট অ্যালোকেশন সক্ষম করবেন এবং এর আচরণ যাচাই করবেন। অবশেষে, আপনি NAT নিয়মগুলিও কনফিগার করবেন এবং DPA এবং NAT নিয়মগুলির মধ্যে মিথস্ক্রিয়া পর্যবেক্ষণ করবেন।

নেটওয়ার্কিং আর্কিটেকচার ওভারভিউ:

a21caa6c333909d8.png

4. বহিরাগত আইপি ঠিকানা সংরক্ষণ করুন

আসুন এই ল্যাবে ব্যবহার করার জন্য সমস্ত বাহ্যিক আইপি ঠিকানা সংরক্ষণ করি। এটি আপনাকে গ্রাহক এবং প্রযোজক VPC উভয় ক্ষেত্রেই সমস্ত প্রাসঙ্গিক NAT এবং ফায়ারওয়াল নিয়ম লিখতে সাহায্য করবে।

ক্লাউড শেল থেকে:

gcloud compute addresses  create nat-address-1 nat-address-2 \
 producer-address-1 producer-address-2 --region us-east4

আউটপুট:

Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1].
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2].
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1].
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].

এনভায়রনমেন্ট ভেরিয়েবল হিসাবে সংরক্ষিত আইপি ঠিকানাগুলি পূরণ করুন।

export natip1=`gcloud compute addresses list --filter name:nat-address-1 --format="get(address)"`
export natip2=`gcloud compute addresses list --filter name:nat-address-2 --format="get(address)"`
export producerip1=`gcloud compute addresses list --filter name:producer-address-1 --format="get(address)"`
export producerip2=`gcloud compute addresses list --filter name:producer-address-2 --format="get(address)"`

কোন আউটপুট প্রত্যাশিত নয়, কিন্তু ঠিকানা সঠিকভাবে পপুলেট করা হয়েছে তা নিশ্চিত করতে। সব এনভায়রনমেন্ট ভেরিয়েবলের মান আউটপুট করা যাক।

env | egrep '^(nat|producer)ip[1-3]'

আউটপুট:

producerip1=<Actual Producer IP 1>
producerip2=<Actual Producer IP 2>
natip1=<NAT IP 1>
natip2=<NAT IP 2>

5. প্রযোজক VPC এবং ইনস্ট্যান্স সেটআপ।

আমরা এখন উৎপাদক সম্পদের জন্য সম্পদ তৈরি করব। প্রযোজক ভিপিসি-তে চলমান উদাহরণ দুটি পাবলিক আইপি "উৎপাদক-ঠিকানা-1" এবং "প্রযোজক-ঠিকানা-2" ব্যবহার করে ইন্টারনেট-মুখী পরিষেবা অফার করবে।

প্রথমে ভিপিসি তৈরি করা যাক। ক্লাউড শেল থেকে:

gcloud compute networks create producer-vpc --subnet-mode custom

আউটপুট:

Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/networks/producer-vpc].
NAME      SUBNET_MODE  BGP_ROUTING_MODE  IPV4_RANGE  GATEWAY_IPV4
producer-vpc  CUSTOM       REGIONAL

Instances on this network will not be reachable until firewall rules
are created. As an example, you can allow all internal traffic between
instances as well as SSH, RDP, and ICMP by running:

$ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp,udp,icmp --source-ranges <IP_RANGE>
$ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp:22,tcp:3389,icmp

এর পরে, us-east4-এ সাবনেট তৈরি করি। ক্লাউড শেল থেকে:

gcloud compute networks subnets create prod-net-e4 \
   --network producer-vpc --range 10.0.0.0/24 --region us-east4

আউটপুট:

Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/prod-net-e4].
NAME         REGION    NETWORK       RANGE        STACK_TYPE  IPV6_ACCESS_TYPE  IPV6_CIDR_RANGE  EXTERNAL_IPV6_CIDR_RANGE
prod-net-e4  us-east4  producer-vpc  10.0.0.0/24  IPV4_ONLY

এর পরে, আসুন VPC ফায়ারওয়াল নিয়ম তৈরি করি যাতে NAT IP ঠিকানাগুলি পোর্ট 8080-এ প্রযোজক দৃষ্টান্তগুলিতে পৌঁছাতে পারে।

প্রথম নিয়মের জন্য, ক্লাউড শেল থেকে:

gcloud compute firewall-rules create producer-allow-80 \
  --network producer-vpc --allow tcp:80 \
  --source-ranges $natip1,$natip2

আউটপুট:

Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/producer-allow-80].
Creating firewall...done.
NAME                 NETWORK       DIRECTION  PRIORITY  ALLOW     DENY  DISABLED
producer-allow-80    producer-vpc  INGRESS    1000      tcp:80          False

পরবর্তী ধাপ হল দুটি প্রযোজকের দৃষ্টান্ত তৈরি করা।

প্রযোজক দৃষ্টান্তগুলি একটি সাধারণ nginx প্রক্সি স্থাপনা চালাবে।

সমস্ত প্রয়োজনীয় সফ্টওয়্যার সহ দৃষ্টান্তগুলি দ্রুত সরবরাহ করার জন্য, আমরা একটি স্টার্ট-আপ স্ক্রিপ্ট সহ দৃষ্টান্তগুলি তৈরি করব যা ডেবিয়ান APT প্যাকেজ ম্যানেজার ব্যবহার করে nginx ইনস্টল করে।

NAT নিয়ম লিখতে সক্ষম হওয়ার জন্য, আমরা একটি ভিন্ন সংরক্ষিত IP ঠিকানা দিয়ে প্রতিটি উদাহরণের ব্যবস্থা করব।

প্রথম উদাহরণ তৈরি করুন। ক্লাউড শেল থেকে:

gcloud compute instances create producer-instance-1 \
--zone=us-east4-a --machine-type=e2-medium \
--network-interface=address=producer-address-1,network-tier=PREMIUM,subnet=prod-net-e4 \
--metadata startup-script="#! /bin/bash
sudo apt update
sudo apt install -y nginx
mkdir /var/www/html/nginx/
cat <<EOF > /var/www/html/nginx/index.html
<html><body><h1>This is producer instance 1</h1>
</body></html>
EOF"

আউটপুট:

Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/zones/us-east4-a/instances/producer-instance-1].
NAME                 ZONE        MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
producer-instance-1  us-east4-a  e2-medium                  10.0.0.2     <Producer IP1>  RUNNING

তারপর দ্বিতীয় উদাহরণ তৈরি করুন। ক্লাউড শেল থেকে:

gcloud compute instances create producer-instance-2 \
--zone=us-east4-a --machine-type=e2-medium \
--network-interface=address=producer-address-2,network-tier=PREMIUM,subnet=prod-net-e4 \
--metadata startup-script="#! /bin/bash
sudo apt update
sudo apt install -y nginx
mkdir /var/www/html/nginx/
cat <<EOF > /var/www/html/nginx/index.html
<html><body><h1>This is producer instance 2</h1>
</body></html>
EOF"

আউটপুট:

Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/zones/us-east4-a/instances/producer-instance-2].
NAME                 ZONE        MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
producer-instance-2  us-east4-a  e2-medium                  10.0.0.3     <Producer IP2>  RUNNING

6. কনজিউমার ভিপিসি, ক্লাউড ন্যাট এবং ইনস্ট্যান্স সেটআপ করুন

এখন যেহেতু আপনি প্রযোজক পরিষেবা তৈরি করেছেন, এখন সময় এসেছে ভোক্তা VPC এবং এর ক্লাউড NAT গেটওয়ে তৈরি করার।

ভিপিসি এবং সাবনেট তৈরি করার পরে, আমরা টিসিপি উৎস আইপি রেঞ্জের জন্য আইএপিকে অনুমতি দেওয়ার জন্য একটি সাধারণ ইনগ্রেস ফায়ারওয়াল নিয়ম যোগ করব। এটি আমাদের সরাসরি gcloud ব্যবহার করে ভোক্তাদের কাছে SSH করার অনুমতি দেবে।

তারপরে আমরা ম্যানুয়াল বরাদ্দ মোডে একটি সাধারণ ক্লাউড NAT গেটওয়ে তৈরি করব এবং এর সাথে যুক্ত সংরক্ষিত ঠিকানা "nat-address-1" তৈরি করব। কোডল্যাবের পরবর্তী অংশগুলিতে, আমরা ডায়নামিক পোর্ট অ্যালোকেশন সক্ষম করতে গেটওয়ের কনফিগারেশন আপডেট করব এবং পরে, কাস্টম নিয়মগুলি যোগ করব।

প্রথমে ভিপিসি তৈরি করা যাক। ক্লাউড শেল থেকে:

gcloud compute networks create consumer-vpc --subnet-mode custom

আউটপুট:

Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/consumer-vpc].
NAME          SUBNET_MODE  BGP_ROUTING_MODE  IPV4_RANGE  GATEWAY_IPV4
consumer-vpc  CUSTOM       REGIONAL

Instances on this network will not be reachable until firewall rules
are created. As an example, you can allow all internal traffic between
instances as well as SSH, RDP, and ICMP by running:

$ gcloud compute firewall-rules create <FIREWALL_NAME> --network consumer-vpc --allow tcp,udp,icmp --source-ranges <IP_RANGE>
$ gcloud compute firewall-rules create <FIREWALL_NAME> --network consumer-vpc --allow tcp:22,tcp:3389,icmp

এর পরে, আসুন us-east4 এ একটি সাবনেট তৈরি করি। ক্লাউড শেল থেকে:

gcloud compute networks subnets create cons-net-e4 \
   --network consumer-vpc --range 10.0.0.0/24 --region us-east4

আউটপুট:

Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/cons-net-e4].
NAME         REGION    NETWORK       RANGE        STACK_TYPE  IPV6_ACCESS_TYPE  IPV6_CIDR_RANGE  EXTERNAL_IPV6_CIDR_RANGE
cons-net-e4  us-east4  consumer-vpc  10.0.0.0/24  IPV4_ONLY

এর পরে, আসুন একটি VPC ফায়ারওয়াল নিয়ম তৈরি করি যাতে IAP রেঞ্জের ঠিকানাগুলি পোর্ট 22-এ ভোক্তা দৃষ্টান্তগুলিতে পৌঁছাতে পারে৷

প্রথম ফায়ারওয়াল নিয়মের জন্য, ক্লাউড শেল থেকে নিম্নলিখিতটি চালান:

gcloud compute firewall-rules create consumer-allow-iap \
  --network consumer-vpc --allow tcp:22 \
  --source-ranges 35.235.240.0/20

আউটপুট:

Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/firewalls/consumer-allow-iap].
Creating firewall...done.
NAME                 NETWORK       DIRECTION  PRIORITY  ALLOW     DENY  DISABLED
consumer-allow-iap  consumer-vpc  INGRESS    1000      tcp:22        False

একটি NAT গেটওয়ে তৈরি করার আগে, আমাদের প্রথমে একটি ক্লাউড রাউটার উদাহরণ তৈরি করতে হবে (আমরা একটি ব্যক্তিগত ASN নম্বর ব্যবহার করি কিন্তু এটি এই ল্যাবের কার্যকলাপের জন্য অপ্রাসঙ্গিক)। ক্লাউড শেল থেকে:

gcloud compute routers create consumer-cr \
--region=us-east4 --network=consumer-vpc \
 --asn=65501

আউটপুট:

Creating router [consumer-cr]...done.
NAME         REGION       NETWORK
consumer-cr  us-east4  consumer-vpc

তারপর NAT গেটওয়ে উদাহরণ তৈরি করুন। ক্লাউড শেল থেকে:

gcloud compute routers nats create consumer-nat-gw \
    --router=consumer-cr \
    --router-region=us-east4 \
    --nat-all-subnet-ip-ranges \
    --nat-external-ip-pool=nat-address-1

আউটপুট:

Creating NAT [consumer-nat-gw] in router [consumer-cr]...done.

মনে রাখবেন, ডিফল্টরূপে, ক্লাউড ন্যাট গেটওয়ে 64 এ সেট করা minPortsPerVm দিয়ে তৈরি করা হয়েছে

ভোক্তা পরীক্ষার উদাহরণ তৈরি করুন। আমরা এখানে সংরক্ষিত প্রযোজক আইপিগুলিকে পরে দৃষ্টান্তের মধ্যে উল্লেখ করতে সক্ষম হই। ক্লাউড শেল থেকে:

gcloud compute instances create consumer-instance-1 --zone=us-east4-a \
--machine-type=e2-medium --network-interface=subnet=cons-net-e4,no-address \
--metadata=producer-service-ip1=$producerip1,producer-service-ip2=$producerip2

gcloud compute instances create consumer-instance-2 --zone=us-east4-a \
--machine-type=e2-medium --network-interface=subnet=cons-net-e4,no-address \
--metadata=producer-service-ip1=$producerip1,producer-service-ip2=$producerip2

আউটপুট:

Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/zones/us-east4-a/instances/consumer-instance-1].
NAME                ZONE        MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP  STATUS
consumer-instance-1  us-east4-a  e2-medium                  10.0.0.2                  RUNNING

Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/zones/us-east4-a/instances/consumer-instance-2].
NAME                ZONE        MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP  STATUS
consumer-instance-2  us-east4-a  e2-medium                  10.0.0.3                  RUNNING

7. ডিফল্ট ক্লাউড NAT আচরণ যাচাই করুন

এই মুহুর্তে, গ্রাহক দৃষ্টান্তগুলি ডিফল্ট ক্লাউড NAT আচরণ ব্যবহার করে যা সমস্ত বহিরাগত ঠিকানাগুলির সাথে যোগাযোগের জন্য একই সংরক্ষিত IP "nat-address-1" ব্যবহার করে। Cloud NAT-এ এখনও DPA সক্ষম করা নেই।

আসুন নিম্নলিখিত কমান্ডটি চালানোর মাধ্যমে ক্লাউড ন্যাট আমাদের ভোক্তা দৃষ্টান্তগুলি বরাদ্দ করেছে তা যাচাই করা যাক

gcloud  compute routers get-nat-mapping-info consumer-cr --region=us-east4

নমুনা আউটপুট

---
instanceName: consumer-instance-1
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Consumer IP1>:1024-1055
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
- natIpPortRanges:
  - <NAT Consumer IP1>:32768-32799
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
---
instanceName: consumer-instance-2
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Address IP1>:1056-1087
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.3
- natIpPortRanges:
  - <NAT Address IP1>:32800-32831
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.3

আপনি উপরের আউটপুট থেকে দেখতে পাচ্ছেন, ক্লাউড ন্যাট একই বাহ্যিক আইপি nat-address-1 থেকে প্রতি উদাহরণে 64টি পোর্ট বরাদ্দ করেছে।

DPA সক্রিয় করার আগে আমরা সমান্তরালভাবে কতগুলি সংযোগ খুলতে পারি তা যাচাই করা যাক।

প্রথম ভোক্তা উদাহরণে SSH. ক্লাউড শেল থেকে:

gcloud compute ssh consumer-instance-1 --zone=us-east4-a

আপনার এখন ইনস্ট্যান্স শেল থাকা উচিত।

নমুনা আউটপুট (সংক্ষিপ্ততার জন্য সম্পূর্ণ আউটপুট কাটা)

External IP address was not found; defaulting to using IAP tunneling.
...
...
<username>@consumer-instance-1:~$

ভোক্তা উদাহরণের মধ্যে থেকে, আসুন প্রথমে উভয় প্রযোজক আইপি নিয়ে আসি এবং পরিবেশের ভেরিয়েবল হিসাবে তাদের পূরণ করি

export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"`

export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`

তারপরে আমরা সফলভাবে তাদের কাছে পৌঁছাতে পারি তা নিশ্চিত করতে উভয় প্রযোজকের উদাহরণে কার্ল করার চেষ্টা করুন।

<username>@consumer-instance-1:~$ curl http://$producerip1/nginx/
<html><body><h1>This is producer instance 1</h1>
</body></html>
<username>@consumer-instance-1:~$ curl http://$producerip2/nginx/
<html><body><h1>This is producer instance 2</h1>
</body></html>

এখন আসুন একটি লুপের মাধ্যমে কার্ল চালানোর মাধ্যমে প্রযোজক দৃষ্টান্তগুলির একটির সাথে অনেকগুলি সমান্তরাল সংযোগ তৈরি করার চেষ্টা করি। মনে রাখবেন যে ক্লাউড NAT 2 মিনিটের জন্য বন্ধ সকেট পুনরায় ব্যবহার করার অনুমতি দেয় না। সুতরাং, যতক্ষণ না আমরা 2 মিনিটের মধ্যে সমস্ত সংযোগ প্রচেষ্টার মাধ্যমে লুপ করতে পারি, আমরা এইভাবে সমান্তরাল সংযোগগুলি অনুকরণ করতে সক্ষম।

উদাহরণ SSH সেশনে নিম্নলিখিত কমান্ডটি চালান

while true; do for i in {1..64}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done

আপনি সফলভাবে 64টি সমান্তরাল সংযোগ খুলতে সক্ষম হবেন বলে আশা করবেন এবং স্ক্রিপ্টটি নিম্নলিখিতটি প্রিন্ট করা উচিত

Connection # 64 successful

Loop Done, Sleeping for 150s
Connection # 64 successful

Loop Done, Sleeping for 150s

আমরা 64টি সমান্তরাল সংযোগের বাইরে যেতে সক্ষম নই তা দেখতে, প্রথমে সমস্ত পুরানো সকেটগুলি পরিষ্কার করার অনুমতি দেওয়ার জন্য 2 মিনিট অপেক্ষা করুন। তারপরে একই ওয়ান-লাইনারটিকে নিম্নলিখিতটিতে টুইক করুন এবং এটি পুনরায় চালান

while true; do for i in {1..70}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done

আপনি এখন নিম্নলিখিত আউটপুট আশা করবেন

Connection # 64 successful
Connection # 65 failed
Connection # 66 failed
Connection # 67 failed
Connection # 68 failed
Connection # 69 failed
Connection # 70 failed

Loop Done, Sleeping for 150s

এটি নির্দেশ করে যে প্রথম 64টি সংযোগ সফল হলেও, পোর্টের অনুপলব্ধতার কারণে অবশিষ্ট 6টি সংযোগ ব্যর্থ হয়েছে৷

আসুন তাহলে এটি সম্পর্কে কিছু করা যাক, SSH শেল থেকে প্রস্থান করুন এবং নিম্নলিখিত বিভাগে DPA সক্রিয় করা যাক।

8. DPA সক্ষম করুন এবং এর আচরণ যাচাই করুন

নিম্নলিখিত gcloud কমান্ডটি চালান, যা DPA সক্ষম করে, VM প্রতি ন্যূনতম পোর্ট বরাদ্দ 64 এবং সর্বাধিক পোর্ট বরাদ্দ 1024 এ সেট করে।

gcloud alpha compute routers nats update consumer-nat-gw --router=consumer-cr \
--region=us-east4 --min-ports-per-vm=64 --max-ports-per-vm=1024 \
--enable-dynamic-port-allocation

যা নিম্নলিখিত আউটপুট

Updating nat [consumer-nat-gw] in router [consumer-cr]...done.

এখন আসুন get-nat-mapping-info পুনরায় চালাই যে উভয় দৃষ্টান্তে এখনও মাত্র 64টি পোর্ট বরাদ্দ রয়েছে তা নিশ্চিত করতে

gcloud  compute routers get-nat-mapping-info consumer-cr --region=us-east4

নমুনা আউটপুট (সংক্ষিপ্ততার জন্য কাটা)

---
instanceName: consumer-instance-1
...
  - <NAT Consumer IP1>:1024-1055
  numTotalNatPorts: 32
...
- natIpPortRanges:
  - <NAT Consumer IP1>:32768-32799
  numTotalNatPorts: 32
...
---
instanceName: consumer-instance-2
...
  - <NAT Address IP1>:1056-1087
  numTotalNatPorts: 32
...
  - <NAT Address IP1>:32800-32831
  numTotalNatPorts: 32
...

বন্দর বরাদ্দের পরিপ্রেক্ষিতে খুব বেশি পরিবর্তন হয়নি যেহেতু দৃষ্টান্তটি এখনও কোনো পোর্ট সক্রিয়ভাবে ব্যবহার করছে না।

এসএসএইচ উদাহরণে ফিরে আসা যাক:

gcloud compute ssh consumer-instance-1 --zone=us-east4-a

প্রযোজক আইপি পরিবেশের ভেরিয়েবল পুনরায় রপ্তানি করুন।

export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"`

export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`

এবং সমান্তরাল সংযোগ অনুকরণ করতে আগের লুপটি পুনরায় চালান:

while true; do for i in {1..70}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done

আমরা এখন নিম্নলিখিত আউটপুট দেখতে হবে

Connection # 64 successful
Connection # 65 failed

Connection # 66 failed
Connection # 70 successful
Loop Done, Sleeping for 150s

তাহলে এখানে কি হল? ক্লাউড NAT র‌্যাম্প পোর্টের ব্যবহারে পোর্ট বরাদ্দ বাড়ায় কিন্তু পুরো নেটওয়ার্কিং লেয়ার জুড়ে প্রোগ্রাম হতে কিছু সময় লাগে। তাই সংযোগের বাকি প্রচেষ্টা সফলভাবে সম্পন্ন করার আগে আমরা 1-3টি সংযোগের সময়সীমা দেখতে পাই।

আমরা কার্ল (5 সেকেন্ড) এর জন্য একটি আক্রমনাত্মক টাইমআউট নির্দিষ্ট করেছি কিন্তু DPA যখন পোর্ট বরাদ্দ বাড়াচ্ছে তখন দীর্ঘ সময়সীমা সহ অ্যাপ্লিকেশনগুলি সফলভাবে সংযোগগুলি সম্পূর্ণ করতে সক্ষম হবে৷

এই র‌্যাম্প আপ আচরণটি আরও স্পষ্টভাবে দেখা যায় যখন আমরা 1024 সংযোগ প্রচেষ্টার জন্য লুপ চালাই

while true; do for i in {1..1024}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done

আমরা এখন নিম্নলিখিত আউটপুট দেখতে আশা করি

Connection # 64 successful
Connection # 65 failed

Connection # 66 failed
Connection # 129 successful
Connection # 130 failed

Connection # 131 failed
Connection # 258 successful
Connection # 259 failed

Connection # 260 failed
Connection # 515 successful
Connection # 516 failed

Connection # 1024 successful
Loop Done, Sleeping for 150s

যেহেতু ক্লাউড NAT পোর্টগুলিকে 2 এর ক্ষমতায় বরাদ্দ করে, মূলত প্রতিটি ধাপে বরাদ্দ দ্বিগুণ করে, আমরা 64 এবং 1024 এর মধ্যে 2 এর ক্ষমতাগুলির চারপাশে হাইলাইট করা সংযোগের সময়সীমা দেখতে পাই।

যেহেতু আমরা maxPortsPerVM 1024-এ সেট করেছি, তাই আমরা 1024-এর বেশি সংযোগের জন্য যেতে পারব বলে আশা করি না। আমরা 1024 এর চেয়ে বেশি কাউন্ট সহ কার্ল লুপ পুনরায় চালানোর মাধ্যমে পরীক্ষা করতে পারি (স্টেল পোর্ট রিসেট করার জন্য 2 মিনিট অপেক্ষা করার পরে)।

while true; do for i in {1..1035}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done

এবং প্রত্যাশিত হিসাবে, আউটপুট দেখায় 1024 এর বাইরের সংযোগগুলি ব্যর্থ হতে শুরু করে

<truncated output>
...
Connection # 1028 successful
Connection # 1029 failed
Connection # 1030 failed
Connection # 1031 failed
Connection # 1032 failed
Connection # 1033 failed
Connection # 1034 failed
Connection # 1035 failed
...
Loop Done, Sleeping for 150s

maxPortsPerVM 1024-এ সেট করে, আমরা ক্লাউড NAT-কে নির্দেশ দিয়েছি যাতে পোর্টের বরাদ্দ 1024 প্রতি VM-এর বেশি না হয়।

আমরা যদি SSH সেশন থেকে প্রস্থান করি এবং get-nat-mapping-info দ্রুত পর্যাপ্তভাবে পুনরায় চালাই, তাহলে আমরা অতিরিক্ত পোর্ট বরাদ্দ দেখতে পাব।

gcloud  compute routers get-nat-mapping-info consumer-cr --region=us-east4

এবং নিম্নলিখিত আউটপুট পর্যবেক্ষণ করুন

---
instanceName: consumer-instance-1
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Address IP1>:1024-1055
  - <NAT Address IP1>1088-1119
  -<NAT Address IP1>:1152-1215
  - <NAT Address IP1>:1280-1407
  - <NAT Address IP1>:1536-1791
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 512
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
- natIpPortRanges:
  - <NAT Address IP1>:32768-32799
  - <NAT Address IP1>:32832-32863
  - <NAT Address IP1>:32896-32959
  - <NAT Address IP1>:33024-33151
  - <NAT Address IP1>:33536-33791
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 512
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
---
instanceName: consumer-instance-2
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Address IP1>:1056-1087
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.3
- natIpPortRanges:
  - <NAT Address IP1>:32800-32831
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.3

লক্ষ করুন কিভাবে consumer-instance-1 1024টি পোর্ট বরাদ্দ করা হয়েছে, কিন্তু consumer-instance-2 মাত্র 64টি পোর্ট বরাদ্দ করা হয়েছে। DPA এর আগে এটি সহজে সম্ভব ছিল না এবং ক্লাউড NAT-এর জন্য DPA-এর শক্তিকে ঠিক হাইলাইট করে।

আপনি যদি get-nat-mapping-info কমান্ডটি পুনরায় চালানোর আগে 2 মিনিট অপেক্ষা করেন, আপনি লক্ষ্য করবেন যে consumer-instance-1 তার ন্যূনতম মূল্যে ফিরে এসেছে মাত্র 64টি পোর্ট বরাদ্দ করা হয়েছে। পোর্ট বরাদ্দ বাড়ানোর জন্য শুধু DPA-এর ক্ষমতাই বোঝায় না, একই NAT গেটওয়ের পিছনে অন্যান্য উদাহরণগুলির দ্বারা সম্ভাব্য ব্যবহারের জন্য ব্যবহার না হলে সেগুলিকেও ছেড়ে দেয়।

9. DPA দিয়ে ক্লাউড NAT নিয়মগুলি পরীক্ষা করুন৷

আমরা সম্প্রতি ক্লাউড NAT-এর জন্য NAT নিয়ম কার্যকারিতা প্রকাশ করেছি, যা গ্রাহকদের নির্দিষ্ট বাহ্যিক গন্তব্যের জন্য নির্দিষ্ট NAT IP ব্যবহার করে এমন নিয়ম লিখতে দেয়। আরও তথ্যের জন্য, অনুগ্রহ করে NAT নিয়ম ডকুমেন্টেশন পৃষ্ঠা দেখুন।

এই অনুশীলনে, আমরা DPA এবং NAT নিয়মগুলির মধ্যে মিথস্ক্রিয়া পর্যবেক্ষণ করি। producer-address-2 অ্যাক্সেস করার সময় nat-address-2 ব্যবহার করার জন্য প্রথমে একটি NAT নিয়ম সংজ্ঞায়িত করা যাক।

নিম্নলিখিত gcloud কমান্ড চালান, যা ব্যবহার করে NAT নিয়ম তৈরি করে

gcloud alpha compute routers nats rules create 100 \
 --match='destination.ip == "'$producerip2'"' \
 --source-nat-active-ips=nat-address-2 --nat=consumer-nat-gw \
 --router=consumer-cr --router-region=us-east4

আপনি নিম্নলিখিত আউটপুট আশা করা উচিত

Updating nat [consumer-nat-gw] in router [consumer-cr]...done.

এখন নতুন NAT নিয়মের প্রভাব দেখতে get-nat-mapping-info পুনরায় রান করা যাক।

gcloud alpha compute routers get-nat-mapping-info consumer-cr --region=us-east4

যা নিম্নলিখিত আউটপুট করা উচিত

---
instanceName: consumer-instance-1
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Address IP1>:1024-1055
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:1024-1055
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 32
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
- natIpPortRanges:
  - <NAT Address IP1>:32768-32799
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:32768-32799
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 32
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2

লক্ষ্য করুন যে এখন আমাদের অতিরিক্ত পোর্টগুলি বরাদ্দ করা হয়েছে (এছাড়াও 64-এ, নির্দিষ্ট ন্যূনতম) বিশেষভাবে nat-address-2 এর জন্য ruleMappings হায়ারার্কির অধীনে।

তাহলে কি হবে যদি একটি উদাহরণ NAT নিয়ম দ্বারা নির্দিষ্ট গন্তব্যের সাথে অনেকগুলি সংযোগ খোলে? চলুন জেনে নেওয়া যাক।

এসএসএইচ উদাহরণে ফিরে আসা যাক:

gcloud compute ssh consumer-instance-1 --zone=us-east4-a

প্রযোজক আইপি পরিবেশের ভেরিয়েবল পুনরায় রপ্তানি করুন।

export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"`

export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`

এবং এখন এর কার্ল লুপটি producerip2 বিপরীতে পুনরায় রান করা যাক

while true; do for i in {1..1024}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip2/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done

আপনি নিম্নলিখিত অনুরূপ একটি আউটপুট আশা করা উচিত

Connection # 64 successful
Connection # 65 failed

Connection # 66 failed
Connection # 129 successful
Connection # 130 failed

Connection # 131 failed
Connection # 258 successful
Connection # 259 failed

Connection # 260 failed
Connection # 515 successful
Connection # 516 failed

Connection # 1024 successful
Loop Done, Sleeping for 150s

মূলত আগের পরীক্ষার মিররিং। আসুন উদাহরণের SSH সেশন থেকে প্রস্থান করি এবং আবার ন্যাট ম্যাপিংগুলি দেখি।

gcloud alpha compute routers get-nat-mapping-info consumer-cr --region=us-east4

যা নিম্নলিখিত আউটপুট করা উচিত

---
instanceName: consumer-instance-1
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Address IP1>:1024-1055
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:1024-1055
    - <NAT Address IP2>:1088-1119
    - <NAT Address IP2>:1152-1215
    - <NAT Address IP2>:1280-1407
    - <NAT Address IP2>:1536-1791
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 512
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
- natIpPortRanges:
  - <NAT Address IP1>:32768-32799
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:32768-32799
    - <NAT Address IP2>:32832-32863
    - <NAT Address IP2>:32896-32959
    - <NAT Address IP2>:33024-33151
    - <NAT Address IP2>:33280-33535
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 512
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
---
instanceName: consumer-instance-2
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Address IP1>:1056-1087
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:1056-1087
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 32
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.3
- natIpPortRanges:
  - <NAT Address IP1>:32800-32831
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:32800-32831
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 32
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.3

---
instanceName: consumer-instance-1
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Address IP1>:1024-1055
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:1024-1055
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 32
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
- natIpPortRanges:
  - <NAT Address IP1>:32768-32799
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:32768-32799
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 32
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2

যেমন আপনি উপরে লক্ষ্য করতে পারেন, consumer-instance-1 -এর ডিফল্ট NAT IP ( nat-address-1 এর IP) এখনও মাত্র 64টি পোর্ট বরাদ্দ আছে, কিন্তু NAT নিয়মের IP ( nat-address-2 এর জন্য IP) 1024টি পোর্ট রয়েছে বরাদ্দ সব সময় consumer-instance-2 সমস্ত NAT আইপি-র জন্য 64টি পোর্টের ডিফল্ট বরাদ্দ রেখেছিল।

একটি ব্যায়াম হিসাবে, আপনি বিপরীত ক্ষেত্রে পরীক্ষা করতে পারেন। ক্লাউড NAT-কে সমস্ত অতিরিক্ত পোর্ট ডিলোকেট করতে দিন, তারপর producerip1 এর বিপরীতে কার্ল লুপ চালান এবং get-nat-mapping-info এর আউটপুটে প্রভাবগুলি পর্যবেক্ষণ করুন

10. পরিচ্ছন্নতার পদক্ষেপ

পুনরাবৃত্ত চার্জ এড়াতে আপনার এই কোডল্যাবের সাথে যুক্ত সমস্ত সংস্থান মুছে ফেলা উচিত।

প্রথমে সমস্ত দৃষ্টান্ত মুছুন।

ক্লাউড শেল থেকে:

gcloud compute instances delete consumer-instance-1 consumer-instance-2 \
 producer-instance-1 producer-instance-2 \
 --zone us-east4-a --quiet

প্রত্যাশিত আউটপুট:

Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/consumer-instance-1].
Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/consumer-instance-2].
Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-1].
Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-2].

এর পরে, ক্লাউড রাউটার মুছুন। ক্লাউড শেল থেকে:

gcloud compute routers delete consumer-cr \
 --region us-east4 --quiet

আপনি নিম্নলিখিত আউটপুট আশা করা উচিত:

Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/routers/consumer-cr].

সমস্ত বাহ্যিক আইপি ঠিকানা প্রকাশ করুন। ক্লাউড শেল থেকে:

gcloud compute addresses delete nat-address-1 \
 nat-address-2 producer-address-1 \
 producer-address-2 --region us-east4 --quiet

আপনি নিম্নলিখিত আউটপুট আশা করা উচিত:

Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1].
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2].
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-3].
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1].
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].

VPC ফায়ারওয়াল নিয়ম মুছুন। ক্লাউড শেল থেকে:

gcloud compute firewall-rules delete consumer-allow-iap \
 producer-allow-80 --quiet

আপনি নিম্নলিখিত আউটপুট আশা করা উচিত:

Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/consumer-allow-iap].
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/producer-allow-80].

সাবনেট মুছুন। ক্লাউড শেল থেকে:

gcloud compute networks subnets delete cons-net-e4 \
 prod-net-e4 --region=us-east4 --quiet

আপনি নিম্নলিখিত আউটপুট আশা করা উচিত:

Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/cons-net-e4].
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/prod-net-e4].

অবশেষে, আসুন VPC গুলি মুছে ফেলি। ক্লাউড শেল থেকে:

gcloud compute networks delete consumer-vpc \
 producer-vpc --quiet

আপনি নিম্নলিখিত আউটপুট আশা করা উচিত:

Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/consumer-vpc].
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/producer-vpc].

11. অভিনন্দন!

আপনি Cloud NAT DPA ল্যাব সম্পূর্ণ করেছেন!

আপনি কি আচ্ছাদিত

  • DPA এর প্রস্তুতির জন্য কিভাবে একটি ক্লাউড NAT গেটওয়ে সেট আপ করবেন।
  • ডিপিএ ছাড়া বন্দর বরাদ্দ কিভাবে পরিদর্শন করবেন।
  • কিভাবে NAT গেটওয়ের জন্য DPA সক্রিয় এবং কনফিগার করবেন।
  • সমান্তরাল নির্গমন সংযোগগুলি চালিয়ে DPA এর প্রভাবগুলি কীভাবে পর্যবেক্ষণ করা যায়।
  • DPA সক্ষম করে NAT গেটওয়েতে NAT নিয়মগুলি কীভাবে যুক্ত করবেন।
  • একাধিক গন্তব্যে এগ্রেস সংযোগ চালিয়ে নিয়মগুলির সাথে ডিপিএর আচরণ কীভাবে দেখতে হয়।

পরবর্তী পদক্ষেপ

©Google, Inc. বা এর সহযোগী। সর্বস্বত্ব সংরক্ষিত বিতরণ করবেন না।