🚪 NAT आणि internet egress शाळेच्या पद्धतीने शिका

Private servers internet पर्यंत कसे पोहोचतात पण internet त्यांच्यापर्यंत पोहोचत नाही, हे शाळेच्या फाटकाच्या रूपात शिकवलेले: नोंदवही घेऊन बसलेला एक रखवालदार, जो बाहेर जाणारी प्रत्येक फेरी लिहून ठेवतो आणि फक्त जुळणारी उत्तरेच आत सोडतो. प्रत्येक धडा म्हणजे चित्र आणि lab असलेली एक शाळेची गोष्ट — आणि फाटक repo मध्येच आहे: शुद्ध Python मधील port address translation चे शिकवण्यासाठीचे मॉडेल (nat/gateway.py, कोणतीही dependency नाही) जे तुम्ही भरू शकता, time out करू शकता आणि मोडू शकता.

🚪 फक्त बाहेर जाणे📒 PAT नोंदवही⚖️ gateway विरुद्ध instance🏢 प्रत्येक AZ मध्ये एक📌 Elastic IPs💰 तास + GB🚇 endpoints6️⃣ egress-only IGW🔎 port संपणे

🚪 भाग 1 — फाटक (1–4)

  • private बाकांना फाटक का हवे 🚪
  • प्रत्येक फेरी लक्षात ठेवणारी नोंदवही 📒
  • managed फाटक की स्वतःचे ⚖️
  • प्रत्येक इमारतीला एक फाटक 🏢

💰 भाग 2 — फाटक चालवणे (5–8)

  • भागीदारांना विश्वास वाटेल असा परतीचा पत्ता 📌
  • दोन मीटर: तास आणि GB 💰
  • फाटक टाळणाऱ्या फेऱ्या 🧭
  • भरलेल्या नोंदवह्या आणि विसरलेल्या ओळी 🔎
# the 60-second wow — the gate, live:
git clone https://github.com/BaluRaut/learn-nat-school.git && cd learn-nat-school
python3 nat/demo.py                # 8 lessons: translations, failures and costs
python3 nat/test_nat.py            # 8 checks across the lessons

तुम्हाला काय दिसायला हवे (छाटलेले — यश असे दिसते):

═══ why ═══
── desks in a private wing have private addresses (10.x) — the internet cannot write back to them
   the gate (NAT) lets them go OUT and get answers back, but nobody outside can walk IN
   app 10.20.48.25:50001 → pypi.org  leaves as 13.232.10.20:1024
   a stranger knocks on 13.232.10.20:2222  → dropped — nobody inside asked

═══ pat ═══
── the register: one public IP, many desks — the gate tells them apart by the port it hands out
   10.20.48.25:50001  → 151.101.0.223:443  written as 13.232.10.20:1024
   10.20.64.7:50001   → 151.101.0.223:443  written as 13.232.10.20:1025
   10.20.48.25:50002  → 140.82.112.3:443   written as 13.232.10.20:1024
   register:
     13.232.10.20:1024  ↔ 10.20.48.25:50001  for 151.101.0.223
     13.232.10.20:1025  ↔ 10.20.64.7:50001   for 151.101.0.223
     13.232.10.20:1024  ↔ 10.20.48.25:50002  for 140.82.112.3
   answer to 13.232.10.20:1025 from pypi → back to ('10.20.64.7', 50001)

═══ kinds ═══
── two kinds of gate
                              NAT gateway (managed)        NAT instance (an EC2 you run)
   scaling                    5 Gbps, grows to 100 Gbps    the instance size
   in its AZ                  redundant for you            you patch it, you fail it over
   security groups            cannot attach                yes
   port forwarding / bastion  no                           possible
   setup                      one resource + a route       turn off source/dest check, iptables MASQUERADE
   cost                       $0.045/h + $0.045/GB         the instance price, no per-GB fee
   the managed gateway is the default choice; a NAT instance is for tiny labs or special tricks

═══ peraz ═══
── the private route table in each AZ says 0.0.0.0/0 → the NAT in the SAME AZ
   💥 AZ a goes down (nat-a with it)
   private-a: one-per-AZ → 🚫 (its AZ is down anyway)   ·   one shared nat-a → 🚫 cut off
   private-b: one-per-AZ → ✅   ·   one shared nat-a → 🚫 cut off
   private-c: one-per-AZ → ✅   ·   one shared nat-a → 🚫 cut off
   one shared NAT: a single AZ failure cuts off every AZ, plus cross-AZ data charges on every byte

═══ eip ═══
── a public NAT gateway sends everything out from its Elastic IP(s) — a fixed address partners can trust
   partner firewall allow-list:  13.232.10.20/32, 13.232.10.30/32
   every desk behind the gate looks like one of these 2 addresses — add IPs (up to 8) for more ports
   ⚠️  allow-listing the NAT's IP trusts EVERY workload behind it — pair it with real authentication

═══ costs ═══
── the gate charges twice: every hour it exists ($0.045) and every GB it carries ($0.045) — example prices
   1 NAT × 730 h +   100 GB → $   37.35 / month
   3 NAT × 730 h +   100 GB → $  103.05 / month
   3 NAT × 730 h + 5,000 GB → $  323.55 / month
   of those 5,000 GB, 4,000 GB were S3 downloads — a free gateway endpoint saves $180.00 a month
   cross-AZ traffic to a NAT in another AZ adds a data-transfer charge on top

═══ alternatives ═══
── not every trip needs the gate:
   S3 / DynamoDB                      → gateway endpoint — free, just a route
   ECR, SQS, Secrets Manager, STS…    → interface endpoint (PrivateLink) — private IP in your subnet
   IPv6 going out only                → egress-only internet gateway — IPv6 has no NAT, this is its one-way door
   allow only listed domains          → a proxy or AWS Network Firewall in front of the NAT
   private IP to a private IP         → private NAT gateway — overlapping networks via Transit Gateway
   nothing on the internet at all     → no NAT — the cheapest and safest gate is none

═══ troubleshoot ═══
── port exhaustion: AWS allows 55,000 connections to ONE destination per public IP (here shrunk to 5)
   connection 1 → 13.232.10.20:1024
   connection 2 → 13.232.10.20:1025
   connection 3 → 13.232.10.20:1026
   connection 4 → 13.232.10.20:1027
   connection 5 → 13.232.10.20:1028
   connection 6 → ❌ ErrorPortAllocation
   connection 7 → ❌ ErrorPortAllocation
   a DIFFERENT destination still works → rows: 6 · ErrorPortAllocation = 2
