১. ভূমিকা
অন-প্রিমিসেস হোস্টের জন্য প্রাইভেট গুগল অ্যাক্সেস , ক্লাউড ভিপিএন টানেল অথবা ক্লাউড ইন্টারকানেক্ট- এর জন্য একটি ভিএলএএন অ্যাটাচমেন্টের মাধ্যমে ট্র্যাফিক রাউটিং করে অন-প্রিমিসেস সিস্টেমগুলোকে গুগল এপিআই এবং পরিষেবাগুলোর সাথে সংযোগ করার একটি উপায় প্রদান করে। অন-প্রিমিসেস হোস্টের জন্য প্রাইভেট গুগল অ্যাক্সেস হলো ইন্টারনেটের মাধ্যমে গুগল এপিআই এবং পরিষেবাগুলোর সাথে সংযোগ করার একটি বিকল্প।
অন-প্রিমিসেস হোস্টের জন্য প্রাইভেট গুগল অ্যাক্সেসের ক্ষেত্রে, আপনাকে গুগল এপিআই (Google APIs)-এর অনুরোধগুলো ভার্চুয়াল আইপি অ্যাড্রেস (VIP)-এ পাঠাতে হবে। IPv6-এর জন্য নিম্নলিখিত আইপি অ্যাড্রেসগুলো ব্যবহৃত হয়:
- private.googleapis.com এর জন্য: 2600:2d00:0002:2000::/64
- restricted.googleapis.com এর জন্য: 2600:2d00:0002:1000::/64
আপনার নির্বাচিত ভিআইপি নির্ধারণ করে দেয় যে আপনি কোন কোন পরিষেবা ব্যবহার করতে পারবেন। এই কোডল্যাবে, আমরা private.googleapis.com ব্যবহার করব। আরও তথ্যের জন্য, ডোমেইন অপশনস দেখুন।
এই কোডল্যাবে বর্ণনা করা হয়েছে কিভাবে IPv6 অ্যাড্রেস ব্যবহারকারী অন-প্রিমিসেস হোস্টগুলোর জন্য প্রাইভেট গুগল অ্যাক্সেস চালু করতে হয়। আপনি একটি অন-প্রিমিসেস এনভায়রনমেন্টকে উপস্থাপন করার জন্য on-premises-vpc নামে একটি VPC নেটওয়ার্ক সেট আপ করবেন। আপনার ডেপ্লয়মেন্টের জন্য, 'on-premises-vpc' নেটওয়ার্কটির কোনো অস্তিত্ব থাকবে না, পরিবর্তে আপনার অন-প্রিমিসেস ডেটা সেন্টার বা ক্লাউড প্রোভাইডারের সাথে হাইব্রিড নেটওয়ার্কিং ব্যবহার করা হবে।
আপনি যা তৈরি করবেন
এই কোডল্যাবে, আপনি একটি এন্ড-টু-এন্ড IPv6 নেটওয়ার্ক তৈরি করবেন যা চিত্র ১-এ প্রদর্শিত পদ্ধতি অনুযায়ী private.googleapis.com IPv6 অ্যাড্রেস 2600:2d00:0002:2000::/64 এ CNAME *.googleapis.com ব্যবহার করে ক্লাউড স্টোরেজ API-তে অন-প্রিমিসেস অ্যাক্সেস প্রদর্শন করে।
চিত্র ১

আপনি যা শিখবেন
- কীভাবে একটি ডুয়াল স্ট্যাক ভিপিসি নেটওয়ার্ক তৈরি করবেন
- IPv6 দিয়ে কীভাবে HA VPN তৈরি করবেন
- প্রাইভেট গুগল অ্যাক্সেস পেতে ডিএনএস কীভাবে আপডেট করবেন
- প্রাইভেট গুগল অ্যাক্সেস সংযোগ কীভাবে স্থাপন এবং যাচাই করবেন
আপনার যা যা লাগবে
- গুগল ক্লাউড প্রজেক্ট
২. শুরু করার আগে
কোডল্যাব সমর্থন করার জন্য প্রকল্পটি আপডেট করুন।
এই কোডল্যাবটি ক্লাউড শেলে gcloud কনফিগারেশন বাস্তবায়নে সাহায্য করার জন্য $variables ব্যবহার করে।
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
৩. ট্রানজিট-ভিপিসি তৈরি করুন

