Ravindra BagaleCourses & study guides English

Bastion Host आणि NAT Gateway ने Private EC2 कसा access करायचा

मागचा chapter एका puzzle ने संपला, Puzzle: PHP on a private server: app server ला public IP नाही आणि internet कडे route नाही, म्हणून त्याला SSH करता येत नाही आणि sudo yum install php -y काहीच download करू शकत नाही. हा chapter दोन्ही भाग सोडवतो. आधी तुम्ही bastion host (jump server) मधून private server पर्यंत पोचता, key तुमच्या laptop वरच ठेवून. मग NAT gateway ने private server ला internet कडे एकाच दिशेचं दार देता, म्हणजे तो packages download करू शकतो पण बाहेरून कोणी त्याच्यापर्यंत पोचू शकत नाही. शेवटी पूर्ण layout दुसऱ्या Availability Zone मध्ये copy करता, म्हणजे एक AZ बंद पडला तरी application बंद पडत नाही.

या class मध्ये काय शिकणार

  • फक्त AMI ने puzzle का सुटत नाही
  • Bastion host (jump server) म्हणजे काय
  • Key copy न करता bastion मधून SSH
  • Bastion आणि private server साठी security groups
  • yum तरीही का fail होतं, आणि packages हाताने copy करणं का चालत नाही
  • NAT gateway काय करतो: बाहेर हो, आत नाही
  • NAT gateway सोबतचा private route table
  • Console मध्ये NAT gateway बनवणे
  • त्याचा खर्च
  • High availability: तोच layout दोन AZs मध्ये

1. दोन problems

App server private subnet 10.0.16.0/20 मध्ये आहे, उदा. 10.0.16.7 वर.

  1. Public IP नाही: तुमचा laptop त्याला SSH करू शकत नाही.
  2. Internet कडे route नाही: त्याच्या route table मध्ये फक्त 10.0.0.0/16 → local, म्हणून sudo yum install php -y package repos पर्यंत पोचत नाही.

Server private च राहायला हवा. म्हणून तुमच्यासाठी आत यायचा रस्ता, आणि server साठी बाहेर जायचा रस्ता हवा, बाकी सगळ्यांसाठी आत यायचा रस्ता न उघडता.

2. Idea 1: public मध्ये बनवा, AMI म्हणून copy करा

  1. Public subnet मध्ये एक server launch करा.
  2. तिथे sudo yum install php -y चालतं, कारण internet आहे.
  3. त्याचा AMI बनवा (What an AMI is).
  4. त्या AMI मधून private app server launch करा. तो PHP आधीच installed असलेला सुरू होतो.

का पुरत नाही: हे फक्त पहिल्या setup साठी चालतं. ज्या दिवशी php-fpm बंद पडेल किंवा private server वरचा log वाचायचा असेल, त्या दिवशी login करायला मार्गच नाही.

Classroom line

If some error comes up on it, how will you resolve it then?

Idea 1: public server वर PHP बनवा, AMI म्हणूनcopy करा Public dev server sudo yum install php -y चालतं: internet आहे AMI disk ची copy Private app server AMI मधून launch PHP आधीच installed पहिल्या setup साठी चालतं Server PHP सोबतच सुरू होतो. नंतर अडकतं Logs वाचायला किंवा php-fpm fix करायला login करता येत नाही.

Figure 1. Public dev server वर PHP install करा, AMI बनवा, त्यातून private server launch करा: पहिल्या setup ला PHP असतो, पण नंतर logs वाचायला किंवा php-fpm fix करायला login करता येत नाही.

3. Bastion host (jump server)

काय: public subnet मधला एक छोटा server, ज्याचं एकच काम: SSH साठी दार बनणं. तुम्ही त्याला SSH करता, आणि त्याच्यावरून private server ला. हा शब्द किल्ल्यांमधून आलाय: bastion म्हणजे भिंतीचा तो मजबूत भाग जो शत्रूसमोर असतो, म्हणून त्याच जागेवर सगळ्यात जास्त पहारा असतो.

  1. Laptop → SSH → bastion (public IP).
  2. Bastion → SSH → app server (private IP 10.0.16.7).