── the idle timeout: rows quiet for more than 350 s are wiped
   t=400 s the server answers late → wiped 1 row → reply dropped (the app sees a reset)
   fixes: TCP keepalive under 350 s · add Elastic IPs · spread across destinations · watch ErrorPortAllocation,
          PacketsDropCount and IdleTimeoutCount in CloudWatch

✅ done — the gate answered every lesson
🎒 धडा 01 पूर्वी: तुम्हाला फक्त Python 3 हवे — दुसरे काहीही नाही; AWS account नको. हा lab NAT चे शिकवण्यासाठीचे मॉडेल आहे; किमती उदाहरणादाखल आहेत (us-east-1) — नेहमी AWS pricing page तपासा. चांगले शेजारी: VPC शाळा (हे फाटक ज्या campus चे आहे ते) आणि Networking शाळा (IP, ports आणि TCP अगदी पायापासून).

🗺️ संपूर्ण चित्र — एक आकृती, पूर्ण कोर्स

संपूर्ण कोर्स एका कॅनव्हासवर. 4K आवृत्तीसाठी क्लिक करा.

The big picture: the gate (why NAT, how PAT works, NAT gateway vs instance, one per AZ) and running the gate (Elastic IPs, costs, alternatives, troubleshooting)

🚪 भाग 1 — फाटक (धडे 1–4)

एक git branch = एक कल्पना; branch 03 मध्ये धडे 01–03 आहेत. प्रत्येक translation nat/gateway.py मधून येते — AWS account लागत नाही.

1

🚪 NAT का

शाळेचे फाटक — private बाक बाहेर जातात आणि उत्तरे परत मिळवतात, पण बाहेरचा कोणीही आत येऊ शकत नाही.lesson-01-why-natधडा वाचा →आकृती पहा ↗
2

📒 फाटक कसे लक्षात ठेवते (PAT)

फाटकाची नोंदवही — एक public IP, अनेक बाक, फाटक देत असलेल्या port वरून ओळखले जातात.lesson-02-how-pat-worksधडा वाचा →आकृती पहा ↗
3

⚖️ NAT gateway विरुद्ध NAT instance

managed फाटक की तुम्ही स्वतः चालवलेले फाटक — scaling, failover, security groups आणि खर्च.lesson-03-gateway-vs-instanceधडा वाचा →आकृती पहा ↗
4

🏢 प्रत्येक AZ ला एक फाटक

प्रत्येक इमारतीचा private route त्याच इमारतीतील फाटकाकडे निर्देश करतो — म्हणून एक बिघाड एकच इमारत तोडतो, सगळ्या नाही.lesson-04-per-az-routingधडा वाचा →आकृती पहा ↗

💰 भाग 2 — फाटक चालवणे (धडे 5–8)

Production egress ला काय हवे: स्थिर पत्ते, समजणारे bill, स्वस्त मार्ग आणि प्रत्यक्षात दिसणारे बिघाड.

5

📌 Elastic IPs आणि allow-listing

भागीदार विश्वास ठेवू शकतील असा स्थिर परतीचा पत्ता — आणि फक्त तो पत्ता म्हणजे authentication का नाही.lesson-05-elastic-ipsधडा वाचा →आकृती पहा ↗
6

💰 फाटकाचा खर्च किती

दोन मीटर: ते अस्तित्वात असलेला प्रत्येक तास आणि ते वाहून नेत असलेला प्रत्येक GB — आणि त्यातला बहुतेक खर्च टाळणारा मोफत बोगदा.lesson-06-costsधडा वाचा →आकृती पहा ↗
7

🧭 NAT चे पर्याय

प्रत्येक फेरीला फाटक लागत नाही — endpoints, IPv6 egress-only gateway, proxies, private NAT, किंवा internet अजिबात नाही.lesson-07-alternativesधडा वाचा →आकृती पहा ↗
8

🔎 फाटकातील अडचणी शोधणे

भरलेल्या नोंदवह्या आणि विसरलेल्या ओळी — port exhaustion, 350-second idle timeout आणि ते दाखवणारे CloudWatch metrics.lesson-08-troubleshootingधडा वाचा →आकृती पहा ↗
🗣️ हे मोठ्याने समजावून सांगा — धडा 8 नंतर: (1) दोन बाक एकाच server ला source port 50001 वापरतात — फाटक उत्तरे वेगळी कशी ओळखते? (2) Internet वरचा अनोळखी माणूस NAT मागच्या बाकाशी connection का सुरू करू शकत नाही? (3) प्रत्येक AZ ला एक NAT gateway का? (4) NAT bill चा बहुतेक भाग कुठून येतो, आणि S3 साठी तो काय काढून टाकते? (5) ErrorPortAllocation म्हणजे काय आणि दोन उपाय सांगा. (6) सहा मिनिटे शांत राहिलेले connection का तुटते?
🎓 त्याच शाळेतून: VPC · API Gateway · EC2 · Networking — तेच उपमांचे विश्व, तीच branch-by-branch पद्धत.

📐 धड्यांच्या आकृत्या — क्रमांक अनुसरा

प्रत्येक धडा एका क्रमांकित बॉक्स-आणि-बाण आकृतीत — स्वतंत्र पानावरही.

1 🚪 NAT का

शाळेचे फाटक — private बाक बाहेर जातात आणि उत्तरे परत मिळवतात, पण बाहेरचा कोणीही आत येऊ शकत नाही.

🧒 सोप्या शब्दांत

मागच्या वर्गांतील विद्यार्थी दुकानात जाऊ शकतात, पण दुकानदार त्यांना वर्ग क्रमांकावरून शोधू शकत नाही. म्हणून प्रत्येक फेरी शाळेच्या gate मधूनच जाते. रखवालदार त्यांना बाहेर जाऊ देतो आणि दुकानदाराचे उत्तर आत येऊ देतो. सरळ gate पाशी येणाऱ्या अनोळखी माणसाला परत पाठवले जाते, कारण आतून कोणीच त्याला बोलावले नव्हते.

