নীতি ভিত্তিক রুট (PBR) কোডল্যাব

১. ভূমিকা

নীতি ভিত্তিক রুট

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

যখন আপনি একটি পলিসি-ভিত্তিক রুট তৈরি করেন, তখন আপনি নির্বাচন করেন কোন রিসোর্সগুলোর ট্র্যাফিক সেই রুটের মাধ্যমে প্রসেস করা যাবে। রুটটি নিম্নলিখিতগুলোর ক্ষেত্রে প্রযোজ্য হতে পারে:

  • সম্পূর্ণ নেটওয়ার্ক: সমস্ত ভার্চুয়াল মেশিন (VM) ইনস্ট্যান্স, VPN গেটওয়ে এবং ইন্টারকানেক্ট।
  • নেটওয়ার্ক ট্যাগ ব্যবহার করে VPC-তে VM ইনস্ট্যান্স নির্বাচন করুন
  • আন্তঃসংযোগ অঞ্চল: এই অঞ্চলের জন্য VLAN সংযুক্তিগুলির মাধ্যমে VPC নেটওয়ার্কে প্রবেশকারী সমস্ত ট্র্যাফিক।

একটি পলিসি-ভিত্তিক রুটের পরবর্তী হপ অবশ্যই একটি বৈধ অভ্যন্তরীণ নেটওয়ার্ক লোড ব্যালেন্সার হতে হবে, যা উক্ত পলিসি-ভিত্তিক রুটের মতোই একই VPC নেটওয়ার্কে অবস্থিত।

অভ্যন্তরীণ নেটওয়ার্ক লোড ব্যালেন্সারগুলো ডিফল্টরূপে সিমেট্রিক হ্যাশিং ব্যবহার করে, ফলে সোর্স NAT কনফিগার না করেই ট্র্যাফিক বহির্গামী এবং প্রত্যাবর্তন পথে একই অ্যাপ্লায়েন্সে পৌঁছাতে পারে।

বিশেষ রিটার্ন পাথ ব্যতীত, পলিসি-ভিত্তিক রুটগুলোর অগ্রাধিকার অন্যান্য রুট প্রকারের চেয়ে বেশি।

যদি দুটি পলিসি-ভিত্তিক রুটের প্রায়োরিটি একই হয়, তাহলে গুগল ক্লাউড একটি ডিটারমিনিস্টিক, অভ্যন্তরীণ অ্যালগরিদম ব্যবহার করে একই প্রায়োরিটির অন্যান্য রুটগুলোকে উপেক্ষা করে একটিমাত্র পলিসি-ভিত্তিক রুট নির্বাচন করে। পলিসি-ভিত্তিক রুটগুলো লঙ্গেস্ট-প্রিফিক্স ম্যাচিং ব্যবহার করে না এবং শুধুমাত্র সর্বোচ্চ প্রায়োরিটির রুটটিই নির্বাচন করে।

আপনি একমুখী ট্র্যাফিকের জন্য একটিমাত্র নিয়ম অথবা দ্বিমুখী ট্র্যাফিক সামলানোর জন্য একাধিক নিয়ম তৈরি করতে পারেন।

ক্লাউড ইন্টারকানেক্ট-এর সাথে পলিসি-ভিত্তিক রুট ব্যবহার করতে হলে, রুটটি একটি সম্পূর্ণ অঞ্চলের সমস্ত ক্লাউড ইন্টারকানেক্ট সংযোগে প্রয়োগ করতে হবে। পলিসি-ভিত্তিক রুট শুধুমাত্র কোনো একটি নির্দিষ্ট ক্লাউড ইন্টারকানেক্ট সংযোগে প্রয়োগ করা যায় না।

যেসব ভিএম ইনস্ট্যান্স পলিসি-ভিত্তিক রুট থেকে ট্র্যাফিক গ্রহণ করে, সেগুলোতে অবশ্যই আইপি ফরওয়ার্ডিং সক্রিয় থাকতে হবে।