Private server ला अजूनही public IP नाही. Bastion त्याच्यापर्यंत local route ने पोचतो, कारण दोघं एकाच VPC मध्ये आहेत.

Classroom line

Using one server to get to another server is what we call a jump server.

आपल्या setup मध्ये public web server च bastion म्हणून वापरता येतो. Production मध्ये bastion हा वेगळा छोटा server असतो, ज्यावर दुसरं काहीच चालत नाही.

4. Key copy न करता bastion मधून SSH

keypair.pem bastion वर कधीच copy करू नका. Bastion internet समोर असतो; कोणी त्यात घुसला तर त्याला प्रत्येक server ची key मिळेल. Key तुमच्या laptop वरच राहते.

मार्ग 1: -J (ProxyJump) ने एकच command (Linux, macOS, किंवा OpenSSH असलेलं Windows PowerShell)

  1. Key तुमच्या SSH agent मध्ये load करा: ssh-add keypair.pem. Agent ला connect होत नाही असं म्हणालं तर आधी agent सुरू करा: Linux वर eval "$(ssh-agent -s)".
  2. एकाच command मध्ये jump:

    ssh -J ec2-user@<bastion-public-ip> ec2-user@10.0.16.7
    
  3. SSH आधी bastion ला connect होतो, आणि त्याच्यामधून 10.0.16.7 ला. दोन्ही logins तुमच्या laptop च्या agent मधली key वापरतात.

मार्ग 2: laptop वरच्या ~/.ssh/config मध्ये shortcut:

Host bastion
    HostName <bastion-public-ip>
    User ec2-user
    IdentityFile ~/keypair.pem
Host app
    HostName 10.0.16.7
    User ec2-user
    IdentityFile ~/keypair.pem
    ProxyJump bastion

आता फक्त ssh app पुरे.

मार्ग 3: agent forwarding ने हाताने hop

  1. ssh-add keypair.pem
  2. ssh -A ec2-user@<bastion-public-ip> (-A तुमचा agent पुढे देतो; काहीही copy होत नाही).
  3. Bastion वर: ssh ec2-user@10.0.16.7.

-J च वापरा: -A असताना तुम्ही logged in असेपर्यंत bastion चा admin तुमचा agent वापरू शकतो. ssh command चे basics Building the SSH command piece by piece मध्ये आहेत.

Security groups:

  1. Bastion SG: inbound SSH 22 फक्त My IP कडून.
  2. App server SG: inbound SSH 22 फक्त source = bastion SG (आणि आधीसारखं web SG कडून HTTP 80).

SSH शिवाय: AWS Systems Manager Session Manager console मधूनच server वर shell उघडतो, port 22 आणि bastion शिवाय; त्यासाठी server वर SSM agent आणि IAM role लागतो.

Bastion host: public server ला SSH, मग privateserver वर उडी तुमचा laptop keypair.pem इथेच राहतो ssh-add keypair.pem ssh -A ec2-user@<bastion-public-ip> 1. Laptop वरून bastion ला. -A तुमचा key agent पुढे देतो; .pem copyहोत नाही. VPC 10.0.0.0/16 Bastion host (public subnet) public IP SG: फक्त My IP कडून 22 [ec2-user@bastion ~]$ ssh ec2-user@10.0.16.7 2. Bastion वरून private IP ला. Key साठी laptop वरचा agent उत्तरदेतो. Private app server 10.0.16.7 SG: फक्त bastion SG कडून 22 ssh -J ec2-user@<bastion-public-ip> ec2-user@10.0.16.7 3. हेच दोन hops एका command मध्ये -J (ProxyJump) ने.

Figure 2. Animation: key laptop वरच (ssh-add); bastion ला ssh -A (फक्त My IP कडून 22), मग 10.0.16.7 ला ssh (फक्त bastion SG कडून 22); किंवा ssh -J ने दोन्ही hops एकदम.

5. आत गेलात, पण yum तरी fail