📖 नवे शब्दNAT — private desks ना बाहेर जाऊन उत्तरे आणू देणारे, पण न बोलावलेल्या कोणालाही आत न येऊ देणारे शाळेचे gateprivate IP — 10.20.48.25 सारखा पत्ता, जो फक्त तुमच्या स्वतःच्या network मध्येच चालतोpublic IP — 13.232.10.20 सारखा पत्ता, ज्यावर संपूर्ण internet उत्तरे पाठवू शकतेprivate subnet — internet कडे स्वतःचे फाटक नसलेली वर्गांची wingoutbound — आतून सुरू होऊन बाहेर जाणारी फेरी; NAT फक्त अशाच फेऱ्या सुरू होऊ देतो
1शाळेचे फाटक — बाहेर जाणे चालते, उत्तरे परत येतात, अनोळखी माणसाची थाप टाकून दिली जाते🏫 private subnet — बाकांचे private 10.x पत्ते आहेतinternet स्वतःहून 10.x ला उत्तर लिहू शकत नाही🌍 इंटरनेटapp बाक10.20.48.25(public IP नाही)🚪 NAT फाटकpublic IP 13.232.10.20from10.20.48.25:50001कडे151.101.0.223:443from13.232.10.20:1024कडे151.101.0.223:443① बाहेर: फाटक पाठवणाऱ्यावर नवा शिक्का मारतेpypi.org151.101.0.223:443from151.101.0.223:443कडे13.232.10.20:1024from151.101.0.223:443कडे10.20.48.25:50001② उत्तर: नोंदवहीत सापडले → परत बाकाकडे198.51.100.9एक अनोळखीfrom198.51.100.9:443कडे13.232.10.20:2222❌③ :2222 वर थाप — नोंदवहीत ओळ नाहीइथे काहीही पोहोचत नाहीटाकून दिले — आतल्या कोणीही विचारले नव्हते🚫 बाहेरचा कोणीही आत येऊ शकत नाही2📒 पहारेकऱ्याने काय लिहिले — नोंदवही (translation table)nat-a ची नोंदवहीpublic बाजूआतला बाकdestination113.232.10.20:102410.20.48.25:50001151.101.0.223:443213.232.10.20:2222— ओळ नाही —(अनोळखी माणूस)बाहेर → ओळ लिहा · उत्तर → ती शोधा · ओळ नाही → टाकून द्या1एक बाक बाहेर जातोफाटक एक ओळ लिहिते आणि स्वतःच्या public IP वरून पाठवते2उत्तर परत येतेओळ सांगते कोणता बाक — तिथे आत द्या3अनोळखी माणूस थाप मारतोओळ नाही → टाकून दिले; अनोळखी माणसाला 10.x कधीच कळत नाही
⏪ आधी

Private wing मधील desks ना 10.x addresses होते: ते package आणू शकत नव्हते, कारण internet 10.x ला उत्तर परत पाठवू शकत नाही.

💡 काय

NAT म्हणजे शाळेचे gate: आतले desks बाहेर जाऊन उत्तरे परत आणू शकतात, पण बाहेरचा कोणीही न बोलावता आत येऊ शकत नाही.

⚙️ कसे

app 10.20.48.25:50001 pypi.org कडे जाते आणि 13.232.10.20:1024 म्हणून बाहेर पडते; :2222 वर ठोठावणारा अनोळखी drop होतो.

🎯 का

Private servers updates install करू शकतात आणि APIs call करू शकतात, तरी त्यांच्यापर्यंत कोणी पोहोचू शकत नाही: फक्त त्यांच्याच फेऱ्यांची उत्तरे आत येतात.

🚀 पुढे

पुढचा धडा रखवालदाराची नोंदवही उघडतो: एकच public IP अनेक desks ना कसा पुरतो, gate देत असलेल्या port वरून त्यांना ओळखून.

🧪 इथे करून पाहा — एका बाकाला बाहेर पाठवा, server ला उत्तर देऊ द्या — मग अनोळखी माणूस म्हणून बाहेरून फाटकावर थाप मारा

संपूर्ण धडा 01 वाचा →

2 📒 फाटक कसे लक्षात ठेवते (PAT)

फाटकाची नोंदवही — एक public IP, अनेक बाक, फाटक देत असलेल्या port वरून ओळखले जातात.

🧒 सोप्या शब्दांत

वेगवेगळ्या वर्गांतील दोन विद्यार्थी, दोघांचाही roll number 50001, एकाच दुकानाला पत्रे पाठवतात. रखवालदार प्रत्येकाला वेगळ्या gate number सह नोंदवही मध्ये लिहितो: 1024 आणि 1025. दुकान gate number 1025 ला उत्तर पाठवते तेव्हा रखवालदार नोंदवही वाचतो आणि पत्र योग्य विद्यार्थ्याकडे नेतो. Register मध्ये ओळ नसलेले उत्तर फेकून दिले जाते.

📖 नवे शब्दPAT — port address translation: अनेक desks एकच public IP वापरतात, gate देत असलेल्या port वरून ओळखले जातातport — पत्त्यानंतरचा :443 किंवा :1024 सारखा number, जो packet कोणत्या संवादाचा आहे ते सांगतोtranslation table — रखवालदाराची नोंदवही: प्रत्येक फेरीसाठी public port ला आतल्या desk शी जोडणारी एक ओळsource port — gate बदलण्याआधी desk ने स्वतः निवडलेला port, जसे 50001destination — फेरी जिथे जाते ते ठिकाण, जसे 151.101.0.223:443
1एक public IP, अनेक बाक — फाटक देत असलेल्या port वरून ते त्यांना वेगळे ओळखते🏫 खाजगी subnet🌍 इंटरनेटबाक A10.20.48.25बाक B10.20.64.7🚪 NAT फाटकfrom10.20.48.25:50001कडे151.101.0.223:443from13.232.10.20:1024कडे151.101.0.223:4431from10.20.64.7:50001कडे151.101.0.223:443from13.232.10.20:1025कडे151.101.0.223:4432from10.20.48.25:50002कडे140.82.112.3:443from13.232.10.20:1024कडे140.82.112.3:4433पुन्हा बाक A, port 50002pypi.org151.101.0.223:443github.com140.82.112.3:443तोच source port 50001 दोनदा!pypi साठी 1024 घेतलेला आहे → 1025पुन्हा 1024 — वेगळे destinationएक public IP 13.232.10.202📒 नोंदवही — ओळीची key म्हणजे (public IP, public port, destination)nat-a ची नोंदवहीpublic बाजूआतला बाकdestination साठी113.232.10.20:102410.20.48.25:50001151.101.0.223:443213.232.10.20:102510.20.64.7:50001151.101.0.223:443313.232.10.20:102410.20.48.25:50002140.82.112.3:443ओळ 1 आणि 3 दोघी port 1024 वापरतात — चालते: त्यांची destinations वेगळी आहेतफाटक 1024 पासून सर्वात लहान मोकळा port देते · प्रत्येक public IP वर प्रत्येक destination साठी 55,000उत्तर येते — कोणता बाक?from151.101.0.223:443कडे13.232.10.20:1025🔎 ओळ 2: :1025 + pypi→ बाक 10.20.64.7:50001from151.101.0.223:443कडे10.20.64.7:50001
⏪ आधी