PBR সংক্রান্ত বিবেচ্য বিষয়সমূহ

নিম্নলিখিত উপায়ে পলিসি-ভিত্তিক রুট ব্যবহার করার জন্য বিশেষ কনফিগারেশন প্রয়োজন।

উদাহরণস্বরূপ, GKE, PSC, বা PGA/PSA-এর সাথে PBR ব্যবহার করা।

GKE সহ PBR সম্পর্কে আরও বিস্তারিত তথ্য এখানে এবং PBR-এর সাধারণ সীমাবদ্ধতা বিভাগটি এখানে পাওয়া যাবে।

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

  • পলিসি ভিত্তিক রুটগুলি কীভাবে কনফিগার করবেন

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

  • ইনস্ট্যান্স স্থাপন এবং নেটওয়ার্কিং উপাদান কনফিগার করার জ্ঞান
  • VPC ফায়ারওয়াল কনফিগারেশন জ্ঞান

২. পরীক্ষার পরিবেশ

এই কোডল্যাবটি একটিমাত্র VPC ব্যবহার করবে। এই পরিবেশে ক্লায়েন্ট-এ এবং ক্লায়েন্ট-বি নামে দুটি কম্পিউট রিসোর্স থাকবে, যেগুলো অন্য একটি সার্ভার রিসোর্সে প্যাকেট পাঠাবে। PBR এবং ফিল্টার ব্যবহার করে, আমরা ফায়ারওয়াল প্রয়োগের জন্য ক্লায়েন্ট-এ থেকে আসা ট্র্যাফিককে অন্য একটি কম্পিউট রিসোর্সের মধ্য দিয়ে যেতে বাধ্য করব, যেখানে ক্লায়েন্ট-বি-এর ট্র্যাফিক সরাসরি সার্ভারে যাবে। নিচের ডায়াগ্রামটি এই পথটি প্রদর্শন করে।

bff32b01ada8e9ad.png

উপরের ডায়াগ্রামে, PBR পাথগুলোর জন্য নিয়ম অনুযায়ী একটি ILB (নেটওয়ার্ক ইন্টারনাল লোড ব্যালান্সার) থাকার কথা। ডায়াগ্রামের সরলতার জন্য এটি বাদ দেওয়া হয়েছে।

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

কোডল্যাবে একটিমাত্র প্রজেক্ট প্রয়োজন।

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

export project_id=`gcloud config list --format="value(core.project)"`
export region=us-central1
export zone=us-central1-a
export prefix=codelab-pbr

৪. এপিআই সক্রিয় করুন

যদি আগে থেকে করা না থাকে, তাহলে পণ্যগুলি ব্যবহার করার জন্য API গুলি সক্ষম করুন।

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

gcloud services enable compute.googleapis.com
gcloud services enable networkconnectivity.googleapis.com

৫. ভিপিসি নেটওয়ার্ক ও সাবনেট তৈরি করুন

ভিপিসি নেটওয়ার্ক

codelab-pbr-vpc VPC তৈরি করুন:

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

gcloud compute networks create $prefix-vpc --subnet-mode=custom 

সাবনেট

নির্বাচিত অঞ্চলে সংশ্লিষ্ট সাবনেটগুলি তৈরি করুন:

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

gcloud compute networks subnets create $prefix-vpc-subnet \
   --range=10.10.10.0/24 --network=$prefix-vpc --region=${region}

৬. ফায়ারওয়াল নিয়ম তৈরি করুন

আপনার VM ইনস্ট্যান্সগুলিতে IAP-কে সংযোগ করার অনুমতি দিতে, এমন একটি ফায়ারওয়াল নিয়ম তৈরি করুন যা:

  • এটি সেই সমস্ত VM ইনস্ট্যান্সের ক্ষেত্রে প্রযোজ্য, যেগুলোকে আপনি IAP ব্যবহার করে অ্যাক্সেসযোগ্য করতে চান।
  • 35.235.240.0/20 আইপি রেঞ্জ থেকে ইনগ্রেস ট্র্যাফিকের অনুমতি দেয়। এই রেঞ্জে সেই সমস্ত আইপি অ্যাড্রেস রয়েছে যা IAP টিসিপি ফরওয়ার্ডিংয়ের জন্য ব্যবহার করে।

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