App server वर sudo yum install php -y चालवा. ते थांबून राहतं आणि मग timeout ने fail होतं. कारण तेच: private route table मध्ये internet कडे route नाही.

Laptop वर package download करून copy का नाही करायचं? Package म्हणजे एक file नसते:

  1. Program /usr/bin मध्ये जातो, settings /etc मध्ये, logs /var/log मध्ये, extensions /usr/lib64 मध्ये.
  2. त्याला दुसरे packages (dependencies) लागतात, आणि त्यांना परत आणखी.
  3. yum ते सगळे download करतो आणि प्रत्येक file तिच्या जागी ठेवतो. हाताने केलं तर काहीतरी राहणारच.

Classroom line

All of these together make one piece of software.

एक package = अनेक folders मध्ये अनेक files php package repo मधून /usr/bin/php program /etc/php.ini settings /etc/php-fpm.d/www.conf php-fpm pool /var/log/php-fpm/ logs /usr/lib64/php/modules/ extensions + php-common, php-cli ... dependencies काही files हाताने copy केल्या तर बाकीच्या आणि dependencies राहतात,म्हणून yum नेच download करायला हवं.

Figure 3. एक php package files /usr/bin, /etc, /etc/php-fpm.d, /var/log आणि /usr/lib64 मध्ये पसरवतो, आणि php-common, php-cli सारख्या dependencies आणतो. yum नेच download करायला हवं.

काय हवंय: server private च राहील, पण internet कडे बाहेर connections सुरू करू शकेल.

Classroom line

We don't want to make it public; it will stay private, and it still needs internet.

6. Idea: office चा extension phone

Office मधल्या desk phone चा विचार करा.

  1. तुमच्या extension ला direct number नाही. बाहेरचं कोणी तो dial करू शकत नाही.
  2. तुम्ही मात्र बाहेर call करू शकता. Call office exchange मधून जातो, ज्याचा एक बाहेरचा number आहे.
  3. ज्याला call केला तो उत्तर देतो, आणि उत्तर तुमच्या desk वर परत येतं.
  4. बाहेरच्या कुणाला तुमच्या extension ला call सुरू करायचा असेल, तर dial करायला number च नाही.

NAT gateway म्हणजे private servers साठी तेच exchange.

NAT म्हणजे office चा extension phone Office तुमचं extension direct number नाही Office exchange एक बाहेरचा number ↓ तुम्ही बाहेर call करता · ↑उत्तर परत येतं बाहेरचं जग ✗ बाहेरचे तुमच्या extension ला call करू शकत नाहीत Extension = private server Exchange = NAT gateway बाहेरचा number = त्याचा Elastic IP

Figure 4. तुमचं extension (private server) office exchange (NAT gateway) मधून त्याच्या एका बाहेरच्या number ने (Elastic IP) बाहेर call करतं; उत्तर परत येतं, पण बाहेरचे तुमच्या extension ला call करू शकत नाहीत.

7. NAT gateway काय करतो

NAT = Network Address Translation.

  1. NAT gateway तुम्ही public subnet मध्ये बनवता आणि त्याला Elastic IP देता.
  2. Private server internet कडे request पाठवतो. त्याचा route table ती NAT gateway कडे पाठवतो.
  3. NAT gateway private source IP (10.0.16.7) बदलून स्वतःचा Elastic IP लावतो आणि internet gateway मधून बाहेर पाठवतो.
  4. उत्तर Elastic IP वर परत येतं. NAT gateway ला connection लक्षात असतं आणि तो उत्तर 10.0.16.7 ला देतो.
  5. Internet वरून NAT gateway कडे सुरू केलेलं connection drop होतं. त्याच्यामधून कोणीही private server पर्यंत पोचू शकत नाही.

म्हणून private server ला स्वतःचा public IP कधीच लागत नाही.

ही managed service आहे: AWS ती चालवतो आणि scale करतो; ती तुम्ही सांभाळायचा EC2 instance नाही, आणि तिला security group नसतो (तिच्या subnet चा NACL मात्र लागू होतो). स्वतः करायचा पर्याय म्हणजे NAT instance, म्हणजे तुम्ही स्वतः configure आणि patch करायचा EC2 server.