अनेक desks एकच public IP वापरतात, आणि दोघे तर एकच source port 50001 वापरतात: कोणाचे उत्तर कोणाचे?

💡 काय

PAT म्हणजे रखवालदाराची नोंदवही: बाहेर जाणाऱ्या प्रत्येक फेरीला वेगळा public port मिळतो, आणि एक ओळ तो port आतल्या desk शी जोडते.

⚙️ कसे

10.20.48.25:50001 आणि 10.20.64.7:50001 दोघेही 151.101.0.223:443 ला call करतात; gate त्यांना 13.232.10.20:1024 आणि :1025 असे लिहिते.

🎯 का

:1025 वरचे उत्तर फक्त 10.20.64.7:50001 कडेच परत जाते, आणि जुळणारी ओळ नसलेला packet सरळ drop होतो.

🚀 पुढे

पुढचा धडा दोन प्रकारच्या gates ची तुलना करतो: managed NAT gateway, आणि NAT instance, म्हणजे तुम्ही स्वतः चालवता ते EC2.

🧪 इथे करून पाहा — एक बाक, त्याचा source port आणि एक destination निवडा — रखवालदार public port निवडून ओळ लिहिताना पाहा

संपूर्ण धडा 02 वाचा →

3 ⚖️ NAT gateway विरुद्ध NAT instance

managed फाटक की तुम्ही स्वतः चालवलेले फाटक — scaling, failover, security groups आणि खर्च.

🧒 सोप्या शब्दांत

शाळा gate सांभाळायला security company नेमू शकते, किंवा एखाद्या शिक्षकाला तिथे उभे करू शकते. Company गर्दीच्या दिवशी जास्त रखवालदार पाठवते आणि तिला कधीच सुट्टी लागत नाही, पण ती तुमचे खास नियम पाळत नाही. शिक्षक जास्तीची कामे करू शकतो, पण त्याला प्रशिक्षण द्यावे लागते, तो आजारी असेल तर दुसरा उभा करावा लागतो, आणि गर्दी वाढली की अधिक सक्षम शिक्षक शोधावा लागतो.

📖 नवे शब्दNAT gateway — AWS तुमच्यासाठी चालवते ते managed gate; ते आपोआप 5 Gbps पासून 100 Gbps पर्यंत वाढतेNAT instance — gate म्हणून काम करण्यासाठी तुम्ही स्वतः उभा करता आणि सांभाळता तो EC2 serversecurity group — server वरची firewall यादी; NAT instance ला ती असू शकते, NAT gateway ला नाहीsource/dest check — instance ला इतर desks चा traffic पुढे पाठवू देण्यासाठी बंद करावी लागणारी EC2 settingfailover — पहिले gate बंद पडले की राखीव gate वर जाणे
1फाटकाचे दोन प्रकार — एक AWS तुमच्यासाठी चालवते, एक तुम्ही बांधता आणि सांभाळता🏭 NAT gateway — managed फाटकNAT gatewayत्याच्या AZ मध्ये redundant5 Gbps100 Gbps पर्यंत वाढतेआपोआप scale होते — resize करण्यासारखे काही नाही🛡️ security groups: जोडता येत नाहीत🔀 port forwarding / bastion: नाही🧩 setup: एक resource + एक route💵 $0.045/h + $0.045/GB🔧 NAT instance — तुम्ही बांधलेले फाटक (तुम्ही चालवलेले EC2)EC2 instance🔧तुम्हीsource/dest checkOFF (तुम्हाला ते बंद करावेच लागते)instance वर$ sudo iptables -t nat -A POSTROUTING \ -o eth0 -j MASQUERADEthroughput = instance चा आकारमोठा रस्ता → मोठा (महाग) instance🛡️ security groups: होय🔀 port forwarding / bastion: शक्य🩹 तुम्ही patch करता, तुम्हीच fail over करता💵 instance ची किंमत, प्रति-GB शुल्क नाहीते बंद पडले की प्रत्येक private बाकाचे internet जाते2⚖️ शेजारी शेजारी — nat/demo.py छापत असलेल्या ओळी🏭 NAT gateway (AWS सांभाळते)🔧 NAT instance (तुम्ही चालवलेले EC2)वाढ (scaling)5 Gbps, 100 Gbps पर्यंत वाढतेinstance चा आकारत्याच्या AZ मध्येतुमच्यासाठी redundantतुम्ही patch करता, तुम्हीच fail over करताsecurity groupsजोडता येत नाहीतहोport forwarding / bastionनाहीशक्यउभारणीएक resource + एक routesource/dest check बंद करा, iptables MASQUERADEखर्च$0.045/h + $0.045/GBinstance ची किंमत, प्रति-GB शुल्क नाही✅ मॅनेज्ड gateway हाच डिफॉल्ट पर्याय — NAT instance फक्त छोट्या labs किंवा खास युक्त्यांसाठी
⏪ आधी

स्वतःचे gate चालवायचे म्हणजे ते patch करणे, त्याचा size ठरवणे आणि हाताने failover करणे, आणि गर्दीच्या दिवशी ते गुदमरू शकत असे.

💡 काय

NAT gateway म्हणजे AWS तुमच्यासाठी सांभाळते ते gate; NAT instance म्हणजे तुम्ही स्वतः सांभाळता ते EC2, जास्त युक्त्या आणि जास्त कामांसह.

⚙️ कसे

Gateway 5 Gbps पासून सुरू होऊन 100 Gbps पर्यंत वाढतो पण त्याला security group लावता येत नाही; instance ला iptables MASQUERADE लागते.