gcloud compute firewall-rules create $prefix-allow-iap-proxy \
--direction=INGRESS \
--priority=1000 \
--network=$prefix-vpc \
--action=ALLOW \
--rules=tcp:22 \
--source-ranges=35.235.240.0/20

সার্ভারে স্ট্যান্ডার্ড HTTP পোর্ট (TCP 80) এবং ICMP প্রোটোকল অনুমোদনের জন্য:

  • "সার্ভার" নেটওয়ার্ক ট্যাগযুক্ত রিসোর্সগুলির ক্ষেত্রে প্রযোজ্য।
  • সকল উৎস থেকে প্রবেশের অনুমতি দেয়

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

gcloud compute firewall-rules create $prefix-allow-http-icmp \
--direction=INGRESS \
--priority=1000 \
--network=$prefix-vpc \
--action=ALLOW \
--rules=tcp:80,icmp \
--source-ranges=0.0.0.0/0 \
--target-tags=server

ফায়ারওয়ালকে প্যাকেট গ্রহণ করার অনুমতি দিতে, সমস্ত প্রোটোকল এবং পোর্টে প্রবেশের অনুমতি দিন।

  • "fw" নেটওয়ার্ক ট্যাগযুক্ত রিসোর্সগুলির ক্ষেত্রে প্রযোজ্য
  • 10.10.10.0/24 উৎস থেকে প্রবেশের অনুমতি দেয়।

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

gcloud compute firewall-rules create $prefix-fw-allow-ingress \
--direction=INGRESS \
--priority=1000 \
--network=$prefix-vpc \
--action=ALLOW \
--rules=all \
--source-ranges=10.10.10.0/24 \
--target-tags=fw

স্বাস্থ্য পরীক্ষার প্রোবগুলিকে অনুমতি দিতে

  • "fw" নেটওয়ার্ক ট্যাগযুক্ত রিসোর্সগুলির ক্ষেত্রে প্রযোজ্য।
  • স্বাস্থ্য পরীক্ষা পরিসীমা থেকে প্রবেশের অনুমতি দেয়

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

gcloud compute firewall-rules create $prefix-allow-hc-ingress \
--direction=INGRESS \
--priority=1000 \
--network=$prefix-vpc \
--action=ALLOW \
--rules=tcp:80 \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=fw

৭. ক্লাউড রাউটার এবং ক্লাউড ন্যাট তৈরি করুন

এই অংশের উদ্দেশ্য হলো যাতে ব্যক্তিগত ভার্চুয়াল মেশিনগুলো ইন্টারনেট থেকে উপযুক্ত সফটওয়্যার প্যাকেজগুলো ডাউনলোড করতে পারে।

ক্লাউড রাউটার তৈরি করুন

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

gcloud compute routers create ${prefix}-cr \
--region=${region} \
--network=${prefix}-vpc

ক্লাউড NAT গেটওয়ে তৈরি করুন

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

gcloud compute routers nats create ${prefix}-nat-gw-${region} \
--router=${prefix}-cr \
--router-region=${region} \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges

৮. কম্পিউট ইনস্ট্যান্স তৈরি করুন

ClientA, ClientB, FW, এবং Server কম্পিউট ইনস্ট্যান্সগুলো তৈরি করুন:

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

gcloud compute instances create clienta \
   --subnet=$prefix-vpc-subnet \
   --no-address \
   --private-network-ip=10.10.10.10 \
   --zone $zone \
   --tags client \
   --metadata startup-script='#! /bin/bash
apt-get update'

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