ট্রানজিট ভিপিসি নেটওয়ার্ক তৈরি করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute networks create transit-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional
৪. অন-প্রিমিসেস নেটওয়ার্ক তৈরি করুন

এই VPC নেটওয়ার্কটি একটি অন-প্রিমিসেস পরিবেশের প্রতিনিধিত্ব করে।
অন-প্রিমিসেস ভিপিসি নেটওয়ার্ক তৈরি করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute networks create on-premises-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional
সাবনেট তৈরি করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute networks subnets create on-premises-subnet1-us-central1 --project=$projectname --range=172.16.10.0/27 --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL --network=on-premises-vpc --region=us-central1
৫. ট্রানজিট-ভিপিসি এবং অন-প্রিমিসেস-ভিপিসি-এর জন্য HA VPN তৈরি করুন।
ট্রানজিট-ভিপিসির জন্য HA VPN GW তৈরি করুন

প্রতিটি গেটওয়ে তৈরি করার সময়, প্রতিটি গেটওয়ে ইন্টারফেসের জন্য একটি করে মোট দুটি এক্সটার্নাল IPv4 অ্যাড্রেস স্বয়ংক্রিয়ভাবে বরাদ্দ করা হয়। কনফিগারেশনের পরবর্তী ধাপগুলিতে ব্যবহারের জন্য এই আইপি অ্যাড্রেসগুলি লিখে রাখুন।
ক্লাউড শেলের ভিতরে, IPV4_IPV6 স্ট্যাক টাইপ সহ HA VPN GW তৈরি করুন।
gcloud compute vpn-gateways create transit-vpc-vpngw \
--network=transit-vpc\
--region=us-central1 \
--stack-type=IPV4_IPV6
অন-প্রিমিসেস-ভিপিসি-এর জন্য HA VPN গেটওয়ে তৈরি করুন
ক্লাউড শেলের ভিতরে, IPV4_IPV6 স্ট্যাক টাইপ সহ HA VPN GW তৈরি করুন।
gcloud compute vpn-gateways create on-premises-vpc-vpngw \
--network=on-premises-vpc\
--region=us-central1 \
--stack-type=IPV4_IPV6
HA VPN GW তৈরি যাচাই করুন
কনসোল ব্যবহার করে Hybrid Connectivity → VPN → CLOUD VPN GATEWAYS-এ যান।

transit-vpc-এর জন্য ক্লাউড রাউটার তৈরি করুন
ক্লাউড শেলের ভিতরে, us-central1-এ অবস্থিত ক্লাউড রাউটারটি তৈরি করুন।
gcloud compute routers create transit-vpc-cr-us-central1 \
--region=us-central1 \
--network=transit-vpc\
--asn=65001
অন-প্রিমিসেস-ভিপিসির জন্য ক্লাউড রাউটার তৈরি করুন
ক্লাউড শেলের ভিতরে, us-central1-এ অবস্থিত ক্লাউড রাউটারটি তৈরি করুন।
gcloud compute routers create on-premises-vpc-cr-us-central1 \
--region=us-central1 \
--network=on-premises-vpc \
--asn=65002
ট্রানজিট-ভিপিসির জন্য ভিপিএন টানেল তৈরি করুন
আপনি প্রতিটি HA VPN গেটওয়েতে দুটি VPN টানেল তৈরি করবেন।
ভিপিএন টানেল তৈরি করুন0
ক্লাউড শেলের ভিতরে, tunnel0 তৈরি করুন:
gcloud compute vpn-tunnels create transit-vpc-tunnel0 \
--peer-gcp-gateway on-premises-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router transit-vpc-cr-us-central1 \
--vpn-gateway transit-vpc-vpngw \
--interface 0
ভিপিএন টানেল তৈরি করুন১
ক্লাউড শেলের ভিতরে, টানেল১ তৈরি করুন:
gcloud compute vpn-tunnels create transit-vpc-tunnel1 \
--peer-gcp-gateway on-premises-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router transit-vpc-cr-us-central1 \
--vpn-gateway transit-vpc-vpngw \
--interface 1
অন-প্রিমিসেস-ভিপিসির জন্য ভিপিএন টানেল তৈরি করুন
আপনি প্রতিটি HA VPN গেটওয়েতে দুটি VPN টানেল তৈরি করবেন।
ভিপিএন টানেল তৈরি করুন0
ক্লাউড শেলের ভিতরে, tunnel0 তৈরি করুন:
gcloud compute vpn-tunnels create on-premises-tunnel0 \
--peer-gcp-gateway transit-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-premises-vpc-cr-us-central1 \
--vpn-gateway on-premises-vpc-vpngw \
--interface 0
ভিপিএন টানেল তৈরি করুন১
ক্লাউড শেলের ভিতরে, টানেল১ তৈরি করুন:
gcloud compute vpn-tunnels create on-premises-tunnel1 \
--peer-gcp-gateway transit-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-premises-vpc-cr-us-central1 \
--vpn-gateway on-premises-vpc-vpngw \
--interface 1
ভিপিএন টানেল তৈরি যাচাই করুন
কনসোল ব্যবহার করে Hybrid Connectivity → VPN → CLOUD VPN TUNNELS-এ যান।

