1. खास जानकारी
डाइनैमिक पोर्ट असाइनमेंट (डीपीए), Cloud NAT की एक नई सुविधा है. डीपीए चालू होने पर, Cloud NAT इंस्टेंस के लिए पोर्ट असाइनमेंट को उनकी ज़रूरत के हिसाब से डाइनैमिक तरीके से बढ़ाता/घटाता है. डीपीए को कम से कम और ज़्यादा से ज़्यादा पोर्ट की सीमाओं के साथ कॉन्फ़िगर किया जाता है, ताकि यह कभी भी पोर्ट को कम से कम सीमा से नीचे न ले जाए या ज़्यादा से ज़्यादा सीमा से ऊपर न ले जाए. इससे NAT गेटवे के पीछे मौजूद कुछ इंस्टेंस, कनेक्शन की संख्या को डाइनैमिक तरीके से बढ़ा सकते हैं. इसके लिए, Cloud NAT के पीछे मौजूद सभी इंस्टेंस को ज़्यादा पोर्ट असाइन करने की ज़रूरत नहीं होती.
डीपीए के बिना, Cloud NAT के पीछे मौजूद सभी इंस्टेंस को इस्तेमाल के बावजूद, एक ही संख्या में पोर्ट असाइन किए जाते हैं. यह संख्या, minPortsPerVm पैरामीटर से तय होती है.
ज़्यादा जानकारी के लिए, कृपया NAT DPA के बारे में दस्तावेज़ सेक्शन देखें.
आपको क्या सीखने को मिलेगा
- डेटा प्रोसेसिंग समझौते (डीपीए) के लिए, Cloud NAT गेटवे को कैसे सेट अप करें.
- डेटा प्रोसेसिंग समझौते (डीपीए) के बिना पोर्ट किए गए नंबरों की जांच कैसे करें.
- किसी NAT गेटवे के लिए, डीपीए को चालू और कॉन्फ़िगर करने का तरीका.
- पैरलल इग्रेस कनेक्शन चलाकर, डीपीए के असर को कैसे देखा जा सकता है.
- डीपीए की सुविधा चालू होने पर, NAT गेटवे में NAT नियम कैसे जोड़ें.
- कई डेस्टिनेशन पर इग्रेस कनेक्शन चलाकर, नियमों के साथ DPA के व्यवहार को कैसे देखा जा सकता है.
आपको किन चीज़ों की ज़रूरत होगी
- Google Compute Engine की बुनियादी जानकारी
- नेटवर्किंग और टीसीपी/आईपी की बुनियादी जानकारी
- Unix/Linux कमांड लाइन की बुनियादी जानकारी
- Google Cloud में नेटवर्किंग के बारे में जानकारी होना ज़रूरी है. जैसे, Google Cloud में नेटवर्किंग लैब.
- 'ऐल्फ़ा ऐक्सेस' की सुविधा वाला Google Cloud प्रोजेक्ट.
- Cloud NAT के बारे में बुनियादी जानकारी.
2. Google Cloud Console और Cloud Shell का इस्तेमाल करना
GCP के साथ इंटरैक्ट करने के लिए, हम इस लैब में Google Cloud Console और Cloud Shell, दोनों का इस्तेमाल करेंगे.
Google Cloud Console
Cloud Console को https://console.cloud.google.com पर जाकर ऐक्सेस किया जा सकता है.

अपने हिसाब से एनवायरमेंट सेट अप करना
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.



- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक कैरेक्टर स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे किसी भी समय अपडेट किया जा सकता है.
- प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होना चाहिए. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना होगा. इसे आम तौर पर
PROJECT_IDके तौर पर पहचाना जाता है. इसलिए, अगर आपको यह पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट करें. इसके अलावा, अपने हिसाब से कोई आईडी बनाकर देखें कि वह उपलब्ध है या नहीं. इसके बाद, प्रोजेक्ट बनाने के बाद इसे "फ़्रीज़" कर दिया जाता है. - तीसरी वैल्यू, प्रोजेक्ट नंबर होती है. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
- इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. संसाधन बंद करने के लिए, कोडलैब के आखिर में दिए गए "बंद करें" निर्देशों का पालन करें, ताकि इस ट्यूटोरियल के बाद आपको बिलिंग न करनी पड़े. Google Cloud के नए उपयोगकर्ताओं को, मुफ़्त में आज़माने के लिए 300 डॉलर का क्रेडिट मिलता है.
Cloud Shell शुरू करें
Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.
GCP Console में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर मौजूद Cloud Shell आइकॉन पर क्लिक करें:

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, यह Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस लैब में मौजूद सभी टास्क को सिर्फ़ ब्राउज़र की मदद से पूरा किया जा सकता है.
3. लैब सेटअप करना
इस लैब के लिए, आपको एक प्रोजेक्ट का इस्तेमाल करना होगा. साथ ही, हर वीपीसी में एक सबनेट के साथ दो वीपीसी बनाने होंगे. आपको बाहरी आईपी पते रिज़र्व करने होंगे. इसके बाद, Cloud NAT गेटवे (Cloud Router के साथ), दो प्रोड्यूसर इंस्टेंस, और दो कंज्यूमर इंस्टेंस बनाने और कॉन्फ़िगर करने होंगे. Cloud NAT के डिफ़ॉल्ट व्यवहार की पुष्टि करने के बाद, डाइनैमिक पोर्ट असाइनमेंट की सुविधा चालू करें और इसके व्यवहार की पुष्टि करें. आखिर में, आपको NAT के नियमों को कॉन्फ़िगर करना होगा. साथ ही, DPA और NAT के नियमों के बीच इंटरैक्शन को देखना होगा.
नेटवर्किंग आर्किटेक्चर की खास जानकारी:

4. एक्सटर्नल आईपी पते रिज़र्व करना
आइए, इस लैब में इस्तेमाल किए जाने वाले सभी बाहरी आईपी पतों को रिज़र्व करें. इससे आपको उपभोक्ता और प्रोड्यूसर, दोनों वीपीसी में काम के सभी NAT और फ़ायरवॉल के नियम लिखने में मदद मिलेगी.
Cloud Shell से:
gcloud compute addresses create nat-address-1 nat-address-2 \ producer-address-1 producer-address-2 --region us-east4
आउटपुट:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].
उन आईपी पतों को भरें जिन्हें एनवायरमेंट वैरिएबल के तौर पर रिज़र्व किया गया था.
export natip1=`gcloud compute addresses list --filter name:nat-address-1 --format="get(address)"` export natip2=`gcloud compute addresses list --filter name:nat-address-2 --format="get(address)"` export producerip1=`gcloud compute addresses list --filter name:producer-address-1 --format="get(address)"` export producerip2=`gcloud compute addresses list --filter name:producer-address-2 --format="get(address)"`
कोई आउटपुट नहीं चाहिए, लेकिन यह पुष्टि करने के लिए कि पते सही तरीके से भरे गए थे. आइए, सभी एनवायरमेंट वैरिएबल की वैल्यू आउटपुट करें.
env | egrep '^(nat|producer)ip[1-3]'
आउटपुट:
producerip1=<Actual Producer IP 1> producerip2=<Actual Producer IP 2> natip1=<NAT IP 1> natip2=<NAT IP 2>
5. प्रोड्यूसर वीपीसी और इंस्टेंस सेट अप करना.
अब हम प्रोड्यूसर के संसाधनों के लिए संसाधन बनाएंगे. प्रोड्यूसर वीपीसी में चल रहे इंस्टेंस, इंटरनेट से कनेक्ट होने वाली सेवा को दो सार्वजनिक आईपी "producer-address-1" और "producer-address-2" का इस्तेमाल करके उपलब्ध कराएंगे.
सबसे पहले, वीपीसी बनाते हैं. Cloud Shell से:
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 में सबनेट बनाते हैं. Cloud Shell से:
gcloud compute networks subnets create prod-net-e4 \ --network producer-vpc --range 10.0.0.0/24 --region us-east4
आउटपुट:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/prod-net-e4]. NAME REGION NETWORK RANGE STACK_TYPE IPV6_ACCESS_TYPE IPV6_CIDR_RANGE EXTERNAL_IPV6_CIDR_RANGE prod-net-e4 us-east4 producer-vpc 10.0.0.0/24 IPV4_ONLY
इसके बाद, हम वीपीसी फ़ायरवॉल के नियम बनाएंगे, ताकि NAT आईपी पते, पोर्ट 8080 पर मौजूद प्रोड्यूसर इंस्टेंस तक पहुंच सकें.
पहले नियम के लिए, Cloud Shell से यह तरीका अपनाएं:
gcloud compute firewall-rules create producer-allow-80 \ --network producer-vpc --allow tcp:80 \ --source-ranges $natip1,$natip2
आउटपुट:
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/producer-allow-80]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED producer-allow-80 producer-vpc INGRESS 1000 tcp:80 False
अगला चरण, दो प्रोड्यूसर इंस्टेंस बनाना है.
प्रोड्यूसर इंस्टेंस, nginx प्रॉक्सी का आसान डिप्लॉयमेंट चलाएंगे.
सभी ज़रूरी सॉफ़्टवेयर के साथ इंस्टेंस को तुरंत उपलब्ध कराने के लिए, हम एक स्टार्टअप स्क्रिप्ट के साथ इंस्टेंस बनाएंगे. यह स्क्रिप्ट, Debian APT पैकेज मैनेजर का इस्तेमाल करके nginx को इंस्टॉल करती है.
NAT नियम लिखने के लिए, हम हर इंस्टेंस को एक अलग रिज़र्व किया गया आईपी पता देंगे.
पहला इंस्टेंस बनाएं. Cloud Shell से:
gcloud compute instances create producer-instance-1 \ --zone=us-east4-a --machine-type=e2-medium \ --network-interface=address=producer-address-1,network-tier=PREMIUM,subnet=prod-net-e4 \ --metadata startup-script="#! /bin/bash sudo apt update sudo apt install -y nginx mkdir /var/www/html/nginx/ cat <<EOF > /var/www/html/nginx/index.html <html><body><h1>This is producer instance 1</h1> </body></html> EOF"
आउटपुट:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/zones/us-east4-a/instances/producer-instance-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS producer-instance-1 us-east4-a e2-medium 10.0.0.2 <Producer IP1> RUNNING
इसके बाद, दूसरा इंस्टेंस बनाएं. Cloud Shell से:
gcloud compute instances create producer-instance-2 \ --zone=us-east4-a --machine-type=e2-medium \ --network-interface=address=producer-address-2,network-tier=PREMIUM,subnet=prod-net-e4 \ --metadata startup-script="#! /bin/bash sudo apt update sudo apt install -y nginx mkdir /var/www/html/nginx/ cat <<EOF > /var/www/html/nginx/index.html <html><body><h1>This is producer instance 2</h1> </body></html> EOF"
आउटपुट:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/zones/us-east4-a/instances/producer-instance-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS producer-instance-2 us-east4-a e2-medium 10.0.0.3 <Producer IP2> RUNNING
6. उपयोगकर्ता वीपीसी, Cloud NAT, और इंस्टेंस सेट अप करना
आपने प्रोड्यूसर सेवा बना ली है. अब आपको कंज्यूमर वीपीसी और उसका Cloud NAT गेटवे बनाना होगा.
वीपीसी और सबनेट बनाने के बाद, हम एक सामान्य इनग्रेस फ़ायरवॉल नियम जोड़ेंगे, ताकि टीसीपी सोर्स आईपी रेंज के लिए IAP की अनुमति दी जा सके. इससे हम gcloud का इस्तेमाल करके, सीधे तौर पर उपभोक्ता इंस्टेंस से SSH कर पाएंगे.
इसके बाद, हम मैन्युअल तरीके से असाइन किए गए मोड में एक सामान्य Cloud NAT गेटवे और उससे जुड़ा रिज़र्व किया गया पता "nat-address-1" बनाएंगे. इस कोडलैब के आने वाले हिस्सों में, हम गेटवे के कॉन्फ़िगरेशन को अपडेट करेंगे, ताकि डाइनैमिक पोर्ट असाइन करने की सुविधा चालू की जा सके. इसके बाद, हम कस्टम नियम जोड़ेंगे.
सबसे पहले, वीपीसी बनाते हैं. Cloud Shell से:
gcloud compute networks create consumer-vpc --subnet-mode custom
आउटपुट:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/consumer-vpc]. NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 consumer-vpc CUSTOM REGIONAL Instances on this network will not be reachable until firewall rules are created. As an example, you can allow all internal traffic between instances as well as SSH, RDP, and ICMP by running: $ gcloud compute firewall-rules create <FIREWALL_NAME> --network consumer-vpc --allow tcp,udp,icmp --source-ranges <IP_RANGE> $ gcloud compute firewall-rules create <FIREWALL_NAME> --network consumer-vpc --allow tcp:22,tcp:3389,icmp
इसके बाद, us-east4 में एक सबनेट बनाते हैं. Cloud Shell से:
gcloud compute networks subnets create cons-net-e4 \ --network consumer-vpc --range 10.0.0.0/24 --region us-east4
आउटपुट:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/cons-net-e4]. NAME REGION NETWORK RANGE STACK_TYPE IPV6_ACCESS_TYPE IPV6_CIDR_RANGE EXTERNAL_IPV6_CIDR_RANGE cons-net-e4 us-east4 consumer-vpc 10.0.0.0/24 IPV4_ONLY
इसके बाद, आइए हम पोर्ट 22 पर उपभोक्ता इंस्टेंस तक पहुंचने के लिए, IAP रेंज के पतों को अनुमति देने वाले वीपीसी फ़ायरवॉल नियम बनाते हैं.
पहले फ़ायरवॉल नियम के लिए, Cloud Shell में यह निर्देश चलाएं:
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 गेटवे बनाने से पहले, हमें Cloud Router इंस्टेंस बनाना होगा. हम एक निजी एएसएन नंबर का इस्तेमाल करते हैं, लेकिन इस लैब की गतिविधियों के लिए यह ज़रूरी नहीं है. Cloud Shell से:
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 गेटवे इंस्टेंस बनाएं. Cloud Shell से:
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.
ध्यान दें कि डिफ़ॉल्ट रूप से, Cloud NAT गेटवे को minPortsPerVm को 64 पर सेट करके बनाया जाता है
उपयोगकर्ता के टेस्ट इंस्टेंस बनाएं. हम यहां रिज़र्व किए गए प्रोड्यूसर आईपी पते डालते हैं, ताकि बाद में इंस्टेंस में उनका इस्तेमाल किया जा सके. Cloud Shell से:
gcloud compute instances create consumer-instance-1 --zone=us-east4-a \ --machine-type=e2-medium --network-interface=subnet=cons-net-e4,no-address \ --metadata=producer-service-ip1=$producerip1,producer-service-ip2=$producerip2 gcloud compute instances create consumer-instance-2 --zone=us-east4-a \ --machine-type=e2-medium --network-interface=subnet=cons-net-e4,no-address \ --metadata=producer-service-ip1=$producerip1,producer-service-ip2=$producerip2
आउटपुट:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/zones/us-east4-a/instances/consumer-instance-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS consumer-instance-1 us-east4-a e2-medium 10.0.0.2 RUNNING Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/zones/us-east4-a/instances/consumer-instance-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS consumer-instance-2 us-east4-a e2-medium 10.0.0.3 RUNNING
7. Cloud NAT के डिफ़ॉल्ट व्यवहार की पुष्टि करना
इस समय, उपभोक्ता इंस्टेंस, Cloud NAT के डिफ़ॉल्ट व्यवहार का इस्तेमाल करते हैं. यह सभी बाहरी पतों से कम्यूनिकेट करने के लिए, रिज़र्व किए गए एक ही आईपी "nat-address-1" का इस्तेमाल करता है. Cloud NAT में भी, अभी तक DPA चालू नहीं किया गया है.
आइए, इस कमांड को चलाकर पुष्टि करें कि Cloud NAT ने हमारे उपभोक्ता इंस्टेंस को कौनसे पोर्ट असाइन किए हैं
gcloud compute routers get-nat-mapping-info consumer-cr --region=us-east4
आउटपुट का सैंपल
--- instanceName: consumer-instance-1 interfaceNatMappings: - natIpPortRanges: - <NAT Consumer IP1>:1024-1055 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.2 - natIpPortRanges: - <NAT Consumer IP1>:32768-32799 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.2 --- instanceName: consumer-instance-2 interfaceNatMappings: - natIpPortRanges: - <NAT Address IP1>:1056-1087 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.3 - natIpPortRanges: - <NAT Address IP1>:32800-32831 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.3
ऊपर दिए गए आउटपुट से पता चलता है कि Cloud NAT ने हर इंस्टेंस के लिए, एक ही बाहरी आईपी nat-address-1 से 64 पोर्ट असाइन किए हैं
डीपीए चालू करने से पहले, आइए पुष्टि करें कि हम एक साथ कितने कनेक्शन खोल सकते हैं.
पहले उपभोक्ता इंस्टेंस में SSH करें. Cloud Shell से:
gcloud compute ssh consumer-instance-1 --zone=us-east4-a
अब आपको इंस्टेंस शेल में होना चाहिए.
आउटपुट का सैंपल (कम शब्दों में समझाने के लिए, पूरे आउटपुट को छोटा किया गया है)
External IP address was not found; defaulting to using IAP tunneling. ... ... <username>@consumer-instance-1:~$
उपयोगकर्ता के इंस्टेंस से, आइए सबसे पहले दोनों प्रोड्यूसर आईपी पते फ़ेच करें और उन्हें एनवायरमेंट वैरिएबल के तौर पर पॉप्युलेट करें
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
इसके बाद, दोनों प्रोड्यूसर इंस्टेंस से कनेक्ट करने की कोशिश करें, ताकि यह पक्का किया जा सके कि हम उनसे कनेक्ट कर सकते हैं.
<username>@consumer-instance-1:~$ curl http://$producerip1/nginx/ <html><body><h1>This is producer instance 1</h1> </body></html> <username>@consumer-instance-1:~$ curl http://$producerip2/nginx/ <html><body><h1>This is producer instance 2</h1> </body></html>
अब हम लूप के ज़रिए कर्ल चलाकर, प्रोड्यूसर के किसी एक इंस्टेंस से कई पैरलल कनेक्शन बनाने की कोशिश करेंगे. याद रखें कि Cloud NAT, बंद किए गए सॉकेट को दो मिनट तक फिर से इस्तेमाल करने की अनुमति नहीं देता. इसलिए, जब तक हम दो मिनट के अंदर कनेक्शन बनाने की सभी कोशिशों को लूप कर सकते हैं, तब तक हम इस तरीके से पैरलल कनेक्शन को सिम्युलेट कर सकते हैं.
इंस्टेंस के एसएसएच सेशन में यह कमांड चलाएं
while true; do for i in {1..64}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done
आपको 64 पैरलल कनेक्शन खोलने में कोई समस्या नहीं आएगी. साथ ही, स्क्रिप्ट को यह प्रिंट करना चाहिए
Connection # 64 successful Loop Done, Sleeping for 150s Connection # 64 successful Loop Done, Sleeping for 150s
यह देखने के लिए कि हम 64 पैरलल कनेक्शन से ज़्यादा नहीं जा सकते, पहले दो मिनट इंतज़ार करें, ताकि सभी पुराने सॉकेट बंद हो जाएं. इसके बाद, एक लाइन वाले उसी निर्देश में यहां दिया गया बदलाव करें और उसे फिर से चलाएं
while true; do for i in {1..70}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done
अब आपको यह आउटपुट दिखेगा
Connection # 64 successful Connection # 65 failed Connection # 66 failed Connection # 67 failed Connection # 68 failed Connection # 69 failed Connection # 70 failed Loop Done, Sleeping for 150s
इससे पता चलता है कि पहले 64 कनेक्शन तो बन गए, लेकिन पोर्ट उपलब्ध न होने की वजह से बाकी 6 कनेक्शन नहीं बन पाए.
इसलिए, SSH शेल से बाहर निकलें और अगले सेक्शन में DPA को चालू करें.
8. डीपीए चालू करें और उसके काम करने के तरीके की पुष्टि करें
नीचे दी गई gcloud कमांड चलाएं. इससे DPA चालू हो जाता है. साथ ही, हर वीएम के लिए कम से कम 64 पोर्ट और ज़्यादा से ज़्यादा 1024 पोर्ट असाइन किए जा सकते हैं.
gcloud alpha compute routers nats update consumer-nat-gw --router=consumer-cr \ --region=us-east4 --min-ports-per-vm=64 --max-ports-per-vm=1024 \ --enable-dynamic-port-allocation
इनमें से कौनसी क्वेरी से यह आउटपुट मिलता है
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
अब get-nat-mapping-info को फिर से चलाकर पुष्टि करें कि दोनों इंस्टेंस में अब भी सिर्फ़ 64 पोर्ट असाइन किए गए हैं
gcloud compute routers get-nat-mapping-info consumer-cr --region=us-east4
आउटपुट का सैंपल (कम शब्दों में समझाने के लिए काटा-छांटा गया है)
--- instanceName: consumer-instance-1 ... - <NAT Consumer IP1>:1024-1055 numTotalNatPorts: 32 ... - natIpPortRanges: - <NAT Consumer IP1>:32768-32799 numTotalNatPorts: 32 ... --- instanceName: consumer-instance-2 ... - <NAT Address IP1>:1056-1087 numTotalNatPorts: 32 ... - <NAT Address IP1>:32800-32831 numTotalNatPorts: 32 ...
पोर्ट असाइनमेंट में ज़्यादा बदलाव नहीं हुआ है, क्योंकि इंस्टेंस अभी तक किसी भी पोर्ट का इस्तेमाल नहीं कर रहा है.
आइए, इंस्टेंस में वापस एसएसएच करें:
gcloud compute ssh consumer-instance-1 --zone=us-east4-a
प्रोड्यूसर आईपी एनवायरमेंट वैरिएबल को फिर से एक्सपोर्ट करें.
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
इसके बाद, पैरलल कनेक्शन को सिम्युलेट करने के लिए, पहले वाले लूप को फिर से चलाएं:
while true; do for i in {1..70}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done
अब हमें यह आउटपुट दिखेगा
Connection # 64 successful Connection # 65 failed Connection # 66 failed Connection # 70 successful Loop Done, Sleeping for 150s
तो, यहां क्या हुआ? पोर्ट के इस्तेमाल में बढ़ोतरी होने पर, Cloud NAT पोर्ट असाइनमेंट को बढ़ाता है. हालांकि, इसे पूरे नेटवर्किंग लेयर में प्रोग्राम करने में कुछ समय लगता है. इसलिए, कनेक्शन के बाकी अनुरोधों को पूरा करने से पहले, हमें कनेक्शन के 1 से 3 टाइमआउट दिखते हैं.
हमने कर्ल के लिए टाइम आउट की अवधि को कम करके पांच सेकंड कर दिया है. हालांकि, जिन ऐप्लिकेशन के लिए टाइम आउट की अवधि ज़्यादा है वे कनेक्शन को पूरा कर पाएंगे. ऐसा तब होगा, जब DPA पोर्ट असाइनमेंट की संख्या बढ़ा रहा हो.
कनेक्शन बढ़ाने के इस तरीके को ज़्यादा साफ़ तौर पर तब देखा जा सकता है, जब हम कनेक्शन बनाने की 1,024 कोशिशों के लिए लूप चलाते हैं. जैसे,
while true; do for i in {1..1024}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done
अब हमें यह आउटपुट दिखने की उम्मीद है
Connection # 64 successful Connection # 65 failed Connection # 66 failed Connection # 129 successful Connection # 130 failed Connection # 131 failed Connection # 258 successful Connection # 259 failed Connection # 260 failed Connection # 515 successful Connection # 516 failed Connection # 1024 successful Loop Done, Sleeping for 150s
Cloud NAT, पोर्ट को 2 की पावर में असाइन करता है. इससे हर चरण में असाइन किए गए पोर्ट की संख्या दोगुनी हो जाती है. इसलिए, हमें 64 और 1024 के बीच 2 की पावर के आस-पास कनेक्शन टाइमआउट हाइलाइट होते हुए दिखते हैं.
हमने maxPortsPerVM को 1,024 पर सेट किया है. इसलिए, हमें उम्मीद नहीं है कि हम 1,024 से ज़्यादा कनेक्शन के लिए जा पाएंगे. हम इसकी जांच कर सकते हैं. इसके लिए, हमें कर्ल लूप को 1024 से ज़्यादा बार चलाना होगा. हालांकि, इससे पहले हमें दो मिनट तक इंतज़ार करना होगा, ताकि पुराने पोर्ट रीसेट हो जाएं.
while true; do for i in {1..1035}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done
अनुमान के मुताबिक, आउटपुट में 1024 से ज़्यादा कनेक्शन के बाद गड़बड़ी दिख रही है
<truncated output> ... Connection # 1028 successful Connection # 1029 failed Connection # 1030 failed Connection # 1031 failed Connection # 1032 failed Connection # 1033 failed Connection # 1034 failed Connection # 1035 failed ... Loop Done, Sleeping for 150s
maxPortsPerVM को 1024 पर सेट करके, हमने Cloud NAT को यह निर्देश दिया है कि वह हर वीएम के लिए, पोर्ट असाइनमेंट को कभी भी 1024 से ज़्यादा न करे.
अगर हम SSH सेशन से बाहर निकलकर, get-nat-mapping-info को तुरंत फिर से चलाते हैं, तो हमें असाइन किए गए अतिरिक्त पोर्ट दिख सकते हैं
gcloud compute routers get-nat-mapping-info consumer-cr --region=us-east4
इसके बाद, यह आउटपुट देखें
--- instanceName: consumer-instance-1 interfaceNatMappings: - natIpPortRanges: - <NAT Address IP1>:1024-1055 - <NAT Address IP1>1088-1119 -<NAT Address IP1>:1152-1215 - <NAT Address IP1>:1280-1407 - <NAT Address IP1>:1536-1791 numTotalDrainNatPorts: 0 numTotalNatPorts: 512 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.2 - natIpPortRanges: - <NAT Address IP1>:32768-32799 - <NAT Address IP1>:32832-32863 - <NAT Address IP1>:32896-32959 - <NAT Address IP1>:33024-33151 - <NAT Address IP1>:33536-33791 numTotalDrainNatPorts: 0 numTotalNatPorts: 512 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.2 --- instanceName: consumer-instance-2 interfaceNatMappings: - natIpPortRanges: - <NAT Address IP1>:1056-1087 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.3 - natIpPortRanges: - <NAT Address IP1>:32800-32831 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.3
ध्यान दें कि consumer-instance-1 को 1024 पोर्ट असाइन किए गए हैं, लेकिन consumer-instance-2 को सिर्फ़ 64 पोर्ट असाइन किए गए हैं. डीपीए से पहले, ऐसा आसानी से नहीं किया जा सकता था. इससे पता चलता है कि Cloud NAT के लिए डीपीए कितना ज़रूरी है.
अगर get-nat-mapping-info कमांड को फिर से चलाने से पहले दो मिनट तक इंतज़ार किया जाता है, तो आपको दिखेगा कि consumer-instance-1 को सिर्फ़ 64 पोर्ट असाइन किए गए हैं. इससे यह पता चलता है कि DPA न सिर्फ़ पोर्ट के असाइनमेंट को बढ़ा सकता है, बल्कि जब उनका इस्तेमाल नहीं किया जा रहा होता है, तब उन्हें रिलीज़ भी कर सकता है. इससे एक ही NAT गेटवे के पीछे मौजूद अन्य इंस्टेंस उनका इस्तेमाल कर सकते हैं.
9. डीपीए की मदद से, क्लाउड एनएटी के नियमों की जांच करना
हमने हाल ही में Cloud NAT के लिए, NAT नियमों को लागू करने की सुविधा भी लॉन्च की है. इससे ग्राहक ऐसे नियम लिख सकते हैं जो कुछ बाहरी डेस्टिनेशन के लिए खास NAT आईपी का इस्तेमाल करते हैं. ज़्यादा जानकारी के लिए, कृपया NAT नियमों का दस्तावेज़ पेज देखें.
इस अभ्यास में, हम डीपीए और नेट नियमों के बीच इंटरैक्शन का पता लगाते हैं. producer-address-2 को ऐक्सेस करते समय nat-address-2 का इस्तेमाल करने के लिए, सबसे पहले एक NAT नियम तय करते हैं.
यहां दिया गया gcloud कमांड चलाएं. इससे NAT नियम बन जाएगा. इसके लिए,
gcloud alpha compute routers nats rules create 100 \ --match='destination.ip == "'$producerip2'"' \ --source-nat-active-ips=nat-address-2 --nat=consumer-nat-gw \ --router=consumer-cr --router-region=us-east4
आपको यह आउटपुट दिखना चाहिए
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
अब नए NAT नियम का असर देखने के लिए, get-nat-mapping-info को फिर से चलाएं.
gcloud alpha compute routers get-nat-mapping-info consumer-cr --region=us-east4
इससे यह आउटपुट मिलना चाहिए
---
instanceName: consumer-instance-1
interfaceNatMappings:
- natIpPortRanges:
- <NAT Address IP1>:1024-1055
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
ruleMappings:
- natIpPortRanges:
- <NAT Address IP2>:1024-1055
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
ruleNumber: 100
sourceAliasIpRange: ''
sourceVirtualIp: 10.0.0.2
- natIpPortRanges:
- <NAT Address IP1>:32768-32799
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
ruleMappings:
- natIpPortRanges:
- <NAT Address IP2>:32768-32799
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
ruleNumber: 100
sourceAliasIpRange: ''
sourceVirtualIp: 10.0.0.2
ध्यान दें कि अब हमने ruleMappings के लिए, ruleMappings के क्रम में अतिरिक्त पोर्ट असाइन किए हैं. इनकी संख्या भी 64 है, जो तय की गई कम से कम संख्या है.nat-address-2
इसलिए, अगर कोई इंस्टेंस, NAT नियम में बताए गए डेस्टिनेशन से कई कनेक्शन खोलता है, तो क्या होगा? Let's find out.
आइए, इंस्टेंस में वापस एसएसएच करें:
gcloud compute ssh consumer-instance-1 --zone=us-east4-a
प्रोड्यूसर आईपी एनवायरमेंट वैरिएबल को फिर से एक्सपोर्ट करें.
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
अब producerip2 के ख़िलाफ़ कर्ल लूप को फिर से चलाएं
while true; do for i in {1..1024}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip2/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done
आपको इससे मिलता-जुलता आउटपुट दिखेगा
Connection # 64 successful Connection # 65 failed Connection # 66 failed Connection # 129 successful Connection # 130 failed Connection # 131 failed Connection # 258 successful Connection # 259 failed Connection # 260 failed Connection # 515 successful Connection # 516 failed Connection # 1024 successful Loop Done, Sleeping for 150s
यह टेस्ट, पिछले टेस्ट की तरह ही है. आइए, इंस्टेंस के एसएसएच सेशन से बाहर निकलें और नेट मैपिंग को फिर से देखें.
gcloud alpha compute routers get-nat-mapping-info consumer-cr --region=us-east4
इससे यह आउटपुट मिलना चाहिए
---
instanceName: consumer-instance-1
interfaceNatMappings:
- natIpPortRanges:
- <NAT Address IP1>:1024-1055
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
ruleMappings:
- natIpPortRanges:
- <NAT Address IP2>:1024-1055
- <NAT Address IP2>:1088-1119
- <NAT Address IP2>:1152-1215
- <NAT Address IP2>:1280-1407
- <NAT Address IP2>:1536-1791
numTotalDrainNatPorts: 0
numTotalNatPorts: 512
ruleNumber: 100
sourceAliasIpRange: ''
sourceVirtualIp: 10.0.0.2
- natIpPortRanges:
- <NAT Address IP1>:32768-32799
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
ruleMappings:
- natIpPortRanges:
- <NAT Address IP2>:32768-32799
- <NAT Address IP2>:32832-32863
- <NAT Address IP2>:32896-32959
- <NAT Address IP2>:33024-33151
- <NAT Address IP2>:33280-33535
numTotalDrainNatPorts: 0
numTotalNatPorts: 512
ruleNumber: 100
sourceAliasIpRange: ''
sourceVirtualIp: 10.0.0.2
---
instanceName: consumer-instance-2
interfaceNatMappings:
- natIpPortRanges:
- <NAT Address IP1>:1056-1087
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
ruleMappings:
- natIpPortRanges:
- <NAT Address IP2>:1056-1087
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
ruleNumber: 100
sourceAliasIpRange: ''
sourceVirtualIp: 10.0.0.3
- natIpPortRanges:
- <NAT Address IP1>:32800-32831
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
ruleMappings:
- natIpPortRanges:
- <NAT Address IP2>:32800-32831
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
ruleNumber: 100
sourceAliasIpRange: ''
sourceVirtualIp: 10.0.0.3
---
instanceName: consumer-instance-1
interfaceNatMappings:
- natIpPortRanges:
- <NAT Address IP1>:1024-1055
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
ruleMappings:
- natIpPortRanges:
- <NAT Address IP2>:1024-1055
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
ruleNumber: 100
sourceAliasIpRange: ''
sourceVirtualIp: 10.0.0.2
- natIpPortRanges:
- <NAT Address IP1>:32768-32799
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
ruleMappings:
- natIpPortRanges:
- <NAT Address IP2>:32768-32799
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
ruleNumber: 100
sourceAliasIpRange: ''
sourceVirtualIp: 10.0.0.2
ऊपर दिए गए उदाहरण में देखा जा सकता है कि consumer-instance-1 के डिफ़ॉल्ट NAT आईपी ( nat-address-1 का आईपी) में अब भी सिर्फ़ 64 पोर्ट असाइन किए गए हैं. हालांकि, NAT नियम के आईपी (nat-address-2 का आईपी) में 1024 पोर्ट असाइन किए गए हैं. इस दौरान, consumer-instance-2 ने सभी NAT आईपी के लिए, 64 पोर्ट के डिफ़ॉल्ट असाइनमेंट को बनाए रखा.
एक्सरसाइज़ के तौर पर, रिवर्स केस की जांच की जा सकती है. Cloud NAT को सभी अतिरिक्त पोर्ट को डीअलॉकेट करने दें. इसके बाद, producerip1 के ख़िलाफ़ कर्ल लूप चलाएं और get-nat-mapping-info के आउटपुट पर पड़ने वाले असर को देखें
10. क्लीनअप करने का तरीका
बार-बार लगने वाले शुल्क से बचने के लिए, आपको इस कोडलैब से जुड़े सभी संसाधन मिटाने चाहिए.
सबसे पहले, सभी इंस्टेंस मिटाएं.
Cloud Shell से:
gcloud compute instances delete consumer-instance-1 consumer-instance-2 \ producer-instance-1 producer-instance-2 \ --zone us-east4-a --quiet
अनुमानित आउटपुट :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/consumer-instance-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/consumer-instance-2]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-2].
इसके बाद, Cloud Router को मिटाएं. Cloud Shell से:
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].
सभी बाहरी आईपी पतों को रिलीज़ करें. Cloud Shell से:
gcloud compute addresses delete nat-address-1 \ nat-address-2 producer-address-1 \ producer-address-2 --region us-east4 --quiet
आपको यह आउटपुट दिख सकता है :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-3]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].
VPC फ़ायरवॉल के नियमों को मिटाएं. Cloud Shell से:
gcloud compute firewall-rules delete consumer-allow-iap \ producer-allow-80 --quiet
आपको यह आउटपुट दिख सकता है :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/consumer-allow-iap]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/producer-allow-80].
सबनेट मिटाएं. Cloud Shell से:
gcloud compute networks subnets delete cons-net-e4 \ prod-net-e4 --region=us-east4 --quiet
आपको यह आउटपुट दिख सकता है :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/cons-net-e4]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/prod-net-e4].
आखिर में, वीपीसी मिटाते हैं. Cloud Shell से:
gcloud compute networks delete consumer-vpc \ producer-vpc --quiet
आपको यह आउटपुट दिख सकता है :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/consumer-vpc]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/producer-vpc].
11. बधाई हो!
आपने Cloud NAT DPA Lab पूरा कर लिया है!
आपने क्या-क्या कवर किया
- डेटा प्रोसेसिंग समझौते (डीपीए) के लिए, Cloud NAT गेटवे को कैसे सेट अप करें.
- डेटा प्रोसेसिंग समझौते (डीपीए) के बिना पोर्ट किए गए नंबरों की जांच कैसे करें.
- किसी NAT गेटवे के लिए, डीपीए को चालू और कॉन्फ़िगर करने का तरीका.
- पैरलल इग्रेस कनेक्शन चलाकर, डीपीए के असर को कैसे देखा जा सकता है.
- डीपीए की सुविधा चालू होने पर, NAT गेटवे में NAT नियम कैसे जोड़ें.
- कई डेस्टिनेशन पर इग्रेस कनेक्शन चलाकर, नियमों के साथ DPA के व्यवहार को कैसे देखा जा सकता है.
अगले चरण
- डाइनैमिक पोर्ट असाइनमेंट के बारे में जानकारी देने वाला दस्तावेज़ पेज ब्राउज़ करें
- अपने ऐप्लिकेशन के साथ, एनएटी टाइमआउट और पोर्ट असाइनमेंट की वैल्यू में बदलाव करके देखें.
- Google Cloud Platform पर नेटवर्किंग के बारे में ज़्यादा जानें
©Google, Inc. या उसकी सहयोगी कंपनियां. सभी अधिकार सुरक्षित हैं. इसे डिस्ट्रिब्यूट न करें.