gcloud compute instances create clientb \
   --subnet=$prefix-vpc-subnet \
   --no-address \
   --private-network-ip=10.10.10.11 \
   --zone $zone \
   --tags client \
   --metadata startup-script='#! /bin/bash
apt-get update'

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

gcloud compute instances create server \
   --subnet=$prefix-vpc-subnet \
   --no-address \
   --private-network-ip=10.10.10.200 \
   --zone $zone \
   --tags server \
   --metadata startup-script='#! /bin/bash
sudo su
apt-get update
apt-get -y install tcpdump
apt-get -y install nginx
cat > /var/www/html/index.html << EOF
<html><body><p>Server</p></body></html>
EOF'

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

gcloud compute instances create fw \
   --subnet=$prefix-vpc-subnet \
   --can-ip-forward \
   --no-address \
   --private-network-ip=10.10.10.75 \
   --zone $zone \
   --tags fw \
   --metadata startup-script='#! /bin/bash
apt-get update
sudo apt-get -y install tcpdump
sudo apt-get -y install nginx
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -I FORWARD -d 10.10.10.200 -j REJECT'

৯. পিবিআর ছাড়া সংযোগ পরীক্ষা করুন

সম্প্রতি তৈরি করা ক্লায়েন্ট কম্পিউট ভিএমগুলোতে SSH-এর মাধ্যমে লগইন করুন এবং উভয় ক্লায়েন্ট থেকে সার্ভারে সংযোগ যাচাই করুন।

cloudshell1 থেকে clienta-তে লগ ইন করুন:

gcloud compute ssh clienta --zone=$zone --tunnel-through-iap

নিম্নলিখিত কমান্ডগুলো চালান:

ping 10.10.10.200 -c 5
curl 10.10.10.200/index.html

পিং এবং কার্ল অনুরোধগুলো সফল হওয়া উচিত।

আউটপুট:

root@clienta:~$ ping 10.10.10.200 -c 5
PING 10.10.10.200 (10.10.10.200) 56(84) bytes of data.
64 bytes from 10.10.10.200: icmp_seq=1 ttl=64 time=1.346 ms
64 bytes from 10.10.10.200: icmp_seq=2 ttl=64 time=0.249 ms
64 bytes from 10.10.10.200: icmp_seq=3 ttl=64 time=0.305 ms
64 bytes from 10.10.10.200: icmp_seq=4 ttl=64 time=0.329 ms
64 bytes from 10.10.10.200: icmp_seq=5 ttl=64 time=0.240 ms
root@clienta:~$ curl 10.10.10.200/index.html
<html><body><p>Server</p></body></html>

+ চিহ্নে ক্লিক করে একটি অতিরিক্ত ক্লাউডশেল ট্যাব খুলুন।

3722d8574c3812b1.png

cloudshell2 থেকে ব্যবহারের জন্য ভেরিয়েবল সেট করুন:

export project_id=`gcloud config list --format="value(core.project)"`
export region=us-central1
export zone=us-central1-a
export prefix=codelab-pbr

cloudshell2 থেকে clientb-তে SSH:

gcloud compute ssh clientb --zone=$zone --tunnel-through-iap

নিম্নলিখিত কমান্ডগুলো চালান:

ping 10.10.10.200 -c 5
curl 10.10.10.200/index.html

পিং এবং কার্ল অনুরোধগুলো সফল হওয়া উচিত।

আউটপুট:

root@clientb:~$ ping 10.10.10.200 -c 5
PING 10.10.10.200 (10.10.10.200) 56(84) bytes of data.
64 bytes from 10.10.10.200: icmp_seq=1 ttl=64 time=1.346 ms
64 bytes from 10.10.10.200: icmp_seq=2 ttl=64 time=0.249 ms
64 bytes from 10.10.10.200: icmp_seq=3 ttl=64 time=0.305 ms
64 bytes from 10.10.10.200: icmp_seq=4 ttl=64 time=0.329 ms
64 bytes from 10.10.10.200: icmp_seq=5 ttl=64 time=0.240 ms
root@clientb:~$ curl 10.10.10.200/index.html
<html><body><p>Server</p></body></html>