🎯 का

Managed gateway हाच default: patching नाही, त्याच्या AZ मध्ये आपोआप redundant, आणि setup साठी एक resource व एक route पुरे.

🚀 पुढे

पुढचा धडा विचारतो, संपूर्ण इमारतीचा प्रकाश गेला तर काय: प्रत्येक AZ साठी एक gate, आणि आपल्याच इमारतीत राहणारे routes.

🧪 इथे करून पाहा — फाटक बांधा: प्रकार निवडा, setup च्या पायऱ्यांवर खूण करा, मग त्याला प्रश्न विचारा

संपूर्ण धडा 03 वाचा →

4 🏢 प्रत्येक AZ ला एक फाटक

प्रत्येक इमारतीचा private route त्याच इमारतीतील फाटकाकडे निर्देश करतो — म्हणून एक बिघाड एकच इमारत तोडतो, सगळ्या नाही.

🧒 सोप्या शब्दांत

शाळेत a, b आणि c अशा तीन इमारती आहेत. तिन्ही इमारती a चेच gate वापरत असतील, तर a ची वीज गेली की b आणि c मधूनही कोणीच बाहेर जाऊ शकत नाही. म्हणून प्रत्येक इमारतीला स्वतःचे gate मिळते, आणि प्रत्येक इमारतीचा फलक स्वतःच्या gate कडेच दाखवतो. आता a अंधारात गेली तरी b आणि c चालूच राहतात.

📖 नवे शब्दAZ — availability zone: AWS region मधील एक इमारत, स्वतःची वीज आणि network असलेलीroute table — प्रत्येक wing मधील फलक, जो प्रत्येक प्रकारची फेरी कुठे जावी ते सांगतो0.0.0.0/0 — default route: इतर कुठेही न लिहिलेला प्रत्येक पत्ता, म्हणजे internetcross-AZ traffic — एका इमारतीतून दुसऱ्या इमारतीत जाणारा data, ज्यासाठी AWS जास्तीचे पैसे घेते
1प्रत्येक AZ ला एक फाटक — प्रत्येक private route table त्याच इमारतीतील फाटकाकडे निर्देश करते🏢 AZ aprivate-a बाकroute table private-a0.0.0.0/0 → nat-anat-a13.232.10.20💥AZ a बंद पडतो — त्यासोबत nat-a सुद्धाprivate-a: 🚫 (त्याचा AZ तसाही बंद आहे)🏢 AZ bprivate-b बाकroute table private-b0.0.0.0/0 → nat-bnat-b13.232.10.21private-b: ✅ अजूनही online🏢 AZ cprivate-c बाकroute table private-c0.0.0.0/0 → nat-cnat-c13.232.10.22private-c: ✅ अजूनही onlineb आणि c ला काही कळलेच नाही — ते आपापली फाटके वापरतात (तीन तासाभराचे शुल्क ही त्याची किंमत)2एकच सामायिक nat-a — तोच बिघाड प्रत्येक इमारतीचा संपर्क तोडतो🏢 AZ aprivate-a बाकroute table private-a0.0.0.0/0 → nat-anat-a13.232.10.20💥AZ a बंद पडतो — त्यासोबत nat-a सुद्धाprivate-a: 🚫 संपर्क तुटला🏢 AZ bprivate-b बाकroute table private-b0.0.0.0/0 → nat-a❌$cross-AZdata शुल्कइथे फाटक नाहीprivate-b: 🚫 संपर्क तुटला🏢 AZ cprivate-c बाकroute table private-c0.0.0.0/0 → nat-a❌$cross-AZdata शुल्कइथे फाटक नाहीprivate-c: 🚫 संपर्क तुटलाएका AZ चा बिघाड प्रत्येक AZ चा संपर्क तोडतो — आणि b व c मधील प्रत्येक byte ने आधीच cross-AZ transfer चे पैसे भरले आहेत
⏪ आधी

एकच shared nat-a असताना प्रत्येक AZ मधील प्रत्येक private subnet AZ a मधूनच बाहेर जात असे, आणि प्रत्येक byte वर cross-AZ charge भरत असे.

💡 काय

प्रत्येक इमारतीला एक gate: प्रत्येक AZ ची private route table 0.0.0.0/0 त्याच AZ मधील NAT gateway कडे पाठवते.

⚙️ कसे

AZ a बंद पडतो: प्रत्येक AZ ला एक NAT असेल तर private-b आणि private-c बाहेर जाऊ शकतात; shared nat-a असेल तर तिन्ही तुटतात.

🎯 का

मग zone बंद पडला तर फक्त तीच इमारत बाधित होते, आणि gate पर्यंत पोहोचण्यासाठी कोणताही traffic zones ओलांडत नाही.

🚀 पुढे

पुढचा धडा gate चा परतीचा पत्ता पाहतो: partners allow-list करू शकतील असे Elastic IPs, आणि त्यातून खरे तर कशावर विश्वास ठेवला जातो.

🧪 इथे करून पाहा — रचना निवडा, मग Availability Zones बंद पाडा — कोणते private subnets अजूनही internet पर्यंत पोहोचतात?

संपूर्ण धडा 04 वाचा →

5 📌 Elastic IPs आणि allow-listing

भागीदार विश्वास ठेवू शकतील असा स्थिर परतीचा पत्ता — आणि फक्त तो पत्ता म्हणजे authentication का नाही.

🧒 सोप्या शब्दांत

एक partner संग्रहालय फक्त त्याच्या यादीतील पत्त्यांवरून आलेल्या buses साठीच फाटक उघडते. शाळा त्याला gate चा एक कायमचा पत्ता देते, म्हणून कोणत्याही वर्गाची प्रत्येक सहल आत घेतली जाते. पण आता संग्रहालय त्या gate मधून बाहेर पडणाऱ्या प्रत्येकावर विश्वास ठेवते, फक्त इतिहासाच्या वर्गावर नाही. म्हणून संग्रहालयाने प्रत्येक पाहुण्याचा pass तरीही तपासायला हवा.