Classroom line

If you need internet in a private subnet, what do you have to do? You have to use a NAT gateway.

NAT gateway: private server बाहेर जातो, आत कोणीयेत नाही VPC 10.0.0.0/16 Private subnet App server 10.0.16.7 · public IP नाही Public subnet NAT gateway + Elastic IP · AWS-managed 1. sudo yum install php -y: request 10.0.16.7 वरून NAT gatewayकडे जाते. NAT private source IP बदलून स्वतःचा Elastic IPलावतो आणि IGW मधून बाहेर पाठवतो. IGW VPC चं दार Package repo internet वर 2. Repo Elastic IP ला उत्तर देतो. NAT ला connection लक्षात असतं आणिउत्तर 10.0.16.7 ला परत देतो. Packages download होतात. ✗ 3. Internet वरचं कुणी Elastic IP ला स्वतःहून connection सुरूकरतं: NAT gateway ते drop करतो. App server private राहतो.

Figure 5. Animation: request 10.0.16.7 वरून निघते, NAT gateway स्वतःचा Elastic IP लावून IGW मधून पाठवतो; उत्तर 10.0.16.7 ला परत येतं; internet वरून सुरू केलेलं connection drop होतं.

8. Route tables

  1. Public route table (web, bastion, NAT gateway): 10.0.0.0/16 → local, 0.0.0.0/0 → igw-.... बदल नाही.
  2. Private route table (app, DB): 10.0.0.0/16 → local, आणि 0.0.0.0/0 → nat-... add करा.

Worked example: app server दोन packets पाठवतो.

  1. 10.0.32.10 वरच्या DB ला: दोन्ही routes match होतात, 10.0.0.0/16 हा 0.0.0.0/0 पेक्षा जास्त specific, म्हणून तो local राहतो.
  2. Internet वरच्या package repo ला: फक्त 0.0.0.0/0 match होतो, म्हणून तो NAT gateway कडे जातो.

लक्षात ठेवा: NAT gateway स्वतः public subnet मध्ये असतो, कारण internet gateway पर्यंत जायला त्याला public route table लागतो.

NAT gateway add केल्यावर route tables Public subnet (web, bastion, NAT gateway) public route table Destination Target 10.0.0.0/16 local 0.0.0.0/0 igw-0abc बदल नाही: internet traffic IGW कडे. Private subnets (app, DB) private route table Destination Target 10.0.0.0/16 local 0.0.0.0/0 nat-0def नवीन: internet traffic NAT gateway कडे. 10.0.x.x कडचं traffic 10.0.0.0/16 ला match होतं (जास्त specific) आणि localराहतं. बाकी सगळं 0.0.0.0/0 ला match होतं.

Figure 6. Public route table तसाच (0.0.0.0/0 igw-... कडे). Private route table ला 0.0.0.0/0 nat-... कडे मिळतो; 10.0.x.x कडचं traffic अजूनही जास्त specific local route ला match होतं.

9. Console मध्ये बनवा

Part A: NAT gateway

  1. VPC > NAT gateways > Create NAT gateway.
  2. Name my-nat. Subnet: public subnet web-a.
  3. Connectivity type: Public.
  4. Elastic IP allocation ID: Allocate Elastic IP वर click करा.
  5. Create NAT gateway. State Available दाखवेपर्यंत थांबा.

Part B: private route

  1. Route tables, app-b आणि db-c चा route table select करा (आपल्या VPC मध्ये main route table).
  2. Routes > Edit routes > Add route: Destination 0.0.0.0/0, Target NAT Gateway my-nat. Save changes.

Part C: private servers वर install (bastion मधून ssh -J ने login करा)

  1. App server:

    sudo yum install nginx php php-fpm php-mysqlnd -y
    sudo service php-fpm start
    sudo service nginx start
    
  2. DB server:

    sudo yum install mariadb105-server -y
    sudo service mariadb start
    
  3. आता downloads चालतात, आणि दोन्ही servers ना अजूनही public IP नाही. मागच्या chapter मधला setup, One public server: send .php to the app server, आता पूर्ण करता येतो.