এখন ভিএম টার্মিনাল থেকে বেরিয়ে ক্লাউডশেলে ফিরে যান।

১০. একটি ইনস্ট্যান্স গ্রুপ তৈরি করুন

আপনার fw VM-এর জন্য একটি আনম্যানেজড ইনস্ট্যান্স গ্রুপ তৈরি করুন।

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

gcloud compute instance-groups unmanaged create pbr-uig --zone=$zone

fw ইনস্ট্যান্সটিকে আনম্যানেজড ইনস্ট্যান্স গ্রুপে যুক্ত করুন।

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

gcloud compute instance-groups unmanaged add-instances pbr-uig --instances=fw --zone=$zone

১১. একটি স্বাস্থ্য পরীক্ষা তৈরি করুন

ব্যাকএন্ড সার্ভিসের জন্য একটি হেলথ চেক তৈরি করুন। আমরা একটি সাধারণ TCP পোর্ট ৮০ হেলথ চেক করব।

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

gcloud compute health-checks create tcp $prefix-hc-tcp-80 --region=$region --port 80

১২. একটি ব্যাকএন্ড সার্ভিস তৈরি করুন

ফরওয়ার্ডিং রুলের সাথে সংযুক্ত করার জন্য একটি ব্যাকএন্ড সার্ভিস তৈরি করুন।

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

gcloud compute backend-services create be-pbr --load-balancing-scheme=internal --protocol=tcp --region=$region --health-checks=$prefix-hc-tcp-80 --health-checks-region=$region

এখন ইনস্ট্যান্স গ্রুপটিকে ব্যাকএন্ড সার্ভিসে যুক্ত করুন।

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

gcloud compute backend-services add-backend be-pbr --region=$region --instance-group=pbr-uig --instance-group-zone=$zone

১৩. একটি ফরওয়ার্ডিং নিয়ম তৈরি করুন

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

gcloud compute forwarding-rules create fr-pbr --region=$region --load-balancing-scheme=internal --network=$prefix-vpc --subnet=$prefix-vpc-subnet --ip-protocol=TCP --ports=ALL --backend-service=be-pbr --backend-service-region=$region --address=10.10.10.25 --network-tier=PREMIUM

১৪. পিবিআর নিয়ম তৈরি করুন

এই PBR নিয়মটি ক্লায়েন্টদের জন্য প্রযোজ্য। যদি সোর্স আইপি 10.10.10.10/32 (ক্লায়েন্টের ঠিকানা) এবং ডেস্টিনেশন আইপি 10.10.10.0/24 হয়, তবে এটি সমস্ত IPv4 ট্র্যাফিককে 10.10.10.25 ফরওয়ার্ডিং নিয়মে রাউট করবে।

এর মানে হলো, clienta, PBR-এর সাথে মিলবে, কিন্তু clientb-এর সাথে নয়

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

gcloud network-connectivity policy-based-routes create pbr-client \
   --network=projects/$project_id/global/networks/$prefix-vpc \
   --next-hop-ilb-ip=10.10.10.25 \
   --source-range=10.10.10.10/32 \
   --destination-range=10.10.10.0/24 \
   --protocol-version=IPv4 \
   --priority=1000 \
   --tags=client

এই PBR নিয়মটি সার্ভারের জন্য প্রযোজ্য। যদি সোর্স আইপি 10.10.10.200/32 এবং ডেস্টিনেশন আইপি 10.10.10.10/32 হয়, তবে এটি সমস্ত IPv4 ট্র্যাফিককে 10.10.10.25 ফরওয়ার্ডিং নিয়মে রাউট করবে।

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