📖 नवे शब्दElastic IP — तुम्ही ठेवता तो कायमचा public IP, जसे 13.232.10.20, ज्यावरून gate सगळा traffic पाठवतेallow-list — partner च्या firewall ने आत घ्यायच्या पत्त्यांची यादी/32 — ज्यात बरोबर एकच पत्ता आहे अशी range, जसे 13.232.10.20/32authentication — तुम्ही खरे कोण आहात ते key किंवा token ने सिद्ध करणे, फक्त तुम्ही कुठून आलात यावरून नाही
1फाटकाची पत्त्याची पाटी — एक स्थिर परतीचा पत्ता जो भागीदार आपल्या allow-list वर ठेवू शकतो🏫 private subnet — फाटकामागचा प्रत्येक बाकpayments app (पैसे भरण्याचे app)10.20.48.25from10.20.48.25:50001कडेभागीदाराचा API :443reports job (अहवाल बनवणारे काम)10.20.64.7from10.20.64.7:50001कडेभागीदाराचा API :443इतर कोणताही workload(कोणताही 10.x)from(कोणताही बाक)कडेभागीदाराचा API :443🚪 nat-a13.232.10.2013.232.10.30📌 Elastic IPs — ते कधीच बदलत नाहीतfrom13.232.10.20कडेभागीदाराचा API✅from13.232.10.20कडेभागीदाराचा API✅from13.232.10.20कडेभागीदाराचा API⚠️🏦 भागीदारfirewall ची परवानगी यादी13.232.10.20/32 ✓13.232.10.30/32 ✓बाकी सगळे ✗⚠️ लाल बाकसुद्धा आत शिरला — IP म्हणजे ओळख नव्हे2जास्त पाट्या, जास्त ports — एका NAT gateway वर 8 पर्यंत Elastic IPs13.232.10.2013.232.10.30जागा 3जागा 4जागा 5जागा 6जागा 7जागा 8प्रत्येक पाटी एका destination साठी (IP, port, protocol) स्वतःचे 55,000 ports आणते55,00055,00055,00055,00055,00055,00055,00055,0002 IPs सह: एकाच वेळी pypi कडे 110,000कमाल मर्यादा: 8 IPs × 55,000 = 440,000 प्रति destinationफाटक आधी 13.232.10.20 भरते आणि त्या destination साठी .20 कडे मोकळा port उरला नाही तेव्हाच 13.232.10.30 कडे जाते (nat/gateway.py)
⏪ आधी

Partner चा firewall फक्त ओळखीच्या addresses ना आत घेतो, पण येणाऱ्या-जाणाऱ्या servers ना यादीत टाकता येईल असा पत्ताच नसतो.

💡 काय

Elastic IP म्हणजे gate चा कायमचा परतीचा पत्ता: gate मागचा प्रत्येक desk बाहेर जाताना त्याच एका पत्त्यासारखा दिसतो.

⚙️ कसे

Partner 13.232.10.20/32 आणि 13.232.10.30/32 allow-list करतो; 2 Elastic IPs, आणि जास्त ports साठी 8 पर्यंत.

🎯 का

Partners ना विश्वास ठेवायला एक स्थिर पत्ता मिळतो, पण तो gate मागच्या प्रत्येक workload वर विश्वास ठेवतो, म्हणून खरे authentication पण ठेवा.

🚀 पुढे

पुढचा धडा bill वाचतो: gate अस्तित्वात असलेल्या प्रत्येक तासाचे आणि वाहून नेलेल्या प्रत्येक GB चे पैसे घेते.

🧪 इथे करून पाहा — Elastic IPs जोडा आणि एकाच destination कडे connections उघडा — किती बसतात? मग भागीदाराची allow-list तपासा
2120000

संपूर्ण धडा 05 वाचा →

6 💰 फाटकाचा खर्च किती

दोन मीटर: ते अस्तित्वात असलेला प्रत्येक तास आणि ते वाहून नेत असलेला प्रत्येक GB — आणि त्यातला बहुतेक खर्च टाळणारा मोफत बोगदा.

🧒 सोप्या शब्दांत

Gate चालवणारी company दोन bills पाठवते. एक, रखवालदार gate वर उभा असलेल्या प्रत्येक तासाचे, कोणीच बाहेर गेले नाही तरी. दुसरे, रखवालदाराने gate मधून नेलेल्या प्रत्येक पिशवीचे. बहुतेक पिशव्या शाळेच्याच ग्रंथालयाच्या भांडारातील पुस्तकांच्या होत्या, म्हणून शाळा तिथे थेट जाणारा मोफत झाकलेला रस्ता बांधते, आणि bill कमी होते.

📖 नवे शब्दhourly charge — NAT gateway अस्तित्वात असलेल्या प्रत्येक तासाला सुमारे $0.045, वापरला किंवा नाही तरी (उदाहरण किंमत)data processing charge — gate वाहून नेत असलेल्या प्रत्येक GB ला सुमारे $0.045 (उदाहरण किंमत)GB — gigabyte: किती data गेला ते मोजण्याचे मापgateway endpoint — gate टाळून S3 किंवा DynamoDB कडे जाणारा मोफत private मार्ग, route म्हणून जोडलेला
1फाटकाला दोन मीटर आहेत — ते अस्तित्वात असलेला प्रत्येक तास आणि ते वाहून नेणारा प्रत्येक GB⏱️ मीटर 1: तासते अस्तित्वात असेपर्यंत दर तासाला $0.045काहीही जात नसतानाही730 h × $0.045 = $32.85प्रति NAT gateway, प्रति महिनाGBGBGBGBGB⚖️ मीटर 2: processed GBते वाहून नेणाऱ्या प्रत्येक GB साठी $0.045बाहेर जाणे आणि परत येणे, कोणतेही destination100 GB × $0.045 = $4.50उदाहरणादाखल किमती (us-east-1) — तुमच्या तपासामासिक = NATs × 730 h × $0.045 + GB × $0.0452nat/demo.py मधील तीन बिले — तासांचे मीटर स्थिर, GB चे मीटर वाढत जाते1 NAT × 730 h + 100 GB⏱️ $32.85$37.35 (GB $4.50)3 NAT × 730 h + 100 GB⏱️ $98.55$103.05 (GB $4.50)3 NAT × 730 h + 5,000 GB⏱️ $98.55⚖️ $225.00$323.55⏱️ तास · ⚖️ processed GB — 5,000 GB वर GB चे मीटर आधीच तीन फाटकांच्या तासांपेक्षा मोठे आहे3मोफत बोगदा — त्या 5,000 GB पैकी 4,000 GB हे S3 downloads होते🏫 खाजगी subnet🚇 S3 gateway endpoint — मोफत, फक्त एक route🚪 NAT🌍 इंटरनेटNAT मार्गे 1,000 GBS34,000 GBआधी$323.554,000 GB × $0.045 = $180.00 → मोफत बोगदानंतर$143.55 — महिन्याला $180.00 वाचतात$AZ b मधील बाक AZ a मधील NAT वापरत असेल तर त्यालावरून cross-AZ transfer चे पैसेही भरावे लागतात — प्रत्येक AZ ला एक फाटक (L04)
⏪ आधी