BGP সেশন তৈরি করুন
এই অংশে আপনি ক্লাউড রাউটার ইন্টারফেস এবং বিজিপি পিয়ার কনফিগার করবেন।
IPv6 ট্র্যাফিক অনুমোদন করে এমন VPN টানেল তৈরি করার সময়, add-bgp-peer কমান্ডটি চালানোর সময় --enable-ipv6 উল্লেখ করুন।
ট্রানজিট-ভিপিসির জন্য একটি বিজিপি ইন্টারফেস এবং পিয়ারিং তৈরি করুন।
ক্লাউড শেলের ভিতরে, BGP ইন্টারফেস তৈরি করুন:
gcloud compute routers add-interface transit-vpc-cr-us-central1 \
--interface-name if-tunnel1-to-onpremise \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel transit-vpc-tunnel0 \
--region us-central1
ক্লাউড শেলের ভিতরে, BGP পিয়ার তৈরি করুন:
gcloud compute routers add-bgp-peer transit-vpc-cr-us-central1 \
--peer-name bgp-on-premises-tunnel0 \
--interface if-tunnel1-to-onpremise \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:1 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:2
ক্লাউড শেলের ভিতরে, BGP ইন্টারফেস তৈরি করুন:
gcloud compute routers add-interface transit-vpc-cr-us-central1 \
--interface-name if-tunnel2-to-onpremise \
--ip-address 169.254.2.1 \
--mask-length 30 \
--vpn-tunnel transit-vpc-tunnel1 \
--region us-central1
ক্লাউড শেলের ভিতরে, BGP পিয়ার তৈরি করুন:
gcloud compute routers add-bgp-peer transit-vpc-cr-us-central1 \
--peer-name bgp-on-premises-tunnel2 \
--interface if-tunnel2-to-onpremise \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:11 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:12
অন-প্রিমিসেস-ভিপিসির জন্য একটি বিজিপি ইন্টারফেস এবং পিয়ারিং তৈরি করুন।
ক্লাউড শেলের ভিতরে, BGP ইন্টারফেস তৈরি করুন:
gcloud compute routers add-interface on-premises-vpc-cr-us-central1\
--interface-name if-tunnel1-to-hub-vpc \
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-premises-tunnel0 \
--region us-central1
ক্লাউড শেলের ভিতরে, BGP পিয়ার তৈরি করুন:
gcloud compute routers add-bgp-peer on-premises-vpc-cr-us-central1 \
--peer-name bgp-transit-vpc-tunnel0 \
--interface if-tunnel1-to-hub-vpc \
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:2 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:1
ক্লাউড শেলের ভিতরে, BGP ইন্টারফেস তৈরি করুন:
gcloud compute routers add-interface on-premises-vpc-cr-us-central1\
--interface-name if-tunnel2-to-hub-vpc \
--ip-address 169.254.2.2 \
--mask-length 30 \
--vpn-tunnel on-premises-tunnel1 \
--region us-central1
ক্লাউড শেলের ভিতরে, BGP পিয়ার তৈরি করুন:
gcloud compute routers add-bgp-peer on-premises-vpc-cr-us-central1\
--peer-name bgp-transit-vpc-tunnel1\
--interface if-tunnel2-to-hub-vpc \
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:12 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:11
VPN টানেলের বিবরণ দেখতে Hybrid Connectivity → VPN- এ যান।

