IPv6-কেবল VM দৃষ্টান্ত তৈরি করা এবং NAT64/DNS64 সক্ষম করা

1. ভূমিকা

IPv6-এ স্থানান্তরিত হওয়ার প্রধান চ্যালেঞ্জগুলির মধ্যে একটি হল IPv4-কেবল-এন্ডপয়েন্ট এবং নেটওয়ার্কগুলিতে পৌঁছানোর ক্ষমতা বজায় রাখা। এই চ্যালেঞ্জ মোকাবেলা করার জন্য একটি অগ্রণী প্রযুক্তি হল ক্লায়েন্টদের জন্য A রেকর্ডগুলিকে AAAA রেকর্ডে অনুবাদ করার জন্য DNS64 (RFC6147-এ সংজ্ঞায়িত) ব্যবহার করা, এটি পরে NAT64 (RFC6146-এ সংজ্ঞায়িত) এর সাথে একত্রিত করা হয় যাতে বিশেষভাবে ফর্ম্যাট করা IPv6 ঠিকানাগুলিকে IPv4 তে অনুবাদ করা হয় যেখানে IPv4 ঠিকানাটিকে বিশেষ IPv4 ঠিকানায় এম্বেড করা হয়। এই কোডল্যাব ব্যবহারকারীকে Google ক্লাউড প্ল্যাটফর্ম (GCP) ভার্চুয়াল প্রাইভেট ক্লাউড (VPC) এ উভয় বৈশিষ্ট্য কনফিগার করার জন্য গাইড করে। একসাথে কনফিগার করা হলে, GCP NAT64 এবং DNS64 শুধুমাত্র IPv6-কে ইন্টারনেটে IPv4-শুধু সার্ভারের সাথে যোগাযোগ করার অনুমতি দেয়।

এই ল্যাবে, আপনি বিভিন্ন ধরনের IPv6 সাবনেট এবং উদাহরণ সহ একটি VPC সেট আপ করবেন: IPv6-শুধু GUA (Global Unicast Address), IPv6-only ULA (অনন্য স্থানীয় ঠিকানা) এবং ডুয়াল-স্ট্যাক ULA। তারপরে আপনি Google ক্লাউডের পরিচালিত DNS64 এবং NAT64 পরিষেবাগুলিকে কনফিগার করবেন এবং পরীক্ষা করবেন যাতে তাদের থেকে শুধুমাত্র IPv4 ওয়েবসাইটগুলি অ্যাক্সেস করা যায়৷

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

  • কিভাবে IPv6-শুধু সাবনেট এবং উদাহরণ তৈরি করবেন
  • কিভাবে একটি VPC এর জন্য Google ক্লাউডের পরিচালিত DNS64 পরিষেবা সক্ষম করবেন।
  • NAT64-এর জন্য কনফিগার করা Google Cloud NAT গেটওয়ে কীভাবে তৈরি করবেন।
  • কিভাবে IPv6-শুধুমাত্র উদাহরণ থেকে IPv4-শুধুমাত্র গন্তব্যে DNS64 রেজোলিউশন পরীক্ষা করবেন।
  • কিভাবে DNS64 এবং NAT64 আচরণ একক-স্ট্যাক এবং দ্বৈত-স্ট্যাক উদাহরণের মধ্যে আলাদা।
  • NAT64 এর জন্য একটি NAT গেটওয়ে কীভাবে কনফিগার করবেন।
  • কিভাবে NAT64 কানেক্টিভিটি শুধুমাত্র IPv6-এর থেকে শুধুমাত্র IPv4-এর গন্তব্যে পরীক্ষা করা যায়।

3. আপনি শুরু করার আগে

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

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

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

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
export projectname=$(gcloud config list --format="value(core.project)")
export zonename=[COMPUTE ZONE NAME]
export regionname=[REGION NAME]

সামগ্রিক ল্যাব আর্কিটেকচার

63e4293e033da8d3.png

NAT64 এবং DNS64 কিভাবে বিভিন্ন IPv6 সাবনেট প্রকারের সাথে ইন্টারঅ্যাক্ট করে তা প্রদর্শন করতে, আপনি GUA এবং ULA উভয় স্বাদেই IPv6 সাবনেট সহ একটি একক VPC তৈরি করবেন। আপনি একটি ডুয়াল-স্ট্যাক সাবনেট তৈরি করবেন (ULA অ্যাড্রেসিং ব্যবহার করে) কীভাবে DNS64 এবং NAT64 ডুয়াল-স্ট্যাক VM-তে প্রযোজ্য নয় তা প্রদর্শন করতে।

তারপরে আপনি DNS64 এবং NAT64 কনফিগার করবেন এবং ইন্টারনেটে IPv6 এবং IPv4 গন্তব্যে সংযোগ পরীক্ষা করবেন।

4. প্রস্তুতির ধাপ

প্রথমে, আপনার Google ক্লাউড প্রকল্পে প্রয়োজনীয় পরিষেবা অ্যাকাউন্ট, IAM, নেটওয়ার্ক পরিকাঠামো এবং উদাহরণগুলি সেট আপ করুন৷

পরিষেবা অ্যাকাউন্ট এবং আইএএম বাইন্ডিং তৈরি করুন

জিক্লাউড ব্যবহার করে একে অপরের সাথে এসএসএইচ করার দৃষ্টান্তগুলিকে অনুমতি দেওয়ার জন্য আমরা একটি নতুন পরিষেবা অ্যাকাউন্ট তৈরি করে শুরু করি। আমাদের এই ক্ষমতার প্রয়োজন হবে কারণ আমরা শুধুমাত্র GUA IPv6-এ অ্যাক্সেস করতে IAP ব্যবহার করতে পারি না এবং Cloudshell এখনও সরাসরি IPv6 অ্যাক্সেসের অনুমতি দেয় না। ক্লাউডশেলে নিম্নলিখিত কমান্ড(গুলি) চালান।

gcloud iam service-accounts create ipv6-codelab \
     --description="temporary service account for a codelab" \
     --display-name="ipv6codelabSA" \
     --project $projectname

gcloud projects add-iam-policy-binding  $projectname \
--member=serviceAccount:ipv6-codelab@$projectname.iam.gserviceaccount.com \
--role=roles/compute.instanceAdmin.v1

