Basic Amazon Web Services P2

Hôm nay mình sẽ tiếp tục trình bày với các bạn Phần 2 - bài viết về AWS cơ bản giành cho người mới bắt đầu.
Trong phần 1, mình đã hướng dẫn các bạn: Đăng kí tài khoản AWS, tạo user, tạo group trong IAM, bảo mật với MFA
Chi tiết các bạn có thể xem lại link bên dưới:

https://viblo.asia/p/basic-amazon-web-services-p1-ByEZkwXoZQ0

Tiếp theo phần 1, hôm nay mình sẽ mạn phép viết thêm phần 2.
Nội dung: Basic về VPC, Public subnet, Private subnet, Internet GateWay và NAT GateWay.
OK, chúng ta bắt đầu luôn nhé.

1. VPC là gì ?

Theo như mình học được thì VPC ( Amazon Virtual Private Cloud ) có thể hiểu đơn giản : Nó cũng cấp dãy network để ta làm việc với các resource của AWS.
Những khái niệm liên quan đến VPC các bạn có thể xem mô hình bên dưới đây.



Mô hình trên thì ta thấy có khá nhiều khái niệm: Internet GW, NAT GW, VPC Endpoint, VPC Peering, VPC Router, ....
Tuy nhiên vì kiến thức cũng hạn chế nên trong bài viết này mình chỉ đề cập đến một số thành phần của VPC thôi. Những thành phần cơ bản mà chúng ta hay dùng.

  • VPC: Tạo ra 1 dãy mạng để dùng cho các resource của aws.
  • Subnet: public subnet & private subnet.
    => Khi nào dùng public subnet, khi nào dùng private subnet ???
    • Subnet private với public giống nhau đều là mạng con của dãy mạng tạo từ VPC.
    • Public vs private khác nhau ở chỗ:
      =>> Public thì mình routing ra ngoài qua internet gateway. Khi làm thế này thì ở ngoài sẽ connect vào ngược lại được.
      + Ví dụ: ở ngoài internet ssh vào được EC2 (dùng public subnet). T/H này thường sẽ dùng cho frontend.

      =>> Private subnet thì mình routing ra ngoài qua NAT gateway + EIP. Ở ngoài sẽ không connect vào trong được.
      + Ví dụ: ở ngoài internet ssh không đến được EC2 (dùng private subnet). T/H này thường sẽ dùng cho backend.

  • Route table (Routing): Định tuyến để những ec2 thuộc subnet đó đi ra được internet.
  • Internet gateway: Cổng giao tiếp giữa mạng nội bộ và mạng internet.

Câu hỏi đặt ra:

  • nếu dùng private subnet ? mình không ssh vào được EC2 cho backend ? thì sao mình có thể làm việc được trên đó ?
    => Trong trường hợp này, có một giải pháp để bảo mật hơn đó là dùng thêm 1 con server trung gian, được gọi là bastion host.
    => Bastion host là một server trung gian - nó dùng public subnet.
    => Admin -> ssh vào bastion host -> Từ bastion ssh qua Backend.

Ok, lí thuyết là thế - bây giờ mình sẽ demo tạo VPC cho Public subnet trước.
Mô hình mình sẽ làm sẽ như thế này - các bạn xem để dể hình dung.



Giải thích một tí về mô hình:
Mình sẽ tiến hành tạo 1 VPC với:

  • Dãy network là: 10.0.0.0/16
  • Region US East (N.viginia)
  • Gồm 2 Avaible zone: us-east-1a, us-east-1b.
  • Sau đó tạo 2 subnet: Public subnet (giành cho web server) & private subnet (giành cho DB).
  • Rồi tiến hành NAT private subnet để network private có thể ra được google.


2. Tạo VPC

Sau khi login vào console aws, ta search trên thanh tìm kiếm từ khoá: VPC



Click "Create VPC" -> Sau đó đặt tên và chọn dãy network phù hợp, ở đây mình chọn là 10.0.0.0/16