या design बद्दल आणखी Bastion host (jump server) and NAT gateway मध्ये.

10. खर्च

  1. NAT gateway जोपर्यंत आहे तोपर्यंत तासाप्रमाणे, आणि तो process करतो त्या data च्या प्रत्येक GB प्रमाणे charge होतो.
  2. त्याचा Elastic IP हा public IPv4 address, त्यालाही तासाप्रमाणे charge.
  3. Lab नंतर: NAT gateway delete करा, Deleted दिसेपर्यंत थांबा, मग Elastic IPs > Release करा. 0.0.0.0/0 → NAT route पण काढा, नाहीतर तो blackhole दाखवतो.

11. High availability: दोन AZs

आतापर्यंत प्रत्येक tier एकाच AZ मध्ये आहे.

Classroom line

What if this very zone goes down?

त्या AZ मध्ये outage आला, तर त्यातला tier गेला, आणि पूर्ण application बंद. High availability म्हणजे layout दुसऱ्या AZ मध्ये copy करणं:

  1. ap-south-1a: web 10.0.0.0/20, app 10.0.16.0/20, DB 10.0.32.0/20.
  2. ap-south-1b: web 10.0.48.0/20, app 10.0.64.0/20, DB 10.0.80.0/20.
  3. एकूण सहा subnets, अजूनही 10.0.0.0/16 च्या आत.
  4. प्रत्येक AZ च्या public subnet मध्ये एक NAT gateway. प्रत्येक AZ चे private subnets असा private route table वापरतात जो 0.0.0.0/0 त्याच AZ मधल्या NAT gateway कडे पाठवतो, म्हणजे एक AZ fail झाला तरी दुसरा तुटत नाही.

दोन web servers मध्ये traffic कसं वाटायचं हे load balancer चं काम, Load balancing मध्ये.

High availability: तोच layout दोन AZs मध्ये VPC 10.0.0.0/16 ap-south-1a web 10.0.0.0/20 · NAT gateway या AZमध्ये app 10.0.16.0/20 DB 10.0.32.0/20 इथला app subnet 0.0.0.0/0 route करतो त्याच AZ मधल्या NATgateway कडे. ap-south-1b web 10.0.48.0/20 · NAT gateway या AZमध्ये app 10.0.64.0/20 DB 10.0.80.0/20 इथला app subnet 0.0.0.0/0 route करतो त्याच AZ मधल्या NATgateway कडे.

Figure 7. तेच web, app आणि DB subnets ap-south-1a (10.0.0.0/20, 10.0.16.0/20, 10.0.32.0/20) आणि ap-south-1b (10.0.48.0/20, 10.0.64.0/20, 10.0.80.0/20) मध्ये, प्रत्येक AZ मध्ये एक NAT gateway.

12. काही चुकलं तर

  1. ssh -J password मागतो किंवा "Permission denied (publickey)" म्हणतो: key agent मध्ये नाही. ssh-add keypair.pem चालवा, ssh-add -l ने check करा.
  2. 10.0.16.7 कडचा hop timeout होतो: app server च्या SG ने bastion च्या SG कडून 22 allow करायला हवं, आणि तुम्ही private IP वापरायला हवा.
  3. Private server वर yum अजूनही timeout: private route table मध्ये 0.0.0.0/0 → NAT route नाही, किंवा NAT gateway private subnet मध्ये आहे, किंवा तो अजून Available नाही.
  4. NAT gateway बरोबर subnet मध्ये आहे पण काहीच बाहेर जात नाही: public subnet च्या route table ने 0.0.0.0/0 internet gateway कडे पाठवायला हवं.
  5. Route "Blackhole" दाखवतो: त्याचा NAT gateway delete झालाय. Route काढा किंवा नवीन NAT gateway कडे वळवा.
  6. अनपेक्षित bill: NAT gateway किंवा न जोडलेला Elastic IP चालू राहिलाय.

