Tìm hiểu AWS VPC

  • September 23, 2022
  • 552

AWS VPC là gì?

Amazon Virtual Private Cloud (Amazon VPC) là dịch vụ cho phép khởi chạy các tài nguyên AWS trong mạng ảo cô lập theo logic mà bạn tự thiết lập.

Bạn có thể toàn quyền quyết định mạng ảo của mình từ việc chọn dải IP, tạo mạng con (Subnet), bảng định tuyến (route table), hay khả năng kết nối internet (Internet gateway, NAT)… VPC giúp bạn tạo các mạng con public(có thể ra vào internet), private không thể kết nối internet để đặt máy chủ database. Ngoài ra, bạn có thể hạn chế truy cập, từ chối truy cập từ địa chỉ IP nào đó, hoặc chỉ địa chỉ IP nào đó được phép truy cập vào hệ thống của bạn với Security groups và Network Access control list. Ngon quá phải không nào?

Các thành phần của AWS VPC

1 mạng ảo VPC có thể tưởng tượng như 1 trường học, trong trường học sẽ có các lớp học(subnet), đường đi đến lớp học(Router table), cổng trường(internet gateway, NAT), bảo vệ(Network access control list, security group). Các resouce trong các subnet(mạng ảo) thuộc một mạng ảo VPC, mặc định đều có thể truy cập đến nhau.

1. IPv4 CIDR

Khi tạo một VPC thông tin quan trọng nhất mà chúng ta cần thiết lập là dải IP mà VPC sử dụng(IPv4 CIDR). Bạn có thể chọn dải IP dựa vào công cụ tính toán network ip subnet calculator

2. Subnet

Subnet chia VPC thành những mạng con khác nhau. Sau khi tạo 1 VPC, bạn có thể thêm một hoặc nhiều subnet trong mỗi Availability Zone. Mỗi subnet phải nằm hoàn toàn trong 1 Availability Zone và không thể kéo dài tới các zone khác. Thường 1 VPC sẽ chia làm 3 subnet.

  • Public subnet: Các service thuộc subnet này có thể được truy cập từ internet và ra ngoài internet thoải mái qua internet gateway. Nơi chứa server baston, config load balancer...
  • Protected subnet: Các service thuộc subnet này chỉ có thể đi ra internet qua NAT Gateway và từ internet không thể truy cập vào được. Nơi chứa các server application(laravel)
  • Private subnet: Các service thuộc subnet này không có mạng, không thể truy cập ra,vào với internet. Nơi chứa database, redis

3. Router table

Là bảng định tuyến, bao gồm một tập hợp các rule (được gọi là route), được sử dụng để xác định đường đi, nơi đến của các gói tin từ mạng con hay gateway. Mỗi subnet trong VPC của bạn sẽ được liên kết với route table, route table này sẽ quản lý đường đi của các gói tin trong subnet. Một subnet chỉ có thể liên kế với 1 route table tại 1 thời điểm, 1 route table có thể có nhiều subnet

4. Internet gateway

Internet gateway(IG) là một service free của VPC. Nó được attached vào VPC, cho phép VPC truy cập 2 chiều vào ra với internet. Để tạo 1 Public Subnet thì VPC và route table của subnet cần được attached internet gateway. Không có internet gateway từ internet không thể truy cập vào các dịch vụ bên trong mạng ảo VPC.

5. NAT gateways

NAT Gateways cho phép subnet được quyền truy cập ra ngoài internet nhưng các truy cập từ internet vào subnet thì không thể. NAT chỉ cho phép truy cập 1 chiều ra(outbound). NAT không free, và mất phí nên các bạn cân nhắc khi sử dụng NAT. NAT giúp máy chủ của bạn ở subnet protected có thể call API từ 1 service bên ngoài hoặc cần cài đặt, cặp nhật packagist.

6. Network Access Control Lists

Network Access Control Lists (NACL) là một lớp bảo mật cho VPC, nó như một firewall điều khiển truy cập vào và ra của một hay nhiều subnet. Nó có thể cho phép hoặc chặn truy cập từ 1 IP nào đó đến subnet.

7. Security Group