Teams नी फारसा विचार न करता NAT gateways जोडले, आणि मग bill वर कोणालाच समजावता न येणारी मोठी रक्कम दिसली.

💡 काय

Gate ला दोन meters: अस्तित्वाच्या प्रत्येक तासाला सुमारे $0.045 आणि वाहून नेलेल्या प्रत्येक GB ला सुमारे $0.045 (us-east-1 ची उदाहरण किंमत).

⚙️ कसे

1 NAT + 100 GB म्हणजे महिन्याला सुमारे $37.35, 3 NATs सुमारे $103.05, आणि 3 NATs + 5,000 GB सुमारे $323.55.

🎯 का

त्या 5,000 GB पैकी 4,000 GB हे S3 downloads होते: मोफत S3 gateway endpoint महिन्याला सुमारे $180.00 वाचवतो.

🚀 पुढे

पुढचा धडा gate ची अजिबात गरज नसलेल्या फेऱ्या सांगतो: endpoints, IPv6 egress-only gateway, proxies आणि private NAT.

🧪 इथे करून पाहा — sliders हलवा — दोन मीटर, आणि S3 gateway endpoint बिलातून किती कमी करतो (उदाहरणादाखल किमती $0.045/h + $0.045/GB)
3500080

संपूर्ण धडा 06 वाचा →

7 🧭 NAT चे पर्याय

प्रत्येक फेरीला फाटक लागत नाही — endpoints, IPv6 egress-only gateway, proxies, private NAT, किंवा internet अजिबात नाही.

🧒 सोप्या शब्दांत

प्रत्येक फेरीला मुख्य gate लागत नाही. शाळेच्याच कार्यालयांकडे जाणाऱ्या फेऱ्या campus मधील बाजूच्या फाटकाने जातात. जगभर चालणारे पत्ते असलेल्या नव्या वर्गांना स्वतःचे एकमार्गी फाटक आहे. कडक gate विद्यार्थी जाऊ शकतील अशा दुकानांची यादी तपासू शकते. आणि परीक्षा हॉलसारख्या काही वर्गांनी कधीच बाहेर जाऊ नये.

📖 नवे शब्दVPC endpoint — internet शिवाय तुमच्या network मधून थेट AWS service कडे जाणारे बाजूचे फाटकinterface endpoint — तुमच्या subnet मध्ये private IP असलेला PrivateLink endpoint, ECR किंवा STS सारख्या services साठीegress-only internet gateway — IPv6 चे एकमार्गी फाटक: बाहेर जाणे आणि परत येणे चालते, आतल्या दिशेने कोणी फेरी सुरू करू शकत नाहीproxy — gate समोरचा तपासनीस, जो फक्त यादीतील domains ना परवानगी देतोprivate NAT gateway — दोन private networks मधील gate, त्यांचे पत्ते एकमेकांवर येतात तेव्हा वापरले जाते
1प्रत्येक फेरीला फाटकाची गरज नसते — NAT चे पैसे भरण्यापूर्वी दिशादर्शक पाटी वाचा🚪 NAT gatewayIPv4 internet वरील बाकी सगळ्यासाठीS3 / DynamoDBgateway endpoint — मोफत, फक्त एक route💵 मोफत — फक्त S3 आणि DynamoDBS3ECR, SQS, Secrets Manager, STS…interface endpoint (PrivateLink) — तुमच्या subnet मध्ये private IP💵 प्रति तास प्रति AZ — मोठ्या प्रमाणावर NAT च्या GB पेक्षा स्वस्त🔌ENI 10.xफक्त बाहेर जाणारे IPv6egress-only internet gateway — IPv6 मध्ये NAT नसतो🌐 IPv6 पत्ते अद्वितीय असतात — भाषांतर करण्यासारखे काही नाहीफक्त बाहेरफक्त यादीतील domains ना परवानगीNAT च्या पुढे एक proxy किंवा AWS Network Firewall🔍 आधी नाव तपासतो, मग NAT भाषांतर करतोपरवानगी यादीprivate IP ते private IPprivate NAT gateway — Transit Gateway मार्गे एकमेकांवर येणारी (overlapping) networks🔁 Elastic IP नाही, internet नाही — 10.x ते 10.xTGW10.x ↔ 10.xinternet वर काहीच नाहीNAT नाही — सर्वात स्वस्त आणि सुरक्षित फाटक म्हणजे फाटकच नसणे🔒 AWS APIs साठी endpoints, बाकी काही नाही🌍nat/demo.py च्या सहा ओळी → पर्याय — काम होईल असा सर्वात स्वस्त मार्ग निवडा
⏪ आधी

सवयीने प्रत्येक फेरी NAT मधूनच जात असे, अगदी S3 downloads, IPv6 traffic आणि internet ची कधीच गरज नसलेले servers सुद्धा.

💡 काय

प्रत्येक फेरीला मुख्य gate लागत नाही: AWS services ना बाजूची फाटके आहेत, IPv6 चे स्वतःचे एकमार्गी फाटक आहे, आणि काही desks आतच राहतात.

⚙️ कसे

S3 आणि DynamoDB मोफत gateway endpoint वापरतात, ECR आणि STS interface endpoint, आणि IPv6 egress-only internet gateway.

🎯 का

योग्य मार्गांमुळे per-GB fee कमी होते, proxy desks कोणत्या domains पर्यंत जातात ते मर्यादित करतो, आणि सर्वात सुरक्षित gate म्हणजे internet च नाही.

🚀 पुढे

पुढचा धडा काम थांबवलेले gate दुरुस्त करतो: भरलेली नोंदवही, विसरलेल्या ओळी, आणि त्या दाखवणारे CloudWatch metrics.