Ravindra Bagale's Tip

Bastion कंटाळवाणा ठेवा: सगळ्यात छोटा instance type, फक्त तुमच्या IP वरून SSH, दुसरं काहीही installed नाही, आणि key कधीच त्याच्यावर नाही. ssh -J किंवा ProxyJump entry वापरा, म्हणजे दोन hops कधी टाईप करावे लागत नाहीत. आणि NAT gateway ला सतत चालू असलेल्या meter सारखं समजा: lab साठी बनवा, test करा, आणि त्याच दिवशी delete करून त्याचा Elastic IP release करा.

13. संपूर्ण class एका page वर

  1. Private server ला दोन problems: आत यायला मार्ग नाही (public IP नाही) आणि बाहेर जायला मार्ग नाही (internet route नाही).
  2. Public server चा AMI एकदा मदत करतो, पण नंतर login करता येत नाही.
  3. Bastion host: एक छोटा public server ज्यातून तुम्ही SSH करता. Bastion SG: My IP कडून 22. Private SG: bastion SG कडून 22.
  4. Key laptop वरच: ssh-add keypair.pem, मग ssh -J ec2-user@<bastion-public-ip> ec2-user@10.0.16.7 किंवा ~/.ssh/config मध्ये ProxyJump. .pem bastion वर कधीच copy करू नका.
  5. Session Manager हा SSH शिवायचा पर्याय.
  6. Packages अनेक folders मध्ये files पसरवतात आणि dependencies लागतात, म्हणून yum नेच download करायला हवं.
  7. NAT gateway: public subnet मध्ये Elastic IP सोबत; private servers बाहेर जातात, बाहेरून आलेली connections drop. AWS-managed, security group नाही.
  8. Private route table: 0.0.0.0/0 → nat-...; public route table मध्ये 0.0.0.0/0 → igw-... तसाच.
  9. तासाप्रमाणे आणि GB प्रमाणे charge; lab नंतर delete करा आणि Elastic IP release करा.
  10. High availability: तेच subnets दोन AZs मध्ये, प्रत्येक AZ ला एक NAT gateway.

14. घरी करून बघा

घरी करून बघा

Task 1: कागदावर

  1. Bastion, app server आणि DB server असलेला VPC काढा. प्रत्येक security group चा inbound SSH rule लिहा.
  2. NAT gateway add केल्यावर दोन्ही route tables लिहा. 10.0.32.10 साठी आणि internet address साठी कुठला route match होतो ते लिहा.

Task 2: console मध्ये

  1. मागच्या chapter चा VPC वापरून ssh-add करा आणि ssh -J ने app server पर्यंत पोचा.
  2. sudo yum install php -y चालवा आणि timeout होताना बघा.
  3. web-a मध्ये my-nat बनवा, route add करा, आणि परत चालवा.

Task 3: prove करा आणि clean up

  1. App server वरून curl ifconfig.me चालवा. तो private IP नाही, NAT gateway चा Elastic IP दाखवतो.
  2. NAT gateway delete करा, त्याचा Elastic IP release करा, आणि blackhole route काढा.

Recap

थोडक्यात

  1. Bastion host म्हणजे private servers मध्ये SSH साठीचं एकच पहारा असलेलं दार.
  2. Key तुमच्या laptop वरच: ssh-add आणि ssh -J.
  3. NAT gateway मुळे private servers internet कडे बाहेर जाऊ शकतात; बाहेरून आत काहीच येत नाही.
  4. NAT gateway public subnet मध्ये ठेवा आणि private route table चा 0.0.0.0/0 त्याच्याकडे वळवा.
  5. त्याला दर तासाला पैसे लागतात: lab नंतर delete करा.
  6. High availability साठी subnets आणि NAT gateway दुसऱ्या AZ मध्ये परत करा.

सराव Tasks

या scenario बद्दल

Vidarbha Cotton Mills हा नागपूर मधला वस्त्रोद्योग व्यवसाय आहे. Ganesh Wankhede त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 12

सोपं Route table बनवा