যাচাই করুন যে ট্রানজিট-ভিপিসি এইচএ ভিপিএন-এর মাধ্যমে আইপিভি৪ এবং আইপিভি৬ রুট শিখছে।
যেহেতু HA VPN টানেল এবং BGP সেশনগুলো স্থাপিত হয়েছে, তাই on-premises-vpc-এর রুটগুলো transit-vpc থেকে জানা যায়। কনসোল ব্যবহার করে, VPC network → VPC networks → transit-vpc → ROUTES-এ যান।
নীচে চিত্রিত শেখা IPv4 এবং IPv6 ডায়নামিক রুটগুলি পর্যবেক্ষণ করুন:

যাচাই করুন যে অন-প্রিমিসেস-ভিপিসি এইচএ ভিপিএন-এর মাধ্যমে রুট শিখছে না।
Transit-vpc-এর কোনো সাবনেট নেই, তাই ক্লাউড রাউটারটি on-premises-vpc-তে কোনো সাবনেট অ্যাডভার্টাইজ করবে না। কনসোল ব্যবহার করে VPC network → VPC networks → on-premises-vpc → ROUTES-এ যান।
৬. IPv6 private.googleapis.com VIP-এর বিজ্ঞাপন দিন।
অন-প্রেমিস থেকে প্রাইভেট গুগল অ্যাক্সেস করতে হলে আপনাকে ট্রানজিট-ভিপিসি থেকে একটি কাস্টম রুট অ্যাডভার্টাইজমেন্ট তৈরি করতে হবে। লোকাল ডিএনএস আপডেট করার পর 2600:2d00:0002:2000:: এই IPv6 অ্যাড্রেসটি অন-প্রেমিস এনভায়রনমেন্টে অ্যাডভার্টাইজ করা হবে এবং ওয়ার্কলোডগুলো ক্লাউড স্টোরেজ, ক্লাউড বিগকোয়েরি, ও ক্লাউড বিগটেবলের মতো গুগল এপিআই অ্যাক্সেস করার জন্য এটি ব্যবহার করবে।
এই কোডল্যাবে, আপনি বেশিরভাগ গুগল এপিআই এবং পরিষেবাগুলিতে এপিআই অ্যাক্সেস সক্ষম করবেন, সেগুলি ভিপিসি সার্ভিস কন্ট্রোলস দ্বারা সমর্থিত হোক বা না হোক।
কনসোল থেকে Hybrid Connectivity → Cloud Routers → transit-vpc-cr-us-central1-এ যান, তারপর EDIT নির্বাচন করুন।

'Advertised routes' বিভাগে, 'Create custom routes' অপশনটি নির্বাচন করুন, নিচের উদাহরণ অনুযায়ী ফিল্ডগুলো আপডেট করুন, 'DONE' নির্বাচন করুন এবং তারপর 'SAVE'-এ ক্লিক করুন।

অন-প্রিমিসেস-ভিপিসি আইপিভি৬ রুট শিখছে কিনা তা যাচাই করুন।
এখন যেহেতু ট্রানজিট-ভিপিসি থেকে IPv6 private.googleapis.com VIP-টি অ্যাডভার্টাইজ করা হয়েছে, অন-প্রিমিসেস-ভিপিসিটি VIP-টির জন্য IPv6 ডাইনামিক রুট শিখে ফেলবে। কনসোল ব্যবহার করে, VPC network → VPC networks → on-premises-vpc → ROUTES-এ যান।
ট্রানজিট-ভিপিসি থেকে বিজ্ঞাপিত IPv6 রুটগুলি পর্যবেক্ষণ করুন:

৭. প্রাইভেট গুগল অ্যাক্সেস ব্যবহার করে গুগল এপিআই-এর সাথে যোগাযোগ স্থাপন করুন।
পরবর্তী অংশে, আমরা IPv6 private.googleapis.com VIP ব্যবহার করে ক্লাউড স্টোরেজের সংযোগ অ্যাক্সেস এবং যাচাই করব। এটি করার জন্য, আমাদের অন-প্রিমিসেস-ভিপিসি-তে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করতে হবে।
- SSH অ্যাক্সেসের জন্য আইডেন্টিটি অ্যাওয়্যার প্রক্সি (IAP) অ্যাক্সেস অনুমোদনের জন্য একটি ইনগ্রেস ফায়ারওয়াল নিয়ম তৈরি করুন।
- tcpdump এবং dnsutils ডাউনলোড করার জন্য একটি ক্লাউড রাউটার এবং ক্লাউড NAT তৈরি করুন।
- googleapis.com-এর জন্য একটি ব্যক্তিগত ক্লাউড ডিএনএস জোন তৈরি করুন।
- একটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন।
IAP ফায়ারওয়াল নিয়ম তৈরি করুন
আপনার VM ইনস্ট্যান্সগুলিতে IAP-কে সংযোগ করার অনুমতি দিতে, এমন একটি ফায়ারওয়াল নিয়ম তৈরি করুন যা:
- এটি সেই সমস্ত VM ইনস্ট্যান্সের ক্ষেত্রে প্রযোজ্য, যেগুলোকে আপনি IAP ব্যবহার করে অ্যাক্সেসযোগ্য করতে চান।
- 35.235.240.0/20 আইপি রেঞ্জ থেকে ইনগ্রেস ট্র্যাফিকের অনুমতি দেয়। এই রেঞ্জে সেই সমস্ত আইপি অ্যাড্রেস রয়েছে যা IAP টিসিপি ফরওয়ার্ডিংয়ের জন্য ব্যবহার করে।
ক্লাউড শেলের ভিতরে IAP ফায়ারওয়াল নিয়মটি তৈরি করুন।
gcloud compute firewall-rules create ssh-iap-on-premises-vpc \
--network on-premises-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
ক্লাউড রাউটার এবং NAT কনফিগারেশন
কোডল্যাবে সফটওয়্যার প্যাকেজ ইনস্টলেশনের জন্য ক্লাউড ন্যাট (Cloud NAT) ব্যবহার করা হয়, কারণ ভিএম ইনস্ট্যান্সটির কোনো এক্সটার্নাল আইপি অ্যাড্রেস নেই।
ক্লাউড শেলের ভিতরে ক্লাউড রাউটারটি তৈরি করুন।
gcloud compute routers create on-premises-cr-us-central1-nat --network on-premises-vpc --region us-central1
ক্লাউড শেলের ভিতরে NAT গেটওয়ে তৈরি করুন।
gcloud compute routers nats create on-premises-nat-us-central1 --router=on-premises-cr-us-central1-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
একটি টেস্ট ইনস্ট্যান্স তৈরি করুন, অন-প্রিমিসেস-টেস্টবক্স
একটি টেস্ট ইনস্ট্যান্স তৈরি করুন যা IPv6 private.googleapis.com VIP-এর সাথে সংযোগ পরীক্ষা ও যাচাই করতে ব্যবহৃত হবে।
ক্লাউড শেলের ভিতরে ইনস্ট্যান্সটি তৈরি করুন।
gcloud compute instances create on-premises-testbox \
--project=$projectname \
--machine-type=e2-micro \
--stack-type=IPV4_IPV6 \
--image-family debian-10 \
--no-address \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=on-premises-subnet1-us-central1 \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump -y
sudo apt-get install dnsutils -y"
ক্লাউড ডিএনএস প্রাইভেট জোন তৈরি করুন
আমরা *.googleapis.com-এর জন্য একটি প্রাইভেট জোন ও রেকর্ড তৈরি করতে ক্লাউড ডিএনএস ব্যবহার করব, এর জন্য প্রয়োজনীয় ধাপগুলো নিচে দেওয়া হলো।
ক্লাউড শেলের ভিতরে, v6-googleapis.com নামে একটি প্রাইভেট ডিএনএস জোন তৈরি করুন।
gcloud dns --project=$projectname managed-zones create v6-googleapis --description="" --dns-name="googleapis.com." --visibility="private" --networks="on-premises-vpc"
ক্লাউড শেলের ভিতরে, private.googleapis.com-এর জন্য 2600:2d00:0002:2000:: IPv6 অ্যাড্রেসটিকে নির্দেশ করে একটি AAAA রেকর্ড তৈরি করুন।
gcloud dns --project=$projectname record-sets create private.googleapis.com. --zone="v6-googleapis" --type="AAAA" --ttl="300" --rrdatas="2600:2d00:0002:2000::"
ক্লাউড শেলের ভিতরে, private.googleapis.com-কে নির্দেশ করার জন্য *.googleapis.com-এর জন্য একটি CNAME তৈরি করুন।
gcloud dns --project=$projectname record-sets create *.googleapis.com. --zone="v6-googleapis" --type="CNAME" --ttl="300" --rrdatas="private.googleapis.com."
ক্লাউড ডিএনএস প্রাইভেট জোন যাচাই করুন
নেটওয়ার্ক পরিষেবা → ক্লাউড ডিএনএস → v6-googleapis-এ যান।