🧪 इथे करून पाहा — बाकाला काय हवे आहे? दिशादर्शक पाटी मार्ग निवडते — आणि NAT चे मीटर चालते का ते सांगते

संपूर्ण धडा 07 वाचा →

8 🔎 फाटकाचे troubleshooting

भरलेल्या नोंदवह्या आणि विसरलेल्या ओळी — port exhaustion, 350-second idle timeout आणि ते दाखवणारे CloudWatch metrics.

🧒 सोप्या शब्दांत

क्रीडा दिनी शेकडो विद्यार्थी एकाच वेळी एकाच दुकानाला पत्रे पाठवतात, आणि रखवालदाराकडचे त्या दुकानासाठीचे gate numbers संपतात, म्हणून पुढची पत्रे नाकारली जातात. इतर दुकानांची पत्रे मात्र जातात. तसेच एखाद्या फेरीत बराच वेळ कोणीच बोलले नाही तर रखवालदार ती ओळ खोडतो; मग खूप उशिरा आलेल्या उत्तराला जायला जागाच उरत नाही.

📖 नवे शब्दport exhaustion — नोंदवही भरले: एका IP वरून एका destination साठीचे सगळे 55,000 ports वापरात आहेतErrorPortAllocation — port मोकळा नसल्यामुळे नाकारलेले connections मोजणारा CloudWatch metricidle timeout — 350 s traffic नसेल तर gate ती ओळ पुसते आणि उशिरा आलेले उत्तर drop होतेkeepalive — ओळ शांत समजली जाऊ नये म्हणून अधूनमधून पाठवलेला छोटा संदेशPacketsDropCount — gate ने फेकून दिलेले packets मोजणारा CloudWatch metricIdleTimeoutCount — खूप वेळ शांत राहिल्याने पुसलेल्या ओळी मोजणारा CloudWatch metric
1port exhaustion — एका destination ची नोंदवही भरून जाते (55,000 वरून 5 पर्यंत लहान केलेले)nat-a ची नोंदवही (ports_per_dest = 5)public बाजूआतला बाकdestination113.232.10.20:102410.20.48.25:40000151.101.0.223:443213.232.10.20:102510.20.48.25:40001151.101.0.223:443313.232.10.20:102610.20.48.25:40002151.101.0.223:443413.232.10.20:102710.20.48.25:40003151.101.0.223:443513.232.10.20:102810.20.48.25:40004151.101.0.223:443613.232.10.20:102410.20.48.25:40100140.82.112.3:443ओळी 1–5: pypi चे सगळे 5 ports वापरात आहेतओळ 6: github हे वेगळे destination आहे → तिथे port 1024 मोकळा आहे ✅ओळी: 6 · ErrorPortAllocation = 2from10.20.48.25:40005कडे151.101.0.223:443connection 6❌ ErrorPortAllocationfrom10.20.48.25:40006कडे151.101.0.223:443connection 7❌ ErrorPortAllocation📈 CloudWatch · nat-aErrorPortAllocation 2connection 6, 7 → ❌2idle timeout — 350 s पेक्षा जास्त वेळ शांत असलेली ओळ पुसली जाते0 s100 s200 s300 s350 s400 sवेळ13.232.10.20:1024 ↔ 10.20.48.25:50001 · pypiती ओळ350 s पेक्षा जास्त शांत: 1 ओळ पुसली🧽from151.101.0.223:443कडे13.232.10.20:1024t=400 s ला server उशिरा उत्तर देतो→ ओळ नाही → टाकून दिले (app ला reset दिसतो)🩺 keepalive उपाय: दर < 350 s ला एक TCP keepalive ओळीला स्पर्श करतो — तिचे घड्याळ पुन्हा सुरू होते, ती कधीच पुसली जात नाही3लक्ष ठेवा आणि दुरुस्त करा — CloudWatch metrics आणि चार उपायErrorPortAllocationएखाद्या destination साठी मोकळा port नाही2lab मध्ये: connections 6 आणि 7 (panel 1)0 पेक्षा जास्त झाल्यावर alarmPacketsDropCountफाटकाने फेकून दिलेले packets1lab मध्ये: t=400 s ला आलेले उशिराचे उत्तर0 पेक्षा जास्त झाल्यावर alarmIdleTimeoutCount350 s शांततेनंतर पुसलेल्या ओळी1lab मध्ये: 350 s ला pypi ची ओळ0 पेक्षा जास्त झाल्यावर alarm🫀350 s च्या आत TCP keepalive📌Elastic IPs जोडा (8 पर्यंत)🔀destinations मध्ये विभागून द्या🔔ErrorPortAllocation वर alarm
⏪ आधी

काही calls अधूनमधून fail होत किंवा अडकत, NAT ठीक दिसत असे, आणि नोंदवही भरू शकते किंवा विसरू शकते हे कोणालाच माहीत नव्हते.

💡 काय

Register ला मर्यादा आहेत: प्रत्येक public IP ला प्रत्येक destination साठी 55,000 connections, आणि 350 s शांत राहिलेल्या ओळी पुसल्या जातात.

⚙️ कसे

Ports 5 पर्यंत कमी केल्यावर connection 6 ला ErrorPortAllocation येतो, पण दुसरे destination चालते; 400 s ला आलेले उत्तर drop होते.

🎯 का

350 s पेक्षा कमी keepalive, जास्त Elastic IPs, आणि ErrorPortAllocation, PacketsDropCount, IdleTimeoutCount वर alarms बहुतेक अडचणी सोडवतात.

🚀 पुढे

पुढे कुठे: VPC school या gate भोवतीचा संपूर्ण campus बांधते, आणि API Gateway school समोरचे कार्यालय बांधते.

🧪 इथे करून पाहा — एक छोटी नोंदवही (प्रति destination ports कमी केलेले): रखवालदाराचे ports संपेपर्यंत connections उघडा
5
🧪 इथे करून पाहा — t = 0 ला एक ओळ लिहिली — घड्याळ पुढे सरकवा आणि server ला उशिरा उत्तर देऊ द्या (idle timeout 350 s)
400

संपूर्ण धडा 08 वाचा →

धडा 01 सुरू करा → 🗓️ अभ्यास योजना (3 आठवडे) 📐 सर्व 8 धड्यांच्या आकृत्या 🧪 प्रश्नमंजुषा (10 प्रश्न) ⏮️ आधी काय होते & फायदे-तोटे