Cloud NAT NAT নিয়ম ব্যবহার করা

1. ওভারভিউ

ক্লাউড ন্যাট একটি শক্তিশালী টুল: এটির সাহায্যে, কম্পিউট ইঞ্জিন এবং গুগল কুবারনেটস ইঞ্জিন (জিকেই) ওয়ার্কলোডগুলি এক্সটার্নাল আইপি ব্যবহার করে বাইরের অ্যাক্সেসে তাদের উপর চলমান ওয়ার্কলোডগুলিকে প্রকাশ না করে একটি মাপযোগ্য এবং নিরাপদ পদ্ধতিতে ইন্টারনেট সংস্থানগুলি অ্যাক্সেস করতে পারে।

ক্লাউড NAT একটি প্রক্সি-লেস ডিজাইন বৈশিষ্ট্যযুক্ত, যা সরাসরি অ্যান্ড্রোমিডা SDN স্তরে NAT প্রয়োগ করে৷ যেমন, আপনার কাজের চাপে কোনো পারফরম্যান্সের প্রভাব নেই এবং এটি অনায়াসে অনেক VM, অঞ্চল এবং VPC-তে স্কেল করে।

NAT নিয়ম হল Cloud NAT-এর একটি এক্সটেনশন। ক্লাউড ন্যাটে NAT নিয়ম বৈশিষ্ট্য আপনাকে অ্যাক্সেসের নিয়ম তৈরি করতে দেয় যা সংজ্ঞায়িত করে যে কীভাবে ক্লাউড NAT ইন্টারনেটের সাথে সংযোগ করতে ব্যবহৃত হয়। বর্তমানে NAT নিয়মগুলি গন্তব্য ঠিকানার উপর ভিত্তি করে উত্স NAT ঠিকানা নির্বাচন সমর্থন করে।

NAT নিয়ম ব্যতীত, ক্লাউড NAT সক্ষমিত একটি VM সমস্ত ইন্টারনেট ঠিকানাগুলিতে পৌঁছানোর জন্য NAT IP ঠিকানাগুলির একই সেট ব্যবহার করে।

কখনও কখনও, একটি NAT ব্যবহার-কেস ক্লাউড NAT-কে নির্দিষ্ট গন্তব্যের জন্য বিভিন্ন উত্স আইপি ঠিকানা ব্যবহার করার জন্য কল করে। একটি NAT নিয়ম একটি ম্যাচ এবং একটি সংশ্লিষ্ট কর্ম সংজ্ঞায়িত করে। একবার আপনি NAT নিয়ম উল্লেখ করলে, প্যাকেটটি প্রতিটি NAT নিয়মের সাথে মিলে যায়। যদি একটি নিয়ম মিলে যায়, তাহলে সেই ম্যাচের সাথে সামঞ্জস্যপূর্ণ কর্ম সঞ্চালিত হয়।

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

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

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

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

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

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

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

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

75eef5f6fd6d7e41.png

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। "ক্লিনিং আপ" বিভাগে যে কোনও নির্দেশাবলী অনুসরণ করতে ভুলবেন না যা আপনাকে কীভাবে সংস্থানগুলি বন্ধ করতে হবে তা পরামর্শ দেয় যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন৷ Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

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

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

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

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

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

815147de3de0bd19.png

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

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

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