gcloud iam service-accounts add-iam-policy-binding \
    ipv6-codelab@$projectname.iam.gserviceaccount.com \
--member=serviceAccount:ipv6-codelab@$projectname.iam.gserviceaccount.com \
--role=roles/iam.serviceAccountUser

একটি VPC তৈরি করুন এবং ULA সক্ষম করুন

ক্লাউডশেলে নিম্নলিখিত কমান্ড(গুলি) চালিয়ে কাস্টম সাবনেট মোড এবং ULA অভ্যন্তরীণ IPv6 সক্ষম করে একটি VPC নেটওয়ার্ক তৈরি করুন৷

gcloud compute networks create ipv6-only-vpc \
--project=$projectname \
--subnet-mode=custom \
--mtu=1500 --bgp-routing-mode=global \
--enable-ula-internal-ipv6

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

SSH অ্যাক্সেসের অনুমতি দিতে ফায়ারওয়াল নিয়ম তৈরি করুন। একটি নিয়ম সামগ্রিক ULA পরিসর থেকে SSH-কে অনুমতি দেয় (fd20::/20)। আরও দুটি নিয়ম IAP পূর্বনির্ধারিত IPv6 এবং IPv4 রেঞ্জ (যথাক্রমে 2600:2d00:1:7::/64, 35.235.240.0/20) থেকে ট্রাফিকের অনুমতি দেয়।

Cloudshell এ নিম্নলিখিত কমান্ড(গুলি) চালান:

gcloud compute firewall-rules create allow-v6-ssh-ula \
--direction=INGRESS --priority=200 \
--network=ipv6-only-vpc --action=ALLOW \
--rules=tcp:22 --source-ranges=fd20::/20 \
--project=$projectname 

gcloud compute firewall-rules create allow-v6-iap \
--direction=INGRESS --priority=300 \
--network=ipv6-only-vpc --action=ALLOW \
--rules=tcp --source-ranges=2600:2d00:1:7::/64 \
--project=$projectname 

gcloud compute firewall-rules create allow-v4-iap \
--direction=INGRESS --priority=300 \
--network=ipv6-only-vpc --action=ALLOW \
--rules=tcp --source-ranges=35.235.240.0/20 \
--project=$projectname 

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

একটি GUA v6-only subnet, একটি ULA v6-only subnet, এবং একটি ডুয়াল-স্ট্যাক ULA সাবনেট তৈরি করুন। Cloudshell এ নিম্নলিখিত কমান্ড(গুলি) চালান:

gcloud compute networks subnets create gua-v6only-subnet \
--network=ipv6-only-vpc \
--project=$projectname \
--stack-type=IPV6_ONLY \
--ipv6-access-type=external \
--region=$regionname 

gcloud compute networks subnets create ula-v6only-subnet  \
--network=ipv6-only-vpc \
--project=$projectname \
--stack-type=IPV6_ONLY \
--ipv6-access-type=internal \
--enable-private-ip-google-access \
--region=$regionname

gcloud compute networks subnets create ula-dualstack-subnet  \
--network=ipv6-only-vpc \
--project=$projectname \
--stack-type=IPV4_IPV6 \
--range=10.120.0.0/16 \
--ipv6-access-type=internal \
--region=$regionname 

দৃষ্টান্ত তৈরি করুন

আপনার তৈরি করা প্রতিটি সাবনেটে উদাহরণ তৈরি করুন। IPv6-শুধুমাত্র ULA দৃষ্টান্তটি ক্লাউড-প্ল্যাটফর্মের সাথে নির্দিষ্ট করা হয়েছে যাতে আমরা এটিকে শুধুমাত্র GUA IPv6-এর জন্য একটি জাম্পবক্স হিসাবে ব্যবহার করতে পারি। Cloudshell এ নিম্নলিখিত কমান্ড(গুলি) চালান:

gcloud compute instances create gua-instance \
--subnet gua-v6only-subnet \
--stack-type IPV6_ONLY \
--zone $zonename \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--service-account=ipv6-codelab@$projectname.iam.gserviceaccount.com \
--project=$projectname

gcloud compute instances create ula-instance \
--subnet ula-v6only-subnet \
--stack-type IPV6_ONLY \
--zone $zonename \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--service-account=ipv6-codelab@$projectname.iam.gserviceaccount.com \
--project=$projectname

gcloud compute instances create dualstack-ula-instance \
--subnet ula-dualstack-subnet \
--stack-type IPV4_IPV6 \
--zone $zonename \
--project=$projectname

প্রাথমিক ইনস্ট্যান্স অ্যাক্সেস এবং সেটআপ

ULA উদাহরণে SSH যা ডিফল্টরূপে IAP ব্যবহার করবে। ULA উদাহরণে SSH থেকে ক্লাউডশেলে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

gcloud compute ssh ula-instance --project $projectname --zone $zonename

<username>@ula-instance:~$ 

আমরা GUA উদাহরণের জন্য একটি জাম্পবক্স হিসাবে ULA দৃষ্টান্তও ব্যবহার করব (কারণ IAP GUA দৃষ্টান্তগুলির সাথে কাজ করে না এবং Cloudshell VMগুলি IPv6 গন্তব্যগুলিতে অ্যাক্সেস করতে পারে না)৷

এখনও ULA ইনস্ট্যান্স শেল ভিতরে থাকাকালীন. নিম্নলিখিত gcloud কমান্ড ব্যবহার করে GUA উদাহরণে SSH করার চেষ্টা করুন।

প্রথমবার যখন আপনি একটি উদাহরণের মধ্যে একটি SSH কমান্ড চালান এটি আপনাকে একটি SSH কী-পেয়ার সেটআপ করতে অনুরোধ করবে। কী তৈরি না হওয়া পর্যন্ত এন্টার টিপুন এবং SSH কমান্ডটি কার্যকর করা হয়; এটি কোনো পাসফ্রেজ ছাড়াই একটি নতুন কী-পেয়ার তৈরি করে।

ula-instance:~$ gcloud compute ssh gua-instance