Sau khi tạo xong, click vào Action, lựa chọn Edit DNS hostname.



Lựa chọn Enable, mục đích là khi tạo EC2 xong, DNS hostname sẽ tự sinh cho mình nhé.



Kết quả thành công sẽ như thế này.



3. Tạo subnet

Sau khi tạo VPC xong, ta tiến hành tạo subnet.
Click vào subnet -> Create



Đặt tên subnet, lựa chọn VPC (VPC ban đầu, ở trên ta đã tạo ấy) ,
Lựa chọn AZ ,
lựa chọn dãy network con (dãy mạng con nó phải nằm trong dãy mạng của VPC, tìm hiểu thêm về chia subnet nhé)



Kết quả OK sẽ như thế này



4. Tạo route table

Sau khi tạo subnet xong, ta tiến hành tạo route table

Đặt tên route table, lựa chọn VPC (VPC ban đầu, ở trên ta đã tạo đó =.="


Mình tính add luôn route, nhưng mà để khúc dưới - tạo xong internet gateway rồi add 1 lần luôn.

5. Tạo internet gateway

Sau khi tạo route table xong, ta tiến hành tạo internet gateway.



Đặt tên Internet GW



Attach VPC (VPC ban đầu, ở trên ta đã tạo đó =.="



Kết quả OK



6. Update Route Table

Nãy giờ mình chỉ có tạo VPC, Public Subnet, Route Table, Internet gateway.
Chừ quay lại phần Route Table, ta routing (định tuyến - tìm đường đi ..) cho nó một tí.



Tiến hành add public subnet, cái subnet ban nãy mình đã tạo ở bươc 3 ấy



Cũng đứng ở đây, ta qua tab Routes - Routing cho nó đi ra internet.



Route tất cả đi ra internet gateway.



7. Tạo Private Subnet

' Tạo thì cũng giống với việc tạo public subnet, các bạn xem lại bước 3 nhé.
Mình tạo sẽ như thế này,



Đặt tên và attach vào VPC,



Xong rồi thì qua phần route table để add vào.



Bước này quang trọng, điểm khác nhau giữa pritevate subnet với public subnet là gì ?
đó là phần NAT gateway, private subnet sẽ có NAT gateway.

8. Tạo NAT GateWay

Ta tiến hành tạo NAT GW



Trong phần Subnet ta lựa chọn public subnet nhé ( các bạn xem lại mô hình ở trên để hình dung dể hơn )



Tiến hành tạo thêm 1 EIP ( Elastic IP address ) .
Thêm một lưu ý nhỏ nữa. EIP vs Public có phần khác nhau nhé.
EIP là IP Public tĩnh, nó sẽ không thay đổi còn IP IP Public ngược lại - khi mình reboot EC2 có thể nó sẽ nhảy IP khác.
và AWS sẽ tính phí phần này khá cao. Các bạn làm lab xong thì remove nó nhanh nhanh



Sau khi tạo NAT GW + Tạo EIP, ta quay lại phần route table để routing cho nó.



Thế này nhé, Route 0.0.0.0/0 về NAT GW





Hôm nay chắc dừng bài viết tới đây thôi, tính viết thêm mà ngó có vẻ dài dài rồi.
Để giành phần 3 tới mình sẽ viết về ACL, SG, EC2 - cũng tiếp nối theo mô hình này luôn.
https://viblo.asia/p/basic-amazon-web-services-p3-maGK7429Zj2
Cảm ơn các bạn đã đọc bài viết,
Bài viết mình cũng còn khá sơ sài và basic, mấy anh, mấy bạn thấy phần nào không ổn comment trao đổi để tốt ưu hơn nào.
Thank you !

Nguồn Tham khảo,
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html
https://cuongquach.com/aws-vpc-la-gi.html
https://docs.amazonaws.cn/en_us/vpc/latest/userguide/what-is-amazon-vpc.html
https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html
https://www.youtube.com/watch?v=kB_EQGdOEkM