gcloud compute addresses  create nat-address-1 nat-address-2 nat-address-3 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/nat-address-3].
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 natip3=`gcloud compute addresses list --filter name:nat-address-3 --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>
natip3=<NAT IP 3>

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 producer-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/producer-e4].
NAME              REGION       NETWORK       RANGE
producer-e4       us-east4  producer-vpc  10.0.0.0/24

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

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

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

আউটপুট:

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

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

প্রযোজক দৃষ্টান্তগুলি ডকার হাবে উপলব্ধ একটি ডকার কন্টেইনারে একটি আইপি ইকো পরিষেবা চালাবে (সোর্স কোড পরিষেবা লেখকের গিটহাব রেপোতে উপলব্ধ।

সমস্ত প্রয়োজনীয় সফ্টওয়্যার সহ দৃষ্টান্তগুলি দ্রুত সরবরাহ করতে, আমরা কম্পিউট ইঞ্জিন বৈশিষ্ট্যে কন্টেইনার স্থাপনা ব্যবহার করব।

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

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

gcloud compute instances create-with-container producer-instance-1 \
--zone=us-east4-a --machine-type=e2-medium \
--network-interface=address=producer-address-1,network-tier=PREMIUM,subnet=producer-e4 \
--container-image=mpolden/echoip --container-restart-policy=always

আউটপুট:

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 IP 1>  RUNNING

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

gcloud compute instances create-with-container producer-instance-2 \
 --zone=us-east4-a --machine-type=e2-medium \
--network-interface=address=producer-address-2,network-tier=PREMIUM,subnet=producer-e4 \
--container-image=mpolden/echoip --container-restart-policy=always

আউটপুট:

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 IP 2>  RUNNING

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

এখন যেহেতু আপনি প্রযোজক পরিষেবা তৈরি করেছেন, এখন সময় এসেছে ভোক্তা 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 producer-vpc --allow tcp:22,tcp:3389,icmp

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

gcloud compute networks subnets create consumer-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/consumer-e4].
NAME              REGION       NETWORK       RANGE
consumer-e4       us-east4  consumer-vpc  10.0.0.0/24

এর পরে, আসুন একটি 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.

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

gcloud compute instances create consumer-instance --zone=us-east4-a \
--machine-type=e2-medium --network-interface=subnet=consumer-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].
NAME               ZONE           MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP  STATUS
consumer-instance  us-east4-a  e2-medium                  10.0.0.2                  RUNNING

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

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

ক্লাউড ন্যাটে নতুন NAT নিয়ম বৈশিষ্ট্য ব্যবহার করার আগে প্রথমে এই আচরণটি যাচাই করা যাক।

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

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

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

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

No zone specified. Using zone [us-east4-a] for instance: [consumer-instance].
External IP address was not found; defaulting to using IAP tunneling.
...
...
<username>@consumer-instance:~$

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

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:~$ curl http://$producerip1:8080
34.136.8.83
<username>@consumer-instance:~$ curl http://$producerip2:8080
34.136.8.83

আপনি দেখতে পাবেন একই আইপি ঠিকানা উভয় প্রান্তের জন্য ফেরত এসেছে, যা বাহ্যিক সংরক্ষিত আইপি "nat-address-1" এর মানের সমান।

একইভাবে, যেকোনো বাহ্যিক আইপি প্রতিফলক পরিষেবার একটি কার্ল একই আইপি দেখাতে হবে, উদাহরণস্বরূপ:

<username>@consumer-instance:~$ curl http://ifconfig.co
34.136.8.83
<username>@consumer-instance:~$ curl http://ifconfig.me
34.136.8.83
<username>@consumer-instance:~$ curl http://ip.fyr.io
34.136.8.83

আপাতত ইনস্ট্যান্সের SSH সেশন থেকে প্রস্থান করুন, NAT নিয়মগুলি কনফিগার করার পরে আমরা SSH ফিরে আসব।

8. ক্লাউড NAT নিয়ম তৈরি করুন

NAT নিয়মগুলি কমন এক্সপ্রেশন ল্যাঙ্গুয়েজ সিনট্যাক্স ব্যবহার করে লেখা হয়। রুল এক্সপ্রেশন ভাষা সম্পর্কে আরও তথ্যের জন্য, রুল এক্সপ্রেশন ল্যাঙ্গুয়েজ দেখুন।

আপনি জিক্লাউড কমান্ড ব্যবহার করে বিদ্যমান NAT গেটওয়েতে একটি NAT নিয়ম যোগ করতে পারেন। আমরা ক্লাউড NAT নিয়ম তৈরি করার জন্য উভয় বিকল্পই অন্বেষণ করব।

প্রথমে একটি NAT নিয়ম YAML ফাইল তৈরি করা যাক।

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

export projectid=`gcloud config get-value project`

cat <<EOF >natrulesfile.txt
rules:
 - ruleNumber: 100
   match: destination.ip == '$producerip2'
   action:
     sourceNatActiveIps:
     -  /projects/$projectid/regions/us-east4/addresses/nat-address-2
EOF

তারপর এই নিয়ম ফাইল ব্যবহার করে আমাদের বিদ্যমান NAT গেটওয়ে আপডেট করা যাক। ক্লাউড শেল থেকে:

gcloud alpha compute routers nats update consumer-nat-gw \
    --router=consumer-cr \
    --rules=natrulesfile.txt \
    --router-region=us-east4

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

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

নিয়মটি সফলভাবে কনফিগার করা হয়েছে তা যাচাই করুন। ক্লাউড শেল থেকে:

gcloud alpha compute routers nats rules list \
--nat=consumer-nat-gw --router=consumer-cr \
--router-region=us-east4

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

RULE_NUMBER  MATCH
100          destination.ip == '35.192.142.134'

আসুন শুধুমাত্র gcloud কমান্ড ব্যবহার করে একই নিয়ম পুনরায় তৈরি করার চেষ্টা করি। প্রথমে বিদ্যমান নিয়ম মুছে দিন। ক্লাউড শেল থেকে:

gcloud alpha compute routers nats rules delete 100 \
--nat=consumer-nat-gw --router=consumer-cr \
--router-region=us-east4 --quiet

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

Updated [https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/routers/consumer-cr]

তারপর এই gcloud কমান্ড ব্যবহার করে নিয়মটি পুনরায় তৈরি করুন। ক্লাউড শেল থেকে:

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

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

Creating Rule [100] in NAT [consumer-nat-gw]...done.

নিয়মটি সফলভাবে তৈরি করা হয়েছে তা যাচাই করতে, আগের কমান্ডটি পুনরাবৃত্তি করুন। এই সময় আমরা নিয়মের সম্পূর্ণ বিবরণ দেখতে YAML ফর্ম্যাটিং সুইচ যোগ করব।

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

gcloud alpha compute routers nats rules list\
 --nat=consumer-nat-gw --router=consumer-cr \
--router-region=us-east4  --format=yaml

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

---
action:
  sourceNatActiveIps:
  - https://www.googleapis.com/compute/alpha/projects/<Project-ID>/regions/us-east4/addresses/nat-address-2
match: destination.ip == <actual IP for producer-IP 2>
ruleNumber: 100

অবশেষে, লক্ষ্য করুন যে এখন "nat-address1" এবং "nat-address-2" উভয়ই বহিরাগত ঠিকানা "IN_USE" হিসাবে দেখায়। এটি দেখতে, ক্লাউড শেল থেকে এই কমান্ডটি চালান:

$ gcloud compute addresses list

আপনার নিম্নলিখিত আউটপুট আশা করা উচিত (প্রকৃত আইপি ঠিকানাগুলি আপনার সংরক্ষিত ঠিকানাগুলির সাথে মেলে):

NAME                ADDRESS/RANGE   TYPE      PURPOSE  NETWORK  REGION       SUBNET  STATUS
nat-address-1       34.136.8.83     EXTERNAL                    us-east4          IN_USE
nat-address-2       34.70.137.35    EXTERNAL                    us-east4          IN_USE
nat-address-3       34.135.103.88   EXTERNAL                    us-east4          RESERVED
producer-address-1  34.66.0.105     EXTERNAL                    us-east4          IN_USE
producer-address-2  35.192.142.134  EXTERNAL                    us-east4          IN_USE

9. ক্লাউড NAT নিয়ম আচরণ যাচাই করুন

এই মুহুর্তে, ভোক্তার উদাহরণকে প্রযোজক-ঠিকানা-2-এর সাথে যোগাযোগ করতে nat-address-2 ব্যবহার করার জন্য তৈরি Cloud NAT নিয়ম ব্যবহার করা উচিত।

আসুন এই আচরণ যাচাই করা যাক. ভোক্তা উদাহরণে SSH. ক্লাউড শেল থেকে:

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

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

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

No zone specified. Using zone [us-east4-a] for instance: [consumer-instance].
External IP address was not found; defaulting to using IAP tunneling.
...
...
<username>@consumer-instance:~$

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

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:~$ curl http://$producerip1:8080
34.136.8.83
<username>@consumer-instance:~$ curl http://$producerip2:8080
34.70.137.35

আপনি এখন উভয় প্রান্তের জন্য একটি ভিন্ন আইপি ঠিকানা ফেরত দেখতে পাবেন, প্রথম আইপি ঠিকানাটি ডিফল্ট আচরণের মতোই হওয়া উচিত। নতুন NAT নিয়ম যোগ করার পরে দ্বিতীয় আইপি ঠিকানাটি "nat-address-2" এর সমান হওয়া উচিত।

যেকোন বাহ্যিক আইপি প্রতিফলক পরিষেবার একটি কার্ল এখনও ডিফল্ট আচরণ হিসাবে একই আইপি দেখাতে হবে, উদাহরণস্বরূপ:

<username>@consumer-instance:~$ curl http://ifconfig.co
34.136.8.83
<username>@consumer-instance:~$ curl http://ifconfig.me
34.136.8.83
<username>@consumer-instance:~$ curl http://ip.fyr.io
34.136.8.83

আপাতত ইনস্ট্যান্সের এসএসএইচ সেশন থেকে প্রস্থান করুন, আমরা ঠিকানা নিষ্কাশনের পরীক্ষায় ফিরে এসএসএইচ করব।

10. ক্লাউড NAT নিয়মগুলি আপডেট করুন এবং মুছুন৷

আপনি বিদ্যমান Cloud NAT নিয়ম আপডেট করতে পারেন। উদাহরণস্বরূপ, আপনি নতুন আইপি ঠিকানা সংযুক্ত করতে পারেন এবং বিদ্যমান নিয়মগুলির সাথে যুক্ত বিদ্যমান আইপি ঠিকানাগুলিকে নিষ্কাশন করতে পারেন৷

নিচের মত NAT নিয়ম ফাইল আপডেট করা যাক

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

export projectid=`gcloud config get-value project`

cat <<EOF >natrulesfile.txt
rules:
 - ruleNumber: 100
   match: destination.ip == '$producerip2'
   action:
     sourceNatDrainIps:
     -  /projects/$projectid/regions/us-east4/addresses/nat-address-2
     sourceNatActiveIps:
     -  /projects/$projectid/regions/us-east4/addresses/nat-address-3
EOF

এই নতুন ফাইলটি এখন "nat-address-2" একটি নিষ্কাশন অবস্থায় স্থাপন করে। এবং সক্রিয় অবস্থায় "nat-address-3" যোগ করুন। এটি nat-address-2 ব্যবহার করে বিদ্যমান সংযোগগুলিকে সুন্দরভাবে বন্ধ করার অনুমতি দেবে, যখন শুধুমাত্র nat-address-3 ব্যবহার করে নতুন সংযোগ তৈরি করবে।

তারপর এই নিয়ম ফাইল ব্যবহার করে আমাদের বিদ্যমান NAT গেটওয়ে আপডেট করা যাক। ক্লাউড শেল থেকে:

gcloud alpha compute routers nats update consumer-nat-gw \
    --router=consumer-cr \
    --rules=natrulesfile.txt \
    --router-region=us-east4

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

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

নিয়মটি সফলভাবে কনফিগার করা হয়েছে তা যাচাই করুন। ক্লাউড শেল থেকে:

gcloud alpha compute routers nats rules list \
--nat=consumer-nat-gw --router=consumer-cr \
--router-region=us-east4 --format=yaml

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

---
action:
  sourceNatActiveIps:
  - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-3
  sourceNatDrainIps:
  - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-2
match: destination.ip == '35.192.142.134'
ruleNumber: 100

লক্ষ্য করুন কিভাবে "nat-address-2" এখন একটি নিষ্কাশন অবস্থায় রাখা হয়েছে। ভোক্তা VPC থেকে নতুন সংযোগগুলি এখন সঠিক NAT IP ব্যবহার করে তা যাচাই করার অনুশীলন হিসাবে আমরা এটি আপনার উপর ছেড়ে দিয়েছি।

অবশেষে, আপনার ক্লাউড NAT গেটওয়ে থেকে NAT নিয়ম মুছে ফেলতে এবং ডিফল্ট আচরণে প্রত্যাবর্তন করতে। আপনি নিম্নলিখিত gcloud কমান্ড ব্যবহার করতে পারেন। ক্লাউড শেল থেকে:

gcloud alpha compute routers nats rules delete 100 \
 --nat=consumer-nat-gw --router=consumer-cr \
 --router-region=us-east4 --quiet

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

Updated [https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/routers/consumer-cr]

আর কোন NAT নিয়ম বিদ্যমান নেই তা যাচাই করতে, আসুন NAT gateway describe কমান্ড ব্যবহার করি

gcloud alpha compute routers nats describe consumer-nat-gw \
 --router=consumer-cr --router-region=us-east4

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

enableEndpointIndependentMapping: false
name: consumer-nat-gw
natIpAllocateOption: MANUAL_ONLY
natIps:
- https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-1
sourceSubnetworkIpRangesToNat: ALL_SUBNETWORKS_ALL_IP_RANGES

আউটপুট YAML-এ কীভাবে একটি "নিয়ম:" বিভাগ নেই তা লক্ষ্য করুন। কোন NAT নিয়ম কনফিগার করা নির্দেশ করে।

11. পরিষ্কার করার পদক্ষেপ

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

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

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

gcloud compute instances delete consumer-instance \
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].
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 nat-address-3 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-8080 --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-8080].

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

gcloud compute networks subnets delete consumer-e4 \
producer-e4 --region=us-east4 --quiet

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

Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/consumer-e4].
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/producer-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].

12. অভিনন্দন!

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

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

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

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

  • এই উদাহরণের মতো আরও জটিল NAT নিয়ম তৈরি করে পরীক্ষা করুন
  • ড্রেনিং NAT আইপি ঠিকানাগুলি অন্বেষণ করুন এবং সংযোগের প্রভাব পর্যবেক্ষণ করুন।
  • Google ক্লাউড প্ল্যাটফর্মে নেটওয়ার্কিং সম্পর্কে আরও জানুন

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