WARNING: The private SSH key file for gcloud does not exist.
WARNING: The public SSH key file for gcloud does not exist.
WARNING: You do not have an SSH key for gcloud.
WARNING: SSH keygen will be executed to generate a key.
Generating public/private rsa key pair.

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/galhabian/.ssh/google_compute_engine
Your public key has been saved in /home/galhabian/.ssh/google_compute_engine.pub
The key fingerprint is:
SHA256:5PYzydjcpWYiFtzetYCBI6vmy9dqyLsxgDORkB9ynqY galhabian@ula-instance
The key's randomart image is:
+---[RSA 3072]----+
|..               |
|+.o      .       |
|o= o  . + .      |
| o=    * o o     |
|+o.   . S o . o  |
|Eo . . . O + = . |
|   .=. .+ @ * .  |
|   +ooo... *     |
|    **..         |
+----[SHA256]-----+

সফল হলে, SSH কমান্ড সফল হবে এবং আপনি GUA উদাহরণে সফলভাবে SSH'd করবেন:

Updating instance ssh metadata...done.                                                                                                                                                                                                                                                                                            
Waiting for SSH key to propagate.
Warning: Permanently added 'compute.3639038240056074485' (ED25519) to the list of known hosts.
Linux gua-instance 6.1.0-34-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.135-1 (2025-04-25) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

<username>@gua-instance:~$ 

5. শুধুমাত্র IPv6 উদাহরণ পরীক্ষা করুন।

আসুন শুধুমাত্র আইপিভি 6-এর উভয় দৃষ্টান্তকে এসএসএইচ' দিয়ে এবং তাদের রাউটিং টেবিল পরীক্ষা করে পরীক্ষা করি।

GUA উদাহরণ পরীক্ষা করুন

SSH "gua-instance"-এ প্রথমে "ula-instance" উদাহরণ দিয়ে লাফিয়ে।

gcloud compute ssh ula-instance --project $projectname --zone $zonename
<username>@ula-instance:~$ gcloud compute ssh gua-instance

আসুন নিম্নলিখিত কমান্ডটি ব্যবহার করে উদাহরণের IPv6 রাউটিং টেবিলটি দেখি

<username>@gua-instance:~$ ip -6 route

2600:1900:4041:461::/65 via fe80::56:11ff:fef9:88c1 dev ens4 proto ra metric 100 expires 81sec pref medium
fe80::/64 dev ens4 proto kernel metric 256 pref medium
default via fe80::56:11ff:fef9:88c1 dev ens4 proto ra metric 100 expires 81sec mtu 1500 pref medium

আমরা রাউটিং টেবিলে তিনটি এন্ট্রি লক্ষ্য করি

  1. GUA সাবনেটের জন্য একটি /65 রুটটি ডিফল্ট গেটওয়ের জন্য একটি লিঙ্ক-স্থানীয় ঠিকানা ব্যবহার করে একটি প্রাপ্ত পরবর্তী-হপের সাথে সম্পর্কিত। মনে রাখবেন যে উপরের /65 IPv6 পাস-থ্রু নেটওয়ার্ক লোড ব্যালেন্সারের জন্য সংরক্ষিত
  2. লিঙ্ক-স্থানীয় ইউনিকাস্ট উপসর্গ fe80::/64-এর জন্য একটি অন্তর্নির্মিত /64 রুট
  3. সাবনেটের ডিফল্ট গেটওয়ের জন্য লিঙ্ক-স্থানীয় ঠিকানায় নির্দেশ করে একটি ডিফল্ট রুট।

আসুন এই কমান্ডটি জারি করে IPv4 রাউটিং টেবিলটি দেখি

<username>@gua-instance:~$ ip -4 route

default via 169.254.1.1 dev ens4 proto dhcp src 169.254.1.2 metric 100 
169.254.1.1 dev ens4 proto dhcp scope link src 169.254.1.2 metric 100 
169.254.169.254 via 169.254.1.1 dev ens4 proto dhcp src 169.254.1.2 metric 100

আশ্চর্যজনক? আসলে আমরা কম্পিউট মেটাডেটা সার্ভারে (169.254.169.154) অ্যাক্সেসের অনুমতি দেওয়ার জন্য শুধুমাত্র IPv6-তে একটি IPv4 রাউটিং টেবিল বজায় রাখি কারণ এটি এখনও একটি IPv4-শুধুমাত্র শেষ পয়েন্ট।

যেহেতু দৃষ্টান্তটি IP 169.254.1.2 গ্রহণ করে যখন এটি শুধুমাত্র একটি IPv6-এর উদাহরণ। এই আইপিটি কম্পিউট মেটাডেটা সার্ভার ছাড়া অন্য কোথাও রাউটেবল নয়, তাই দৃষ্টান্তটি কার্যকরভাবে সমস্ত IPv4 নেটওয়ার্ক থেকে বিচ্ছিন্ন।

কার্ল টেস্ট

চলুন curl ব্যবহার করে শুধুমাত্র v4 এবং শুধুমাত্র v6 ওয়েবসাইটের প্রকৃত সংযোগ পরীক্ষা করি।

<username>@gua-instance:~$ curl -vv --connect-timeout 10 v6.ipv6test.app
<username>@gua-instance:~$ curl -vv --connect-timeout 10 v4.ipv6test.app

নীচের একটি নমুনা আউটপুট.