Security Group(SG) cho phép resource được phép truy cập từ IP và port nào? Security Group có 2 bảng cấu hình là inbound và outbound. Inbound cấu hình cho phép truy cập từ internet vào resource. Outbound cấu hình cho phép truy cập từ resouce ra ngoài. Default, outbound của SG mở tất cả. Nó chỉ có thể cấu hình cho phép truy cập, không thể cấu hình chặn truy cập.

8. Elastic IP

Elastic IP là dịch vụ cung cấp IP tĩnh cho resource AWS. Tại sao lại cần Elastic IP? Ví dụ khi bạn sử dụng dịch vụ EC2, EC2 cấp 1 IP V4 cho instance, nhưng nếu bạn stop instance và start lại, aws sẽ cấp cho instance 1 IP v4 mới. Nếu ứng dụng của bạn đặt lên đây thì thật là 1 rủi ro phải không? Elastic IP giải quyết cho bạn vấn đề này. Ngoài ra, khi bạn có thay đổi resource gắn Elastic IP một cách vô cùng linh hoạt(chuyển instance) Mặc định Elastic IP là miễn phí, bạn chỉ phải trả tiền trên resource bạn sử dụng với Elastic IP. Nhưng nếu bạn không gắn Elastic IP cho 1 resource nào, thì AWS sẽ charge tiền của bạn kha khá đó. AWS muốn tránh việc lãng phí IP đó. Nếu ai cũng giữ cho mình 1 vài Elastic IP thì … không ổn phải không nào.

Create 1 VPC demo

Tạo 1 VPC có 3 subnet public, protected và private. Sau đó tạo EC2 trên các subnet để test.

1. Create VPC

Tạo VPC có tên demo-dev-vpc, sử dụng mạng lớp B. IPV4 CIDR: 172.17.0.0/16
Create aws vpc

2. Create subnet

Tạo 1 public subnet chọn availabilite zone us-east-1a. IPV4 CIDR: 172.17.1.0/24 với ip này bạn có thể tạo 245 ip trong subnet này
Create public subnet aws vpc
Khi chạy dự án thực tế cần tạo nhiều subnet trên các zone khác nhau. VD tạo thêm demo-public-sn-1b có dải mạng 172.17.2.0/24 trên zone us-east-1b.

Tạo 1 protected subnet chọn availabilite zone us-east-1a.
Protected subnet

Tạo 1 private subnet chọn availabilite zone us-east-1a.
Private subnet
Chú ý: Mỗi subnet phải thuộc 1 dải mạng khác nhau, không thể chia nhiều subnet trên cùng 1 dải mạng. Cần tạo nhiều subnet trên các zone khác nhau.

3. Create route table

Tạo 3 route table cho sau đó liên kết các subnet tương ứng vào mỗi loại route table
Route table public
Liên kết subnet với route table
route table association subnet
Các route table khác làm tương tự

4. Create internet gateway

Muốn cho VPC có thể truy cập mạng 2 chiều cần tạo IG
Create internet gateway
Attach cho VPC
Attach to vpc
Tiếp theo là thêm IG cho public subnet
Add IG to public subnet

5. Create NAT gateway

Tạo NAT gatway cho protected subnet. NAT giúp các resource trong protected subnet truy cập được 1 chiều ra ngoài internet.
Create NAT gateway
NAT sẽ được tạo xong sau 1 vài phút
Created nat
Như vậy là chúng ta đã tạo xong 1 VPC hoàn chỉnh. Giờ các bạn hãy tạo ec2 trên các subnet của VPC vừa tạo để test nhé.

  • Các EC2 trong tất cả các subnet đều có thể ssh đến nhau
  • Chỉ có EC2 thuộc public subnet mới được truy cập 2 chiều ra, vào internet
  • EC2 thuộc protected subnet không thể truy cập từ internet vào, nhưng có thể truy cập từ EC2 ra ngoài internet, bạn thử update linux để kiểm chứng (yum update)...
  • Các EC2 trong private subnet không thể truy cập internet.

Lưu ý: Muốn từ internet truy cập được vào 1 resource aws, thì resourse đó phải thuộc public subnet. Khi test xong thì xoá hết các dịch vụ đi để tránh mất phí. Thanks you for reading...