का: Route table subnet मधलं traffic कुठे जाईल ते ठरवतं.

काय करायचं: vpc-0a3af54c5adeadbee मध्ये route table बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

सोपं SSH key file सुरक्षित करा

का: इतर users वाचू शकणारी key file SSH वापरत नाही.

काय करायचं: vidarbhacotton-key.pem फक्त owner ला वाचता येईल असं करा (write नाही, इतरांना काहीच नाही).

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं EC2 server ला connect करा

का: Key file सह SSH हा Linux EC2 ला login करण्याचा standard मार्ग.

काय करायचं: vidarbhacotton-key.pem key वापरून 13.180.20.5 server वर ec2-user म्हणून login करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं SSH चा port

का: Security group rules ला योग्य port हवा.

काय करायचं: SSH साठी security group ने कोणता TCP port उघडावा?

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम Subnet route table शी जोडा

का: Associate करेपर्यंत subnet main route table वापरतो.

काय करायचं: Subnet subnet-00cb3bc54a5bbb1 ला route table rtb-00cb3bc54a5bbb22 शी associate करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Internet route जोडा

का: Route table 0.0.0.0/0 internet gateway ला पाठवत असेल तरच subnet "public".

काय करायचं: Route table rtb-00cb3bc54a5bbb22 मध्ये सगळं internet traffic (0.0.0.0/0) igw-0cb3bc54a5baa11 कडे पाठवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Public key दुसऱ्या server वर copy करा

का: यानंतर त्या server ला password शिवाय SSH करता येतं.

काय करायचं: तुमची public key 10.0.5.25 वरच्या ec2-user ला copy करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम SSH key pair बनवा

का: Servers मध्ये passwordless SSH साठी पहिल्या server वर key pair लागते.

काय करायचं: ed25519 प्रकारची नवी SSH key pair बनवा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Server वर file upload करा

का: scp SSH वरून files copy करतो, तोच key व user वापरतो.

काय करायचं: तुमच्या laptop वरून index.html ला 13.180.20.5 वरच्या /home/ec2-user/ मध्ये vidarbhacotton-key.pem वापरून upload करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड NAT gateway बनवा

का: Private servers updates download करायला NAT gateway (public subnet मधला) वापरतात.

काय करायचं: Public subnet subnet-00cb3bc54a5bbb1 मध्ये Elastic IP allocation eipalloc-0cb3bc54a5bdd44 वापरून NAT gateway बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Private traffic NAT मधून पाठवा

का: Private route table ने 0.0.0.0/0 NAT gateway ला पाठवावं, internet gateway ला नाही.

काय करायचं: Private route table rtb-00cb3bc54a5bbb22 मध्ये 0.0.0.0/0 NAT gateway nat-0b3bc54a5bcc33 कडे पाठवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड फक्त office मधून SSH allow करा

का: सगळ्यांना SSH उघडणं धोक्याचं. फक्त office IP (/32) allow करा.

काय करायचं: sg-00ba3ab5465a4c3b2 वर inbound TCP port 22 फक्त office IP 49.36.5.10 कडून allow करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