<username>@gua-instance:~$ curl -vv --connect-timeout 10 v6.ipv6test.app
*   Trying [2600:9000:20be:cc00:9:ec55:a1c0:93a1]:80...
* Connected to v6.ipv6test.app (2600:9000:20be:cc00:9:ec55:a1c0:93a1) port 80 (#0)
> GET / HTTP/1.1
> Host: v6.ipv6test.app
> User-Agent: curl/7.88.1
> Accept: */*
> 
< HTTP/1.1 200 OK
!! Rest of output truncated

<username>@gua-instance:~$ curl -vv --connect-timeout 10 v4.ipv6test.app
*   Trying 3.163.165.4:80...
* ipv4 connect timeout after 4985ms, move on!
*   Trying 3.163.165.50:80...
* ipv4 connect timeout after 2492ms, move on!
*   Trying 3.163.165.127:80...
* ipv4 connect timeout after 1246ms, move on!
*   Trying 3.163.165.37:80...
* ipv4 connect timeout after 1245ms, move on!
* Failed to connect to v4.ipv6test.app port 80 after 10000 ms: Timeout was reached
* Closing connection 0
curl: (28) Failed to connect to v4.ipv6test.app port 80 after 10000 ms: Timeout was reached

প্রত্যাশিত হিসাবে, শুধুমাত্র একটি IPv6 উদাহরণ থেকে একটি IPv4 ইন্টারনেট এন্ডপয়েন্টে পৌঁছানোর কোনো সুযোগ নেই। DNS64 এবং NAT64 প্রভিশন না করে শুধুমাত্র IPv6-এর উদাহরণের একটি IPv4 গন্তব্যে যাওয়ার কোনো পথ নেই। একটি IPv6 গন্তব্যে পৌঁছানোর ক্ষমতা সাধারণত কাজ করে কারণ উদাহরণে একটি GUA IPv6 ঠিকানা থাকে।

ULA উদাহরণ পরীক্ষা করুন

SSH "ula-instance" উদাহরণে (ডিফল্টরূপে IAP ব্যবহার করে)।

gcloud compute ssh ula-instance --project $projectname --zone $zonename

আসুন নিম্নলিখিত কমান্ডটি ব্যবহার করে উদাহরণের IPv6 রাউটিং টেবিলটি দেখি

<username>@ula-instance:~$ ip -6 route

fd20:f06:2e5e:2000::/64 via fe80::55:82ff:fe6b:1d7 dev ens4 proto ra metric 100 expires 84sec pref medium
fe80::/64 dev ens4 proto kernel metric 256 pref medium
default via fe80::55:82ff:fe6b:1d7 dev ens4 proto ra metric 100 expires 84sec mtu 1500 pref medium

আমরা রাউটিং টেবিলে তিনটি এন্ট্রি লক্ষ্য করেছি, GUA উদাহরণের মতো, মাস্কটি বাদ দিয়ে /65 এর পরিবর্তে /64। এবং সাবনেট রুটটি একটি ULA পরিসরের অন্তর্গত। (fd20::/20 সমষ্টির অধীনে)

আসুন এই কমান্ডটি জারি করে IPv4 রাউটিং টেবিলটি দেখি

<username>@ula-instance:~$ ip -4 route

default via 169.254.1.1 dev ens4 proto dhcp src 169.254.1.2 metric 100 
169.254.1.1 dev ens4 proto dhcp scope link src 169.254.1.2 metric 100 
169.254.169.254 via 169.254.1.1 dev ens4 proto dhcp src 169.254.1.2 metric 100

যা GUA উদাহরণের অনুরূপ পরিস্থিতি দেখায়।

কার্ল টেস্ট

কার্ল ব্যবহার করে শুধুমাত্র v4-only এবং v6-only ওয়েবসাইটে সংযোগ পরীক্ষা পুনরাবৃত্তি করা হচ্ছে।

<username>@ula-instance:~$ curl -vv --connect-timeout 10 v6.ipv6test.app
<username>@ula-instance:~$ curl -vv --connect-timeout 10 v4.ipv6test.app

নীচের একটি নমুনা আউটপুট.

<username>@ula-instance:~$ curl -vv --connect-timeout 10 v6.ipv6test.app
*   Trying [2600:9000:20be:8400:9:ec55:a1c0:93a1]:80...
* ipv6 connect timeout after 4986ms, move on!
*   Trying [2600:9000:20be:9000:9:ec55:a1c0:93a1]:80...
* ipv6 connect timeout after 2493ms, move on!
*   Trying [2600:9000:20be:d600:9:ec55:a1c0:93a1]:80...
* ipv6 connect timeout after 1246ms, move on!
*   Trying [2600:9000:20be:b000:9:ec55:a1c0:93a1]:80...
* ipv6 connect timeout after 622ms, move on!
*   Trying [2600:9000:20be:7200:9:ec55:a1c0:93a1]:80...
* ipv6 connect timeout after 312ms, move on!
*   Trying [2600:9000:20be:8600:9:ec55:a1c0:93a1]:80...
* ipv6 connect timeout after 155ms, move on!
*   Trying [2600:9000:20be:7a00:9:ec55:a1c0:93a1]:80...
* ipv6 connect timeout after 77ms, move on!
*   Trying [2600:9000:20be:ce00:9:ec55:a1c0:93a1]:80...
* ipv6 connect timeout after 77ms, move on!
* Failed to connect to v6.ipv6test.app port 80 after 10000 ms: Timeout was reached
* Closing connection 0

<username>@ula-instance:~$ curl -vv --connect-timeout 10 v4.ipv6test.app
*   Trying 3.163.165.4:80...
* ipv4 connect timeout after 4985ms, move on!
*   Trying 3.163.165.50:80...
* ipv4 connect timeout after 2492ms, move on!
*   Trying 3.163.165.127:80...
* ipv4 connect timeout after 1246ms, move on!
*   Trying 3.163.165.37:80...
* ipv4 connect timeout after 1245ms, move on!
* Failed to connect to v4.ipv6test.app port 80 after 10000 ms: Timeout was reached
* Closing connection 0
curl: (28) Failed to connect to v4.ipv6test.app port 80 after 10000 ms: Timeout was reached

ULA দৃষ্টান্তের ক্ষেত্রে, উভয় ইন্টারনেট এন্ডপয়েন্টে কোনো পৌঁছানো যায় না যেহেতু IPv6 এন্ডপয়েন্টের জন্য আমরা যোগাযোগ করার জন্য একটি ULA ঠিকানা ব্যবহার করতে পারি না এবং শুধুমাত্র IPv6-এর দৃষ্টান্ত হিসেবে IPv4-এর কাছে কোনো পৌঁছানোর ক্ষমতা নেই।

6. NAT64 এবং DNS64 সক্ষম করুন

আপনার VPC-এর জন্য পরিচালিত DNS64 এবং NAT64 পরিষেবাগুলি কনফিগার করুন৷

DNS64

আপনার VPC এর জন্য DNS64 সার্ভার নীতি সক্ষম করুন৷ এটি VPC-এর DNS সমাধানকারীকে A-শুধুমাত্র প্রতিক্রিয়াগুলির জন্য AAAA রেকর্ডগুলি সংশ্লেষণ করতে বলে৷ Cloudshell এ নিম্নলিখিত কমান্ড(গুলি) চালান:

gcloud beta dns policies create allow-dns64 \
    --description="Enable DNS64 Policy" \
    --networks=ipv6-only-vpc \
    --enable-dns64-all-queries \
    --project $projectname

NAT64

একটি ক্লাউড রাউটার তৈরি করুন, যা Cloud NAT-এর জন্য প্রয়োজনীয়। তারপর, NAT64-এর জন্য কনফিগার করা একটি ক্লাউড NAT গেটওয়ে তৈরি করুন, এটি সমস্ত IPv6-শুধুমাত্র সাবনেট আইপি রেঞ্জের জন্য সক্ষম করে এবং বাহ্যিক আইপি স্বয়ংক্রিয়ভাবে বরাদ্দ করে৷ Cloudshell এ নিম্নলিখিত কমান্ড(গুলি) চালান:

gcloud compute routers create nat64-router \
--network=ipv6-only-vpc \
--region=$regionname \
--project=$projectname


gcloud beta compute routers nats create nat64-natgw \
--router=nat64-router \
--region=$regionname \
--auto-allocate-nat-external-ips \
--nat64-all-v6-subnet-ip-ranges \
--project=$projectname
 

7. NAT64 এবং DNS64 পরীক্ষা করুন

এখন, আইপিভি 6-মাত্র দৃষ্টান্ত থেকে আপনার NAT64 এবং DNS64 কনফিগারেশন পরীক্ষা করা যাক, GUA উদাহরণ দিয়ে শুরু করে ULA দৃষ্টান্ত অনুসরণ করুন।

একটি GUA উদাহরণ থেকে DNS64/NAT64 পরীক্ষা করা হচ্ছে

SSH "gua-instance"-এ প্রথমে "ula-instance" উদাহরণ দিয়ে লাফিয়ে।

gcloud compute ssh ula-instance --project $projectname --zone $zonename
<username>@ula-instance:~$ gcloud compute ssh gua-instance

DNS পরীক্ষা

একটি IPv6-শুধুমাত্র ওয়েবসাইটের DNS রেজোলিউশন পরীক্ষা করুন (যেমন, v6.ipv6test.app কিন্তু যেকোন IPv6-শুধু ওয়েবসাইটের অনুরূপ ফলাফল পাওয়া উচিত)।

<username>@gua-instance:~$ host -t AAAA v6.ipv6test.app
<username>@gua-instance:~$ host -t A v6.ipv6test.app

আমরা আশা করি শুধুমাত্র IPv6 AAAA উত্তর ফেরত দেওয়া হবে।

উদাহরণ আউটপুট

<username>@gua-instance:~$ host -t AAAA v6.ipv6test.app
v6.ipv6test.app has IPv6 address 2600:9000:269f:1000:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:6600:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:b600:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:3e00:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:9c00:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:b200:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:a600:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:1400:9:ec55:a1c0:93a1

<username>@gua-instance:~$ host -t A v6.ipv6test.app
v6.ipv6test.app has no A record

শুধুমাত্র একটি IPv4 ওয়েবসাইটের DNS রেজোলিউশন পরীক্ষা করুন (যেমন, v4.ipv6test.app)। আপনি সুপরিচিত উপসর্গ 64:ff9b::/96 ব্যবহার করে DNS64 দ্বারা সংশ্লেষিত একটি A রেকর্ড (মূল IPv4) এবং একটি AAAA রেকর্ড উভয়ই আশা করেন।

<username>@gua-instance:~$ host -t AAAA v4.ipv6test.app
<username>@gua-instance:~$ host -t A v4.ipv6test.app

উদাহরণ আউটপুট

<username>@gua-instance:~$ host -t AAAA v4.ipv6test.app
v4.ipv6test.app has IPv6 address 64:ff9b::36c0:3318
v4.ipv6test.app has IPv6 address 64:ff9b::36c0:3344
v4.ipv6test.app has IPv6 address 64:ff9b::36c0:333c
v4.ipv6test.app has IPv6 address 64:ff9b::36c0:3326

<username>@gua-instance:~$ host -t A v4.ipv6test.app
v4.ipv6test.app has address 54.192.51.68
v4.ipv6test.app has address 54.192.51.24
v4.ipv6test.app has address 54.192.51.60
v4.ipv6test.app has address 54.192.51.38

উপরের উদাহরণে, দশমিকে IPv4 ঠিকানা (54.192.51.38) হেক্সে (36 c0 33 26) অনুবাদ করবে এবং তাই আমরা AAAA রেকর্ডের জন্য একটি উত্তর আশা করব (64:ff9b::36c0:3326) যা আমাদের প্রাপ্ত AAAA উত্তরগুলির একটির সাথে মিলে যায়।

কার্ল টেস্ট

আইপিভি6-এর উপর কার্ল ব্যবহার করে একই v4-শুধুমাত্র এবং শুধুমাত্র v6-এন্ডপয়েন্টে প্রকৃত সংযোগ পরীক্ষা করা যাক

<username>@gua-instance:~$ curl -vv -6 v6.ipv6test.app

<username>@gua-instance:~$ curl -vv -6 v4.ipv6test.app

নীচের একটি নমুনা আউটপুট.

<username>@gua-instance:~$ curl -vv -6 v6.ipv6test.app
*   Trying [2600:9000:269f:1000:9:ec55:a1c0:93a1]:80...
* Connected to v6.ipv6test.app (2600:9000:269f:1000:9:ec55:a1c0:93a1) port 80 (#0)
> GET / HTTP/1.1

##
## <Output truncated for brevity>
##

<username>@gua-instance:~$ curl -vv -6 v4.ipv6test.app
*   Trying [64:ff9b::36c0:333c]:80...
* Connected to v4.ipv6test.app (64:ff9b::36c0:333c) port 80 (#0)
> GET / HTTP/1.1

##
## <Output truncated for brevity>
##

উভয় কার্ল কমান্ড সফল। NAT64 এবং DNS64 সফলভাবে সংযোগ সক্ষম করার জন্য একসাথে কাজ করার কারণে কীভাবে IPv6-এর উপর একটি IPv4-শুধুমাত্র ওয়েবসাইটে সংযোগ করা সম্ভব হয়েছিল তা লক্ষ্য করুন।

উৎস আইপি পরীক্ষা করুন

গন্তব্যস্থল দ্বারা পর্যবেক্ষণ করা উৎস আইপি পরীক্ষা করতে একটি আইপি প্রতিফলন পরিষেবা ব্যবহার করা যাক।

<username>@gua-instance:~$ curl -6 v4.ipv6test.app

<username>@gua-instance:~$ curl -6 v6.ipv6test.app

নমুনা আউটপুট

<username>@gua-instance:~$ curl -6 v4.ipv6test.app
34.47.60.91

<username>@gua-instance:~$ curl -6 v6.ipv6test.app
2600:1900:40e0:6f:0:1::

রিপোর্ট করা IPv6 ঠিকানাটি উদাহরণের IPv6 ঠিকানার সাথে মেলে। এই ঠিকানাটি উদাহরণে "ip -6 ঠিকানা" কমান্ডের আউটপুটের সাথে মেলে। উদাহরণ হিসেবে

<username>@gua-instance:~$ ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2600:1900:40e0:6f:0:1::/128 scope global dynamic noprefixroute
       valid_lft 79912sec preferred_lft 79912sec
    inet6 fe80::86:d9ff:fe34:27ed/64 scope link
       valid_lft forever preferred_lft forever

যদিও রিপোর্ট করা IPv4 ঠিকানাটি ক্লাউড NAT গেটওয়ের বাহ্যিক IP ঠিকানার সাথে মেলে কারণ এটি ইন্টারনেটে যাওয়ার আগে NAT64 ফাংশন সম্পাদন করছে। ক্লাউডশেলে এই gcloud কমান্ডটি চালিয়ে এটি যাচাই করা যেতে পারে

gcloud compute routers get-nat-ip-info \
       nat64-router \
       --region=$regionname

নমুনা আউটপুট

result:
- natIpInfoMappings:
  - mode: AUTO
    natIp: 34.47.60.91
    usage: IN_USE
  natName: nat64-natgw

মনে রাখবেন যে আউটপুটে রিপোর্ট করা "natIp" আইপি প্রতিফলন ওয়েবসাইট থেকে প্রাপ্ত আউটপুটের সাথে মেলে।

একটি ULA উদাহরণ থেকে DNS64/NAT64 পরীক্ষা করা হচ্ছে

প্রথমে, SSH থেকে ULA উদাহরণ "ula-instance"

gcloud compute ssh ula-instance --project $projectname --zone $zonename

<username>@ula-instance:~$

DNS পরীক্ষা

একটি IPv6-শুধুমাত্র ওয়েবসাইটের DNS রেজোলিউশন পরীক্ষা করুন (যেমন, v6.ipv6test.app কিন্তু যেকোন IPv6-শুধু ওয়েবসাইটের অনুরূপ ফলাফল পাওয়া উচিত)।

<username>@ula-instance:~$ host -t AAAA v6.ipv6test.app
<username>@ula-instance:~$ host -t A v6.ipv6test.app

আমরা আশা করি শুধুমাত্র IPv6 AAAA উত্তর ফেরত দেওয়া হবে।

উদাহরণ আউটপুট

<username>@ula-instance:~$ host -t AAAA v6.ipv6test.app
v6.ipv6test.app has IPv6 address 2600:9000:269f:1000:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:6600:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:b600:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:3e00:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:9c00:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:b200:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:a600:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:1400:9:ec55:a1c0:93a1

<username>@ula-instance:~$ host -t A v6.ipv6test.app
v6.ipv6test.app has no A record

শুধুমাত্র একটি IPv4 ওয়েবসাইটের DNS রেজোলিউশন পরীক্ষা করুন (যেমন, v4.ipv6test.app)। আপনি সুপরিচিত উপসর্গ 64:ff9b::/96 ব্যবহার করে DNS64 দ্বারা সংশ্লেষিত একটি A রেকর্ড (মূল IPv4) এবং একটি AAAA রেকর্ড উভয়ই আশা করেন।

<username>@ula-instance:~$ host -t AAAA v4.ipv6test.app
<username>@ula-instance:~$ host -t A v4.ipv6test.app

উদাহরণ আউটপুট

<username>@gua-instance:~$ host -t AAAA v4.ipv6test.app
v4.ipv6test.app has IPv6 address 64:ff9b::36c0:3318
v4.ipv6test.app has IPv6 address 64:ff9b::36c0:3344
v4.ipv6test.app has IPv6 address 64:ff9b::36c0:333c
v4.ipv6test.app has IPv6 address 64:ff9b::36c0:3326

<username>@gua-instance:~$ host -t A v4.ipv6test.app
v4.ipv6test.app has address 54.192.51.68
v4.ipv6test.app has address 54.192.51.24
v4.ipv6test.app has address 54.192.51.60
v4.ipv6test.app has address 54.192.51.38

উপরের উদাহরণে, দশমিকে IPv4 ঠিকানা (54.192.51.38) হেক্সে (36 c0 33 26) অনুবাদ করবে এবং তাই আমরা AAAA রেকর্ডের জন্য একটি উত্তর আশা করব (64:ff9b::36c0:3326) যা আমাদের প্রাপ্ত AAAA উত্তরগুলির একটির সাথে মিলে যায়।

কার্ল টেস্ট

চলুন curl ব্যবহার করে একই v4-only এবং v6-only এন্ডপয়েন্টে প্রকৃত সংযোগ পরীক্ষা করি।

একটি প্রারম্ভিক বিন্দু হিসাবে দেখান যে আইপিভি 4-এর উপর পৌঁছানো সম্ভব নয় যেহেতু উদাহরণটি একটি আইপিভি 6-মাত্র উদাহরণ।

<username>@ula-instance:~$ curl -vv -4 --connect-timeout 10 v6.ipv6test.app
<username>@ula-instance:~$ curl -vv -4 --connect-timeout 10 v4.ipv6test.app

উভয় কার্ল ব্যর্থ হবে যখন. তারা বিভিন্ন কারণে ব্যর্থ হবে। নীচের একটি নমুনা আউটপুট.

<username>@ula-instance:~$ curl -vv -4 v6.ipv6test.app
* Could not resolve host: v6.ipv6test.app
* Closing connection 0
curl: (6) Could not resolve host: v6.ipv6test.app

<username>@ula-instance:~$ curl -vv -4 --connect-timeout 10 v4.ipv6test.app
*   Trying 54.192.51.68:80...
* ipv4 connect timeout after 4993ms, move on!
*   Trying 54.192.51.38:80...
* ipv4 connect timeout after 2496ms, move on!
*   Trying 54.192.51.24:80...
* ipv4 connect timeout after 1248ms, move on!
*   Trying 54.192.51.60:80...
* Connection timeout after 10000 ms
* Closing connection 0
curl: (28) Connection timeout after 10000 ms

একটি IPv6-কেবল এন্ডপয়েন্টে IPv4 কার্ল ব্যর্থ হয় কারণ A রেকর্ডের জন্য DNS রেজোলিউশন ব্যর্থ হয় (যেমন DNS পরীক্ষার সময় প্রদর্শিত হয়)। শুধুমাত্র IPv4 এন্ডপয়েন্টে IPv4 কার্ল ব্যর্থ হয় কারণ একটি IPv6-অনলি ইন্সট্যান্সের কোনো IPv4 ঠিকানায় পৌঁছানো যায় না এবং এর কারণে আমরা একটি টাইমআউট পাই।

এখন আইপিভি 6-এর উপরে পৌঁছানোর পরীক্ষা করা যাক।

<username>@ula-instance:~$ curl -vv -6 v6.ipv6test.app

<username>@ula-instance:~$ curl -vv -6 v4.ipv6test.app

নীচের একটি নমুনা আউটপুট.

<username>@ula-instance:~$ curl -vv -6 v6.ipv6test.app
*   Trying [2600:9000:20be:c000:9:ec55:a1c0:93a1]:80...
* connect to 2600:9000:20be:c000:9:ec55:a1c0:93a1 port 80 failed: Connection timed out
*   Trying [2600:9000:20be:f000:9:ec55:a1c0:93a1]:80...
* ipv6 connect timeout after 84507ms, move on!
*   Trying [2600:9000:20be:ae00:9:ec55:a1c0:93a1]:80...
* ipv6 connect timeout after 42253ms, move on!
*   Trying [2600:9000:20be:2000:9:ec55:a1c0:93a1]:80...
* ipv6 connect timeout after 21126ms, move on!
*   Trying [2600:9000:20be:b600:9:ec55:a1c0:93a1]:80...
* ipv6 connect timeout after 10563ms, move on!
*   Trying [2600:9000:20be:7600:9:ec55:a1c0:93a1]:80...
* ipv6 connect timeout after 5282ms, move on!
*   Trying [2600:9000:20be:b000:9:ec55:a1c0:93a1]:80...
* ipv6 connect timeout after 2640ms, move on!
*   Trying [2600:9000:20be:3400:9:ec55:a1c0:93a1]:80...
* ipv6 connect timeout after 2642ms, move on!
* Failed to connect to v6.ipv6test.app port 80 after 300361 ms: Timeout was reached
* Closing connection 0

<username>@ula-instance:~$ curl -vv -6 v4.ipv6test.app
*   Trying [64:ff9b::36c0:333c]:80...
* Connected to v4.ipv6test.app (64:ff9b::36c0:333c) port 80 (#0)
> GET / HTTP/1.1

##
## <Output truncated for brevity>
##

যদিও শুধুমাত্র IPv6 ওয়েবসাইটের কার্ল ব্যর্থ হয় কারণ ULA সাবনেটগুলির ইন্টারনেটে সরাসরি পৌঁছানোর ক্ষমতা নেই৷ শুধুমাত্র IPv4 ওয়েবসাইটের কার্ল সফল হয় কারণ DNS64 এবং NAT64 GUA এবং ULA দৃষ্টান্তগুলির জন্য একইভাবে কাজ করে; শুধুমাত্র প্রয়োজন হল উদাহরণের জন্য শুধুমাত্র IPv6 হতে হবে।

একটি ডুয়াল-স্ট্যাক ইউএলএ উদাহরণ থেকে DNS64/NAT64 পরীক্ষা করা হচ্ছে

প্রথমে, ডুয়াল-স্ট্যাক ইউএলএ ইনস্ট্যান্স "ডুয়ালস্ট্যাক-উলা-ইনস্ট্যান্স" থেকে এসএসএইচ। জিক্লাউডকে IAP-এর জন্য IPv4 ঠিকানা ব্যবহার করতে বাধ্য করতে আমাদের "–tunnel-through-iap" পতাকা ব্যবহার করতে হবে।

gcloud compute ssh dualstack-ula-instance --project $projectname --zone $zonename --tunnel-through-iap 

<username>@dualstack-ula-instance:~$

এখন "হোস্ট" ইউটিলিটি ব্যবহার করে DNS64 পরীক্ষা করা যাক।

<username>@dualstack-ula-instance:~$ host v4.ipv6test.app
v4.ipv6test.app has address 54.192.51.38
v4.ipv6test.app has address 54.192.51.24
v4.ipv6test.app has address 54.192.51.68
v4.ipv6test.app has address 54.192.51.60

<username>@dualstack-ula-instance:~$ host v6.ipv6test.app
v6.ipv6test.app has IPv6 address 2600:9000:269f:fc00:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:1c00:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:a200:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:8a00:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:c800:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:c200:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:5800:9:ec55:a1c0:93a1
v6.ipv6test.app has IPv6 address 2600:9000:269f:dc00:9:ec55:a1c0:93a1

লক্ষ্য করুন কিভাবে শুধুমাত্র IPv4-এর ওয়েবসাইট এখন শুধুমাত্র IPv4 ঠিকানা ফেরত দিচ্ছে এবং সিন্থেটিক DNS64 উত্তর দিচ্ছে না। এর কারণ হল DNS64 শুধুমাত্র IPv6-এর ক্ষেত্রে প্রয়োগ করা হয় এবং ডুয়াল-স্ট্যাক উদাহরণগুলির জন্য মূল্যায়ন করা হয় না।

DNS64 এর প্রয়োজনীয়তা বাইপাস করার জন্য আসুন NAT64 কাজ করে কিনা তা পরীক্ষা করার জন্য /etc/hosts ফাইলে একটি এন্ট্রি যোগ করি। ডুয়াল-স্ট্যাক উদাহরণের ভিতরে নিম্নলিখিত কমান্ডটি চালান:

<username>@dualstack-ula-instance:~$ echo '64:ff9b::36c0:3326 v4.ipv6test.app' | sudo tee -a /etc/hosts

তারপর আইপিভি 6 এর মাধ্যমে ipv4 ওয়েবসাইটে পৌঁছানোর পরীক্ষা করার জন্য কার্ল ব্যবহার করা যাক

<username>@dualstack-ula-instance:~$ curl -vv -6 --connect-timeout 10 v4.ipv6test.app

এখানে উপরের কমান্ড থেকে একটি নমুনা আউটপুট আছে

<username>@dualstack-ula-instance:~$ curl -vv -6 --connect-timeout 10 v4.ipv6test.app

*   Trying [64:ff9b::36c0:3326]:80...
* ipv6 connect timeout after 10000ms, move on!
* Failed to connect to v4.ipv6test.app port 80 after 10001 ms: Timeout was reached
* Closing connection 0
curl: (28) Failed to connect to v4.ipv6test.app port 80 after 10001 ms: Timeout was reached

কার্লটি টাইমআউট হওয়া উচিত কারণ DNS64 এর মতো NAT64-এর ক্ষেত্রেও প্রয়োগ করার জন্য শুধুমাত্র IPv6-এর উদাহরণ প্রয়োজন।

NAT64 আসলে ডুয়াল-স্ট্যাক ইন্সট্যান্সে প্রয়োগ করছে না তা নিশ্চিত করতে, NAT গেটওয়ে যে সমস্ত পোর্ট ম্যাপিং প্রয়োগ করছে তার তালিকা করতে আসুন "get-nat-mapping" কমান্ডটি ব্যবহার করি। Cloudshell এ নিম্নলিখিত কমান্ড(গুলি) চালান:

gcloud compute routers get-nat-mapping-info \
      nat64-router --region $regionname \
      --project $projectname

আপনি নীচের স্নিপেট অনুরূপ একটি আউটপুট আশা করা উচিত:

---
instanceName: gua-instance
interfaceNatMappings:
- natIpPortRanges:
  - 34.47.60.91:1024-1055
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: '2600:1900:40e0:6f:0:1::'
- natIpPortRanges:
  - 34.47.60.91:32768-32799
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: '2600:1900:40e0:6f:0:1::'
---
instanceName: ula-instance
interfaceNatMappings:
- natIpPortRanges:
  - 34.47.60.91:1056-1087
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: fd20:9c2:93fc:2800:0:0:0:0
- natIpPortRanges:
  - 34.47.60.91:32800-32831
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: fd20:9c2:93fc:2800:0:0:0:0

NAT আউটপুট দেখায় যে NAT64 গেটওয়ে শুধুমাত্র IPv6-শুধু GUA এবং ULA দৃষ্টান্তের জন্য পোর্ট বরাদ্দ করে কিন্তু ডুয়াল-স্ট্যাক উদাহরণ নয়।

8. পরিষ্কার করুন

ক্লাউড রাউটার পরিষ্কার করুন

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

gcloud compute routers delete nat64-router \
      --region $regionname \
      --project $projectname --quiet

ডিএনএস নীতি বন্ধ করুন এবং পরিষ্কার করুন

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

gcloud beta dns policies update allow-dns64 \
    --networks="" \
    --project $projectname
gcloud beta dns policies delete allow-dns64 \
    --project $projectname --quiet

দৃষ্টান্তগুলি পরিষ্কার করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন: (দ্রষ্টব্য, দ্রুততর উদাহরণ মুছে ফেলার অপারেশনের জন্য নো-গ্রেসফুল-শাটডাউন পতাকা ব্যবহার করতে আমাদের সক্ষম করতে gcloud বিটা ব্যবহার করা হয়)

gcloud beta compute instances delete gua-instance \
         --zone $zonename \
         --no-graceful-shutdown \
         --project=$projectname --quiet

gcloud beta compute instances delete ula-instance \
         --zone $zonename \
         --no-graceful-shutdown \
         --project=$projectname --quiet

gcloud beta compute instances delete dualstack-ula-instance \
         --zone $zonename \
         --no-graceful-shutdown \
         --project=$projectname --quiet

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

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

gcloud compute networks subnets delete gua-v6only-subnet \
    --project=$projectname --quiet \
    --region=$regionname
 
gcloud compute networks subnets delete ula-v6only-subnet \
    --project=$projectname --quiet \
    --region=$regionname

gcloud compute networks subnets delete ula-dualstack-subnet \
    --project=$projectname --quiet \
    --region=$regionname

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

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

gcloud compute firewall-rules delete allow-v6-iap \
       --project=$projectname \
       --quiet

gcloud compute firewall-rules delete allow-v6-ssh-ula \
       --project=$projectname \
       --quiet

gcloud compute firewall-rules delete allow-v4-iap \
--project=$projectname \
--quiet

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

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

gcloud compute networks delete ipv6-only-vpc \
       --project=$projectname \
       --quiet

IAM অনুমতি এবং পরিষেবা অ্যাকাউন্ট পরিষ্কার করুন

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

gcloud projects remove-iam-policy-binding  $projectname \
--member=serviceAccount:ipv6-codelab@$projectname.iam.gserviceaccount.com \
--role=roles/compute.instanceAdmin.v1

gcloud iam service-accounts delete \
     ipv6-codelab@$projectname.iam.gserviceaccount.com \
     --quiet \
     --project $projectname

9. অভিনন্দন

আপনি সফলভাবে NAT64 এবং DNS64 ব্যবহার করেছেন যাতে IPv6-শুধুমাত্র দৃষ্টান্তগুলিকে ইন্টারনেটে IPv4-শুধুমাত্র গন্তব্যে পৌঁছানোর অনুমতি দেওয়া হয়।

এরপর কি?

এই কোডল্যাবগুলির কিছু পরীক্ষা করে দেখুন...

আরও পড়া এবং ভিডিও

রেফারেন্স ডক্স