ক্লাউড স্টোরেজ বাকেট তৈরি করুন
ক্লাউড শেলের ভিতরে, একটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন এবং bucket_name-এর জায়গায় আপনার পছন্দের একটি বিশ্বব্যাপী অনন্য নাম দিন; নামটি আগে থেকেই ব্যবহৃত হলে অন্য কোনো নাম দিয়ে চেষ্টা করুন।
gsutil mb -l us-central1 -b on gs://bucket_name
৮. IPv6 ঠিকানা ব্যবহার করে গুগল এপিআই অ্যাক্সেস ও যাচাই করুন
পরবর্তী অংশে, আপনি দুটি ক্লাউড শেল টার্মিনালে SSH করবেন। প্রথম টার্মিনালটি tcpdump ব্যবহার করে IPv6 লুকআপ যাচাই করার জন্য ব্যবহৃত হয়, আর দ্বিতীয়টি ক্লাউড স্টোরেজ বাকেটে প্রবেশের জন্য ব্যবহৃত হয়।
ক্লাউড শেলের ভিতরে, on-premises-testbox টেস্ট ইনস্ট্যান্সে ssh করুন।
gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"
ক্লাউড শেল টার্মিনাল একের ভিতরে, tcpdump চালু করুন এবং DNS ট্র্যাফিকের জন্য পোর্ট ৫৩ নিরীক্ষণ করুন।
sudo tcpdump -nn -i ens4 port 53
নিচে উদাহরণ দেওয়া হলো।
user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
"+" চিহ্নটি নির্বাচন করে একটি নতুন ক্লাউড শেল টার্মিনাল খুলুন। নতুন ট্যাবটি খুলে গেলে, প্রজেক্ট নেম ভেরিয়েবলটি আপডেট করুন।
ক্লাউড শেলের ভিতরে, প্রোজেক্টের নামের ভেরিয়েবলটি আপডেট করুন।
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
ক্লাউড শেল দুই-এর ভিতরে, অন-প্রিমিসেস-টেস্টবক্স টেস্ট ইনস্ট্যান্সে ssh করুন।
gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"
DNS লুকআপ যাচাই করতে একটি dig চালান।
ক্লাউড শেল টার্মিনাল দুই-এর ভিতরে storage.googleapis.com-এর বিরুদ্ধে dig কমান্ডটি চালান।
dig AAAA storage.googleapis.com
ANSWER SECTION পরিদর্শন করুন, private DNS zone storage.googleapis.com CNAME to private.googleapis.com AAAA 2600:2d00:2:2000:: , নিচে উদাহরণ দেওয়া হলো:
user@on-premises-testbox:~$ dig AAAA storage.googleapis.com
; <<>> DiG 9.11.5-P4-5.1+deb10u8-Debian <<>> AAAA storage.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2782
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;storage.googleapis.com. IN AAAA
;; ANSWER SECTION:
storage.googleapis.com. 300 IN CNAME private.googleapis.com.
private.googleapis.com. 300 IN AAAA 2600:2d00:2:2000::
;; Query time: 9 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Mon Feb 20 01:56:33 UTC 2023
;; MSG SIZE rcvd: 101
ক্লাউড শেল টার্মিনাল একের ভিতরে, tcpdump পরীক্ষা করুন যা AAAA 2600:2d00:2:2000:: -এ DNS রেজোলিউশনকে আরও নিশ্চিত করে।
user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
01:56:33.473208 IP 172.16.10.3.41476 > 169.254.169.254.53: 2782+ [1au] AAAA? storage.googleapis.com. (63)
01:56:33.482580 IP 169.254.169.254.53 > 172.16.10.3.41476: 2782 2/0/1 CNAME private.googleapis.com., AAAA 2600:2d00:2:2000:: (101)
dig এবং tcpdump-এর উপর ভিত্তি করে আমরা এই সিদ্ধান্তে আসতে পারি যে, storage.googleapis.com-এর DNS রেজোলিউশন 2600:2d00:2:2000:: -এর মাধ্যমে সম্পন্ন হয়, যা private.googleapis.com-এর IPv6 অ্যাড্রেস।
ক্লাউড স্টোরেজে অ্যাক্সেস যাচাই করতে gsutil list চালান।
ক্লাউড শেল টার্মিনাল দুই-এর ভিতরে, gsutil ব্যবহার করে পূর্বে তৈরি করা স্টোরেজ বাকেটটিতে একটি লিস্ট কমান্ড চালান। bucket_name পরিবর্তন করে আপনার পূর্বে তৈরি করা বাকেটটির নাম দিন।
gsutil -d ls gs://bucket_name
ক্লাউড স্টোরেজ বাকেট `codelab-ipv6` ব্যবহার করে একটি উদাহরণ দেওয়া হলো; ডিবাগ আউটপুটটি পরীক্ষা করুন যেখানে `storage.googleapis.com` এবং `HTTP/1.1 200 OK` দেখা যাচ্ছে।
user@on-premises-testbox:~$ gsutil -d ls gs://codelab-ipv6
***************************** WARNING *****************************
*** You are running gsutil with debug output enabled.
*** Be aware that debug output includes authentication credentials.
*** Make sure to remove the value of the Authorization header for
*** each HTTP request printed to the console prior to posting to
*** a public medium such as a forum post or Stack Overflow.
***************************** WARNING *****************************
gsutil version: 5.19
checksum: 49a18b9e15560adbc187bab09c51b5fd (OK)
boto version: 2.49.0
python version: 3.9.16 (main, Jan 10 2023, 02:29:25) [Clang 12.0.1 ]
OS: Linux 4.19.0-23-cloud-amd64
multiprocessing available: True
using cloud sdk: True
pass cloud sdk credentials to gsutil: True
config path(s): /etc/boto.cfg
gsutil path: /usr/lib/google-cloud-sdk/bin/gsutil
compiled crcmod: True
installed via package manager: False
editable install: False
shim enabled: False
Command being run: /usr/lib/google-cloud-sdk/platform/gsutil/gsutil -o GSUtil:default_project_id=myprojectid -o GoogleCompute:service_account=default -d ls gs://codelab-ipv6
config_file_list: ['/etc/boto.cfg']
config: [('working_dir', '/mnt/pyami'), ('debug', '0'), ('https_validate_certificates', 'true'), ('working_dir', '/mnt/pyami'), ('debug', '0'), ('default_project_id', 'myproject'), ('default_api_version', '2')]
DEBUG 0220 02:01:14.713012 multiprocess_file_storage.py] Read credential file
INFO 0220 02:01:14.714742 base_api.py] Calling method storage.objects.list with StorageObjectsListRequest: <StorageObjectsListRequest
bucket: 'codelab-ipv6'
delimiter: '/'
maxResults: 1000
projection: ProjectionValueValuesEnum(noAcl, 1)
versions: False>
INFO 0220 02:01:14.715939 base_api.py] Making http GET to https://storage.googleapis.com/storage/v1/b/codelab-ipv6/o?alt=json&fields=prefixes%2Citems%2Fname%2CnextPageToken&delimiter=%2F&maxResults=1000&projection=noAcl&versions=False
INFO 0220 02:01:14.716369 base_api.py] Headers: {'accept': 'application/json',
'accept-encoding': 'gzip, deflate',
'content-length': '0',
'user-agent': 'apitools Python/3.9.16 gsutil/5.19 (linux) analytics/disabled '
'interactive/True command/ls google-cloud-sdk/416.0.0'}
INFO 0220 02:01:14.716875 base_api.py] Body: (none)
connect: (storage.googleapis.com, 443)
send: b'GET /storage/v1/b/codelab-ipv6/o?alt=json&fields=prefixes%2Citems%2Fname%2CnextPageToken&delimiter=%2F&maxResults=1000&projection=noAcl&versions=False HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nuser-agent: apitools Python/3.9.16 gsutil/5.19 (linux) analytics/disabled
<SNIP>
reply: 'HTTP/1.1 200 OK\r\n'
header: X-GUploader-UploadID: ADPycdvunHlbN1WQBxDr_LefzLaH_HY1bBH22X7IxX9sF1G2Yo_7-nhYwjxUf6N7AF9Zg_JDwPxYtuNJiFutfd6qauEfohYPs7mE
header: Content-Type: application/json; charset=UTF-8
header: Date: Mon, 20 Feb 2023 02:01:14 GMT
header: Vary: Origin
header: Vary: X-Origin
header: Cache-Control: private, max-age=0, must-revalidate, no-transform
header: Expires: Mon, 20 Feb 2023 02:01:14 GMT
header: Content-Length: 3
header: Server: UploadServer
INFO 0220 02:01:14.803286 base_api.py] Response of type Objects: <Objects
items: []
prefixes: []>
user@on-premises-testbox:~$
ক্লাউড শেল টার্মিনাল একের ভিতরে, tcpdump পরীক্ষা করুন যা AAAA 2600:2d00:2:2000:: -এ DNS রেজোলিউশনকে আরও নিশ্চিত করে।
eepakmichael@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
02:01:14.725000 IP 172.16.10.3.48792 > 169.254.169.254.53: 7056+ A? storage.googleapis.com. (40)
02:01:14.725106 IP 172.16.10.3.48792 > 169.254.169.254.53: 50841+ AAAA? storage.googleapis.com. (40)
02:01:14.732516 IP 169.254.169.254.53 > 172.16.10.3.48792: 50841 2/0/0 CNAME private.googleapis.com., AAAA 2600:2d00:2:2000:: (90)
অন-প্রিমিসেস-টেস্টবক্স ইনস্ট্যান্স অপারেটিং সিস্টেম থেকে প্রস্থান করে ক্লাউড শেল প্রম্পটে ফিরে আসুন।
৯. পরিচ্ছন্নতা
ক্লাউড শেলের ভিতরে নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute vpn-tunnels delete transit-vpc-tunnel0 transit-vpc-tunnel1 on-premises-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-tunnels delete on-premises-tunnel0 on-premises-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete on-premises-vpc-vpngw transit-vpc-vpngw --region=us-central1 --quiet
gcloud compute routers delete transit-vpc-cr-us-central1 on-premises-vpc-cr-us-central1 on-premises-cr-us-central1-nat --region=us-central1 --quiet
gcloud compute instances delete on-premises-testbox --zone=us-central1-a --quiet
gcloud compute networks subnets delete on-premises-subnet1-us-central1 --region=us-central1 --quiet
gcloud compute firewall-rules delete ssh-iap-on-premises-vpc --quiet
gcloud compute networks delete on-premises-vpc --quiet
gcloud compute networks delete transit-vpc --quiet
gsutil rb gs://bucket_name
gcloud dns record-sets delete *.googleapis.com. \
--type=CNAME \
--zone=v6-googleapis
gcloud dns record-sets delete private.googleapis.com. \
--type=AAAA \
--zone=v6-googleapis
gcloud dns managed-zones delete v6-googleapis
১০. অভিনন্দন
অভিনন্দন, আপনি সফলভাবে IPv6 সহ একটি ব্যক্তিগত গুগল অ্যাক্সেস কনফিগার এবং যাচাই করেছেন।
আপনি ট্রানজিট ও অন-প্রেমিস পরিকাঠামো তৈরি করেছেন এবং IPv6 ব্যবহার করে গুগল এপিআই ডোমেইনগুলোর রেজোলিউশন সক্ষম করার জন্য একটি প্রাইভেট ডিএনএস জোন তৈরি করেছেন। আপনি ডিগ (dig) এবং ক্লাউড স্টোরেজ ব্যবহার করে IPv6 অ্যাক্সেস পরীক্ষা ও যাচাই করার পদ্ধতি শিখেছেন।
কসমোপাপের মতে কোডল্যাবগুলো অসাধারণ!!

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