उजळणी card: Bastion host म्हणजे काय?. Private EC2 ला public IP नसतो. Laptop वरून थेट SSH होत नाही. Bastion (jump server) हा public subnet मधला छोटा server. त्याचं एकच काम: SSH चा दरवाजा. आधी bastion ला SSH, मग तिथून private IP ला. Private server वर port 22 फक्त bastion SG कडून allow करा. Bastion public IP 13.2.1.9. App server private IP 10.0.16.7. फक्त bastion तिथे पोचतो.
उजळणी card: Bastion host म्हणजे काय? · PNG download करा
उजळणी card: Bastion मधून SSH: -J. keypair.pem bastion वर copy करणं धोक्याचं. Bastion hack झाला तर key चोरीला जाते. -J (ProxyJump) ने SSH bastion मधून उडी मारतो. Key laptop वरच राहते. Key agent मध्ये load करा, मग एकाच command ने jump करा. Bastion 13.2.1.9, app 10.0.16.7:
उजळणी card: Bastion मधून SSH: -J · PNG download करा
उजळणी card: NAT gateway म्हणजे काय?. Private server ला yum install आणि updates साठी internet लागतंच. NAT gateway private servers ना internet कडे बाहेर जाऊ देतो. बाहेरून कोणी आत येऊ शकत नाही. PUBLIC subnet मध्ये Elastic IP सोबत बनवा. Private route table त्याच्याकडे point करा. App 10.0.16.7 वर sudo yum install php -y. Traffic NAT च्या Elastic IP मधून बाहेर जातं.
उजळणी card: NAT gateway म्हणजे काय? · PNG download करा
उजळणी card: NAT सोबत private route table. Private subnet ला फक्त local route असतो. Internet कडचे packets कुठे जाणार? Route table म्हणजे list: destination आणि target. 0.0.0.0/0 म्हणजे "बाकी सगळं". 0.0.0.0/0 add करा, target NAT gateway. इथे internet gateway कधीच नाही. Private route table:
उजळणी card: NAT सोबत private route table · PNG download करा
तुलना: Bastion host vs NAT gateway. Bastion host: Private servers कडे जाण्यासाठी SSH दरवाजा असलेला छोटा public EC2. NAT gateway: Private servers ना बाहेरचं internet देणारी managed AWS service.
तुलना: Bastion host vs NAT gateway · PNG download करा
तुलना: ssh -J (ProxyJump) vs ssh -A (agent forwarding). ssh -J (ProxyJump): एकाच command ने SSH bastion मधून private server ला जातो. ssh -A (agent forwarding): Laptop चा SSH agent bastion वर वापरता येतो.
तुलना: ssh -J (ProxyJump) vs ssh -A (agent forwarding) · PNG download करा
तुलना: One NAT gateway vs One NAT gateway per AZ. One NAT gateway: सगळे private subnets route करतात असा एकच NAT. One NAT gateway per AZ: प्रत्येक AZ चा स्वतःच्या public subnet मध्ये स्वतःचा NAT.
तुलना: One NAT gateway vs One NAT gateway per AZ · PNG download करा
मुलाखत card: Private subnet मधल्या EC2 ला SSH कसा करता?. Bastion host मधून: VPC मध्ये SSH चा एकमेव दरवाजा असलेला छोटा public server. Private server ला public IP नसतो, म्हणून तो internet ला उघडा नसतो. App SG वर 22 फक्त bastion SG कडून allow करा, मग -J ने jump.
मुलाखत card: Private subnet मधल्या EC2 ला SSH कसा करता? · PNG download करा
मुलाखत card: .pem key bastion वर copy का करू नये?. Bastion internet कडे तोंड करून असतो. VPC मधला सर्वात जास्त attack होणारा server. तो hack झाला तर key सगळे private servers उघडते. Key laptop वरच: ssh-add, मग ssh -J. Agent forwarding -A हा कमजोर पर्याय.
मुलाखत card: .pem key bastion वर copy का करू नये? · PNG download करा
मुलाखत card: Private EC2 वर yum install का चालत नाही, आणि fix कसा?. त्याच्या route table मध्ये फक्त local route, म्हणून package repos पर्यंत पोचत नाही. त्याला बाहेर जायला internet हवं, पण बाहेरून पोचता येऊ नये. Public subnet मध्ये NAT gateway बनवा, 0.0.0.0/0 त्याच्याकडे route करा.
मुलाखत card: Private EC2 वर yum install का चालत नाही, आणि fix कसा? · PNG download करा
मुलाखत card: NAT ला AZs मध्ये highly available कसं करता?. प्रत्येक AZ ला एक NAT gateway, त्या AZ च्या public subnet मध्ये. एकाच NAT चा AZ बंद पडला तर इतर AZs मधल्या private servers चं internet पण जातं. प्रत्येक private route table ला त्याच्याच AZ चा NAT द्या.
मुलाखत card: NAT ला AZs मध्ये highly available कसं करता? · PNG download करा

अजून cards: Ravi Sir's Cards.