gcloud network-connectivity policy-based-routes create pbr-server \
   --network=projects/$project_id/global/networks/$prefix-vpc \
   --next-hop-ilb-ip=10.10.10.25 \
   --source-range=10.10.10.200/32 \
   --destination-range=10.10.10.10/32 \
   --protocol-version=IPv4 \
   --priority=2000 \
   --tags=server

১৫. পিবিআর দিয়ে সংযোগ পরীক্ষা করুন

আমরা এখন PBR কার্যকারিতা যাচাই করব। "fw" ইনস্ট্যান্সটি সার্ভারের জন্য পাঠানো অনুরোধ প্রত্যাখ্যান করার জন্য iptables দিয়ে কনফিগার করা আছে। যদি PBR কার্যকর থাকে, তাহলে যে অনুরোধগুলো আগে clienta-তে কাজ করত, সেগুলো এখন ব্যর্থ হবে, অথচ clientb তখনও সফল থাকবে।

ক্লায়েন্টের কম্পিউট ভিএম-এ SSH করে প্রবেশ করুন এবং একই পরীক্ষাগুলো চালান।

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

gcloud compute ssh clienta --zone=$zone --tunnel-through-iap

নিম্নলিখিত কমান্ডগুলো চালান:

ping 10.10.10.200 -c 5
curl 10.10.10.200/index.html

আউটপুট:

root@clienta:~$ ping 10.10.10.200 -c 5
PING 10.10.10.200 (10.10.10.200) 56(84) bytes of data.
From 10.10.10.75 icmp_seq=1 Destination Port Unreachable
From 10.10.10.75 icmp_seq=2 Destination Port Unreachable
From 10.10.10.75 icmp_seq=3 Destination Port Unreachable
From 10.10.10.75 icmp_seq=4 Destination Port Unreachable
From 10.10.10.75 icmp_seq=5 Destination Port Unreachable
root@clienta:~$ curl 10.10.10.200/index.html
curl: (7) Failed to connect to 10.10.10.200 port 80: Connection refused

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

ক্লায়েন্টবি-তে SSH করে একই সংযোগ পরীক্ষাটি চালান।

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

gcloud compute ssh clientb --zone=$zone --tunnel-through-iap

নিম্নলিখিত কমান্ডগুলো চালান:

ping 10.10.10.200 -c 5
curl 10.10.10.200/index.html

আউটপুট:

root@clientb:~$ ping 10.10.10.200 -c 5
PING 10.10.10.200 (10.10.10.200) 56(84) bytes of data.
64 bytes from 10.10.10.200: icmp_seq=1 ttl=63 time=0.361 ms
64 bytes from 10.10.10.200: icmp_seq=2 ttl=63 time=0.475 ms
64 bytes from 10.10.10.200: icmp_seq=3 ttl=63 time=0.379 ms
root@clientb:~$ curl 10.10.10.200
<html><body><p>Server</p></body></html>

যেমনটি দেখতে পাচ্ছেন, ক্লায়েন্টবি থেকে সার্ভারে পাঠানো অনুরোধগুলো সফল হয়েছে। এর কারণ হলো, অনুরোধগুলো সোর্স আইপি-র জন্য নির্ধারিত পিবিআর নিয়মের সাথে মেলে না।

১৬. [ঐচ্ছিক] ফায়ারওয়ালে ক্যাপচারের মাধ্যমে যাচাইকরণ

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

আপনার cloudshell1 এবং cloudshell2-তে clienta এবং clientb-এর সাথে এখনও একটি SSH সংযোগ থাকা উচিত।

+ চিহ্নে ক্লিক করে একটি অতিরিক্ত ক্লাউডশেল ট্যাব খুলুন।

5eb3a9956f7e41a2.png

cloudshell3 থেকে, ভেরিয়েবল সেট করুন:

export project_id=`gcloud config list --format="value(core.project)"`
export region=us-central1
export zone=us-central1-a
export prefix=codelab-pbr

ফায়ারওয়ালে SSH করুন:

gcloud compute ssh fw --zone=$zone --tunnel-through-iap

fw (cloudshell3)-এ নিম্নলিখিত কমান্ডটি চালান:

sudo tcpdump -i any icmp -nn

ক্লায়েন্টা (cloudshell1) থেকে পিং টেস্টটি চালান:

ping 10.10.10.200 -c 5

ক্লায়েন্টবি (ক্লাউডশেল২) থেকে পিং টেস্টটি চালান:

ping 10.10.10.200 -c 5

fw (cloudshell 3)-এর আউটপুট:

root@fw:~$ sudo tcpdump -i any icmp -nn
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
17:07:42.215297 ens4  In  IP 10.10.10.10 > 10.10.10.200: ICMP echo request, id 25362, seq 1, length 64
17:07:42.215338 ens4  Out IP 10.10.10.75 > 10.10.10.10: ICMP 10.10.10.200 protocol 1 port 51064 unreachable, length 92
17:07:43.216122 ens4  In  IP 10.10.10.10 > 10.10.10.200: ICMP echo request, id 25362, seq 2, length 64
17:07:43.216158 ens4  Out IP 10.10.10.75 > 10.10.10.10: ICMP 10.10.10.200 protocol 1 port 30835 unreachable, length 92
17:07:44.219064 ens4  In  IP 10.10.10.10 > 10.10.10.200: ICMP echo request, id 25362, seq 3, length 64
17:07:44.219101 ens4  Out IP 10.10.10.75 > 10.10.10.10: ICMP 10.10.10.200 protocol 1 port 2407 unreachable, length 92

যেহেতু PBR প্রযোজ্য নয়, তাই আপনি ক্লায়েন্টb (10.10.10.11) থেকে tcpdump-এ কোনো প্যাকেট দেখতে পাবেন না।

রিসোর্সগুলো পরিষ্কার করার জন্য ক্লাউডশেলে ফিরে যান।

১৭. পরিষ্কার করার পদক্ষেপ

ক্লাউড শেল থেকে PBR রুল, ফরওয়ার্ডিং রুল, ব্যাকএন্ড সার্ভিস, হেলথ চেক, ইনস্ট্যান্স গ্রুপ, কম্পিউট ইনস্ট্যান্স, NAT, ক্লাউড রাউটার এবং ফায়ারওয়াল রুলগুলো মুছে ফেলুন।

gcloud -q network-connectivity policy-based-routes delete pbr-client

gcloud -q network-connectivity policy-based-routes delete pbr-server

gcloud -q compute forwarding-rules delete fr-pbr --region=$region

gcloud -q compute backend-services delete be-pbr --region=$region

gcloud -q compute health-checks delete $prefix-hc-tcp-80 --region=$region

gcloud -q compute instance-groups unmanaged delete pbr-uig --zone=$zone

gcloud -q compute instances delete clienta --zone=$zone
gcloud -q compute instances delete clientb --zone=$zone
gcloud -q compute instances delete server --zone=$zone
gcloud -q compute instances delete fw --zone=$zone


gcloud -q compute routers nats delete ${prefix}-nat-gw-${region} \
--router=$prefix-cr --router-region=$region

gcloud -q compute routers delete $prefix-cr --region=$region

gcloud -q compute firewall-rules delete $prefix-allow-iap-proxy
gcloud -q compute firewall-rules delete $prefix-allow-http-icmp
gcloud -q compute firewall-rules delete $prefix-fw-allow-ingress
gcloud -q compute firewall-rules delete $prefix-allow-hc-ingress

সাবনেট এবং ভিপিসিগুলো মুছে ফেলুন:

gcloud -q compute networks subnets delete $prefix-vpc-subnet \
    --region $region

gcloud -q compute networks delete $prefix-vpc

১৮. অভিনন্দন!

কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন।

আমরা যা আলোচনা করেছি

  • নীতি ভিত্তিক রুট