AWS - Virtual Private Cloud
CIDR
CIDR Stand for Classless Inter-Domain Routing - a method for allocating IP addresses.
Sử dụng trong Security Groups rules và AWS networking
A CIDR gồm 2 thành phần dưới dạng <Base IP>/<Subnet Mask>:
Base IP
Subnet Mask
Ví dụ:
192.168.1.0/24
Base IP: 192.168.1.0
Subnet Mask: /24
24 bit đầu là phần mạng
còn lại là host
Số IP = 2^(32-SubnetMask) = 2^8
IP CALCULATOR → https://www.site24x7.com/tools/ipv4-subnetcalculator.html
Private IP
Là các địa chỉ IP được sử dụng trong mạng nội bộ, không thể truy cập trực tiếp từ Internet.
Dải địa chỉ Private IP (IPv4):
10.0.0.0/8: 10.0.0.0 - 10.255.255.255172.16.0.0/12: 172.16.0.0 - 172.31.255.255192.168.0.0/16: 192.168.0.0 - 192.168.255.255
Public IP
Là các địa chỉ IP duy nhất trên toàn cầu, có thể truy cập trực tiếp từ Internet.
Dải địa chỉ còn lại ngoại trừ Private IP
What Is an AWS VPC?
Amazon Virtual Private Cloud (Amazon VPC) là mạng ảo trên AWS cloud mà chúng ta có toàn quyền tự do thiết lập các tài nguyên, Subnet, dãi IP,… Chúng ta có thể sử dụng cả IPv4 và IPv6 để truy cập an toàn và dễ dàng vào tài nguyên và ứng dụng trong VPC.
VPC nằm trong duy nhất 1 region. Khi tạo VPC bắt buộc chỉ định 1 IPv4 CIDR và có thể tuỳ chọn có hoặc không IPv6 CIDR.
Hiện tại, giới hạn là 5 VPC mỗi region mỗi AWS Account.
Min Size /28 (16 IP)
Max Size /16 (65536 IP)
Mục đích chính của VPC thường là để tách biệt các môi trường khác nhau (Prod, Dev, Test)
Subnet
AWS cho phép tạo nhiều VPC và có thể chia VPC thành các mạng con.
Các Subnet nằm trong 1 Availability Zone cụ thể.
Khi tạo subnet, chỉ định CIDR là tập con của VPC CIDR.
Mỗi subnet, AWS sẽ giữ lại 5 IP (4 IP đầu và 1 IP cuối). Ví dụ với 10.10.1.0/24:
10.10.1.0 - Địa chỉ mạng
10.10.1.1 - IP cho VPC router
10.10.1.2 - IP cho DNS
10.10.1.3 - giữ lại cho sử dụng trong tương lai
10.10.1.255 - Network Broadcast Address. AWS không hỗ trợ broadcast trong VPC, vì vậy địa chỉ này bị giữ lại
Truy cập Internet
Để truy cập ra Internet từ Public Subnet (Ví dụ từ EC2) ta cần cấu hình một số thứ sau đây:
Security Group: firewall của EC2
NACL (Network Access Control List): Các rule bảo mật của subnet
Internet Gateway gắn vào VPC để cho phép ra ngoài
Route Table: hướng dẫn đường đi ra thông qua IGW
Để truy cập từ Private subnet
Internet Gateway
AWS Internet Gateway là một tính năng cung cấp bởi Amazon Web Services (AWS) để kết nối mạng riêng ảo (VPC) trong AWS với internet. Nó cho phép các tài nguyên trong VPC có thể truy cập vào các dịch vụ trên internet và cũng cho phép các dịch vụ trên internet có thể truy cập vào các tài nguyên trong VPC.

Route Table
Route Table hay còn gọi là bảng định tuyến, cung cấp hướng dẫn định tuyến và được gán vào các Subnets. Ví dụ khi bạn tạo VPC với lớp mạng 10.10.0.0/16, cùng 2 subnet 10.10.1.0/24,10.10.2.0/24 thì mỗi subnets mặc định sẽ được gán 1 default route table.
Bên trong route table sẽ có route entry destination:10.10.0.0/16 target:local. Route entry này thể hiện các tài nguyên tạo ra trong cùng 1 VPC có thể kết nối với nhau.

Với entry destination:0.0.0.0/0 target:igw-*, Route entry này chỉ ra ngoài việc đi tới 10.10.0.0/16 thì đi tới các địa chỉ còn lại sẽ thông qua Internet Gateway. Lúc này sẽ có thể đi ra bên ngoài thông qua Internet Gateway.
Bastion Host
Bastion Host là kỹ thuật giúp ta kết nối SSH một cách bảo mật vào các server nằm trong private subnet không có public IP.
Bối cảnh là bạn có private subnet chứa các private server, các private server này không thể truy cập từ ngoài internet và chúng cũng không có public IP. Bạn cần một phương pháp để kết nối SSH vào các server đó một cách bảo mật nhất.
Một trong những cách làm là sử dụng Bastion Host, bastion host là một server nằm trong public subnet, nhận kết nối SSH từ bên ngoài và làm trung gian kết nối với các server trong private subnet:

Cách thực hiện
# thêm key
ssh-add "key.pem"
# kết nối vào bastion host và forward key
ssh -A ec2-user@xxx.xxx.xxx.xxx
# kết nối vào private host từ bastion host
ssh -A ec2-user@xxx.xxx.xxx.xxx
NAT Instances (Deprecated)
NAT Gateways
NAT Gateway (Network Address Translation Gateway) là một dịch vụ mạng cho phép các tài nguyên trong một mạng riêng (private subnet) truy cập ra ngoài internet (hoặc các dịch vụ khác ngoài VPC), mà không cho phép lưu lượng từ bên ngoài truy cập ngược lại vào tài nguyên đó.
NACL & Security Groups
So sánh
| Security Group | NACL |
| Firewall mức instance | Firewall mức subnet |
| stateful | stateless |
| Permit | Permit/Deny |
| Đọc hêt rule → có Permit hay không | Đọc tuần tự gặp thoả thì xác định có Permit hay không luôn |
Ví dụ minh họa
1️⃣ Security Group
Giả sử bạn có Security Group với các inbound rules:
| Rule | Protocol | Port | Source | Action |
| 1 | TCP | 22 | 0.0.0.0/0 | ALLOW |
| 2 | TCP | 80 | 0.0.0.0/0 | ALLOW |
| 3 | TCP | 443 | 0.0.0.0/0 | ALLOW |
📌 Cách hoạt động của SG:
Nếu có một request SSH (port 22) → kiểm tra tất cả các rules và thấy có ALLOW → cho phép.
Nếu có request HTTP (port 80) → kiểm tra tất cả rules và thấy có ALLOW → cho phép.
Nếu có request vào port 3306 (MySQL) → kiểm tra tất cả rules nhưng không có ALLOW → bị chặn.
✅ Security Group luôn kiểm tra tất cả rules trước khi quyết định.
2️⃣ Network ACL
Giả sử bạn có NACL với các inbound rules:
| Rule # | Protocol | Port | Source | Action |
| 100 | TCP | 22 | 0.0.0.0/0 | ALLOW |
| 200 | TCP | 80 | 0.0.0.0/0 | DENY |
| 300 | TCP | 80 | 0.0.0.0/0 | ALLOW |
| 400 | TCP | 443 | 0.0.0.0/0 | ALLOW |
📌 Cách hoạt động của NACL:
Nếu có request SSH (port 22) → kiểm tra rule #100 (ALLOW) → cho phép ngay, không cần kiểm tra tiếp.
Nếu có request HTTP (port 80) → kiểm tra rule #200 (DENY) → bị chặn ngay, dù có rule #300 (ALLOW) bên dưới.
Nếu có request HTTPS (port 443) → kiểm tra rule #400 (ALLOW) → cho phép.
❌ NACL kiểm tra theo thứ tự và dừng ngay khi gặp rule đầu tiên khớp với traffic, kể cả nếu có rule ALLOW bên dưới.
Tóm lại
Security Group: Luôn kiểm tra tất cả rules và cho phép nếu có ít nhất một rule ALLOW.
NACL: Kiểm tra theo thứ tự rule number và dừng ngay khi gặp rule khớp đầu tiên.
Vì vậy, nếu bạn đặt một rule DENY sớm trong NACL, nó sẽ ngăn traffic, ngay cả khi có rule ALLOW bên dưới.
Stateful vs Stateless Firewalls
Security Group có tính chất stateful
NACL có tính chất stateless
stateful: khi định nghĩa chiều đi vào sẽ có thể ghi nhớ và cho đi ra
stateless: phải định nghĩa 2 chiều nếu muốn đi ra và vào.
VPC Peering
AWS Backbone là mạng lưới toàn cầu được xây dựng và vận hành bởi Amazon Web Services (AWS) để cung cấp hạ tầng mạng tốc độ cao, độ trễ thấp và đáng tin cậy. Đây là mạng lõi của AWS kết nối các trung tâm dữ liệu và Region AWS trên toàn thế giới.
VPC Peering (Virtual Private Cloud Peering) là một tính năng của AWS cho phép kết nối trực tiếp hai VPC (Virtual Private Cloud) với nhau, giúp các tài nguyên trong hai VPC có thể giao tiếp mà không cần đi qua Internet.
Đặc điểm chính của VPC Peering:
Kết nối trực tiếp: Giao tiếp qua hạ tầng AWS Backbone, không sử dụng Internet công cộng.
Bảo mật: Giao tiếp giữa các VPC được mã hóa và an toàn.
Không cần phần cứng: Không yêu cầu cài đặt thiết bị hoặc cấu hình phức tạp.
Lưu ý:
- VPC Peering không hỗ trợ truyền tải qua trung gian (transitive routing). Nếu bạn cần kết nối nhiều VPC một cách phức tạp, bạn nên sử dụng AWS Transit Gateway.
- Hai VPC cần có không gian địa chỉ IP không bị trùng lặp để tránh xung đột.
