0

AWS VPC là gì? Hiểu như xây nhà trong cloud

Chào mừng bạn đến với thế giới của Amazon Web Services (AWS)! Một trong những khái niệm quan trọng và nền tảng nhất khi làm việc với AWS là Virtual Private Cloud (VPC).

Hãy tưởng tượng bạn đang xây dựng một thành phố riêng cho mình, nơi bạn có thể kiểm soát hoàn toàn mọi thứ: đường xá, khu dân cư, hệ thống an ninh, và cách mọi người di chuyển. VPC chính là "thành phố" đó, nhưng ở trên đám mây.

Bài viết này sẽ hướng dẫn bạn từ những khái niệm cơ bản nhất đến cách các thành phần của một VPC liên kết với nhau để tạo nên một mạng lưới an toàn và hiệu quả cho các ứng dụng của bạn.


1. Các Khái Niệm Cơ Bản Trong VPC

Hãy bắt đầu bằng cách tìm hiểu về các thành phần cốt lõi của một VPC:

  • VPC (Virtual Private Cloud): Đây là "thành phố" của bạn. Nó là một mạng lưới riêng biệt trên AWS mà chỉ bạn mới có thể truy cập và quản lý. Bạn có thể định nghĩa dải địa chỉ IP cho VPC của mình bằng cách sử dụng CIDR.

    👉 Ví dụ:
    Bạn tạo một VPC cho hệ thống e-commerce của mình.
    Toàn bộ server như backend, database, cache… đều nằm trong “thành phố” này và không ai bên ngoài truy cập được nếu bạn không cho phép.

  • CIDR (Classless Inter-Domain Routing): Hãy tưởng tượng CIDR như là một dãy số điện thoại hoặc một danh sách địa chỉ nhà. Nó định nghĩa phạm vi địa chỉ IP mà bạn có thể sử dụng trong VPC của mình. Ví dụ, 10.0.0.0/16 là một dải CIDR phổ biến. (Tool tính toán dải CIDR: https://www.ipaddressguide.com/cidr)

    👉 Ví dụ:

    • CIDR 10.0.0.0/16 → bạn có khoảng 65,536 IP (từ 10.0.0.0 đến 10.0.255.255)
    • Giống như bạn có nguyên một khu đất lớn để chia nhỏ ra xây nhà
  • Subnets (Mạng con): Tương tự như việc bạn chia thành phố thành các quận, bạn có thể chia VPC của mình thành các Subnets. Mỗi Subnet nằm trong một Availability Zone (AZ) khác nhau để đảm bảo tính sẵn sàng cao. Bạn cũng định nghĩa một dải CIDR cho mỗi Subnet.

    👉 Ví dụ: Bạn chia VPC thành 2 subnet:

    • 10.0.1.0/24 → Public subnet (chứa web server)
    • 10.0.2.0/24 → Private subnet (chứa database)
      ➡️ Web server có thể truy cập Internet
      ➡️ Database thì không exposed ra ngoài → an toàn hơn
  • Internet Gateway (IGW): Đây là cửa ngõ duy nhất để "thành phố" của bạn kết nối với "thế giới bên ngoài" (Internet). Internet Gateway cho phép các tài nguyên trong VPC của bạn (như EC2 instances) truy cập Internet và ngược lại.

    👉 Ví dụ:
    Bạn có một EC2 chạy web app:

    • Nếu gắn IGW + route đúng → user có thể truy cập website từ Internet
    • Nếu không có IGW → server đó giống như bị “cách ly”, chỉ dùng nội bộ
  • Route Tables (Bảng định tuyến): Hãy tưởng tượng đây là các biển báo giao thông trong thành phố của bạn. Route Tables hướng dẫn lưu lượng mạng di chuyển trong VPC của bạn, bao gồm cả việc hướng dẫn lưu lượng đến Internet Gateway.

    👉 Ví dụ:
    Một route table đơn giản:

    Destination Target
    10.0.0.0/16 local
    0.0.0.0/0 IGW

2. Các Thành Phần Nâng Cao Và Bảo Mật

Bây giờ bạn đã có một "thành phố" cơ bản, hãy thêm các thành phần nâng cao và bảo mật hơn:

  • NAT Gateway (Network Address Translation): Đây là một "cánh cửa một chiều" cho phép các tài nguyên trong các "khu dân cư riêng tư" (Private Subnets) của bạn truy cập Internet (ví dụ: để cập nhật phần mềm), nhưng không cho phép Internet truy cập trực tiếp vào chúng. NAT Gateway được quản lý bởi AWS, đảm bảo tính sẵn sàng và khả năng mở rộng.

    👉 Ví dụ:
    Bạn có một server backend trong private subnet:

    • Server cần:
      • apt update
      • gọi API bên thứ 3 (Stripe, Firebase,…)
        ➡️ Nếu không có NAT Gateway → không ra Internet được
        ➡️ Nếu có NAT Gateway:
        • Server vẫn không bị truy cập từ Internet
        • Nhưng vẫn ra ngoài được để:
          • tải package
          • call API
  • Bastion Host: Tưởng tượng đây là một "ngôi nhà gác" nằm ở một "khu vực công cộng" (Public Subnet). Bạn có thể kết nối vào Bastion Host bằng SSH (Secure Shell) và từ đó, bạn có thể truy cập vào các tài nguyên trong Private Subnets. Điều này giúp bảo mật hơn vì bạn không mở trực tiếp truy cập SSH từ Internet vào Private Subnets.

    👉 Ví dụ:
    Bạn có database trong private subnet:
    ❌ Không thể SSH trực tiếp từ máy bạn → DB (để đảm bảo security)
    ✅ Cách đúng:

        # Bước 1: SSH vào bastion
        ssh ec2-user@bastion-public-ip
    
        # Bước 2: từ bastion SSH vào private server
        ssh ec2-user@private-ip
    

    📌 Lợi ích:

    • Chỉ cần mở 1 cổng SSH duy nhất (trên bastion)
    • Các server private hoàn toàn không exposed ra Internet
  • NACL (Network Access Control List): Đây là một "lực lượng an ninh" stateless (không theo dõi trạng thái) hoạt động ở cấp độ Subnet. Bạn có thể định nghĩa các quy tắc để cho phép hoặc chặn lưu lượng mạng đi vào và đi ra khỏi mỗi Subnet. Đừng quên mở các Ephemeral Ports cho NACL!

    👉 Ví dụ:
    Bạn cấu hình NACL cho public subnet:

    • Inbound rules:
      • Allow port 80 (HTTP)
      • Allow port 443 (HTTPS)
    • Outbound rules:
      • Allow port 1024–65535 (Ephemeral ports)

    📌 Tại sao cần Ephemeral Ports?
    Vì khi client request:

    • Client → Server: port 80
    • Server → Client: response qua port random (1024+)
      ➡️ Nếu không mở outbound này → request bị fail

    📌 Điểm quan trọng:

    • NACL = stateless
    • Phải cấu hình cả inbound + outbound
  • Security Groups: Đây là một "lực lượng an ninh" stateful (theo dõi trạng thái) hoạt động ở cấp độ EC2 instance. Bạn có thể định nghĩa các quy tắc để cho phép lưu lượng mạng cụ thể đến các EC2 instances của mình. Khác với NACL, Security Groups "nhớ" các kết nối đã được thiết lập, vì vậy bạn chỉ cần định nghĩa quy tắc cho một chiều.

    👉 Ví dụ:
    Security Group cho Web Server:

    • Inbound:
      • Allow 80 (HTTP) từ 0.0.0.0/0
      • Allow 443 (HTTPS) từ 0.0.0.0/0

    ➡️ Không cần cấu hình outbound gì cả
    ➡️ Vì SG là stateful → response tự động được phép

    So sánh nhanh giữa NACLSecurity Groups:

    NACL Security Group
    Level Subnet EC2 Instance
    State Stateless Stateful
    Rule Allow + Deny Chỉ Allow
    Config Inbound + Outbound Chỉ cần 1 chiều
    Use case Control tổng thể subnet Control chi tiết từng server

3. Kết Nối Và Mở Rộng VPC

VPC của bạn không phải là một "hòn đảo" cô độc. Bạn có thể kết nối nó với các VPC khác và với các dịch vụ AWS khác:

  • VPC Peering: Giống như việc bạn xây dựng một con đường kết nối hai thành phố với nhau. VPC Peering cho phép bạn kết nối hai VPC với nhau để lưu lượng mạng có thể di chuyển trực tiếp giữa chúng. Điều kiện là dải CIDR của hai VPC không được chồng lấn nhau.

    👉 Ví dụ:
    Bạn có 2 VPC:

    • VPC A: chứa backend service
    • VPC B: chứa data service (Redis, DB)

    ➡️ Bạn tạo VPC Peering:

    • Backend (VPC A) gọi DB (VPC B) qua private IP
    • Không cần đi Internet → nhanh hơn + an toàn hơn

    📌 Lưu ý quan trọng:

    • CIDR không được trùng nhau
    • Không hỗ trợ "bắc cầu" (transitive) (A ↔ B, B ↔ C ≠ A ↔ C)
  • VPC Endpoints: Cho phép bạn truy cập một cách riêng tư vào các dịch vụ AWS (như S3, DynamoDB) mà không cần phải đi qua Internet Gateway hay NAT Gateway. Điều này giúp tăng cường bảo mật và giảm chi phí.

    👉 Ví dụ:
    App của bạn trong private subnet cần đọc file từ S3:
    ❌ Không có endpoint: Phải đi qua NAT Gateway → tốn tiền + kém secure
    ✅ Có VPC Endpoint: Đi trực tiếp nội bộ AWS network

    ➡️ Lợi ích:

    • Không cần NAT Gateway → giảm cost
    • Traffic không ra Internet → an toàn hơn

    📌 Use case phổ biến:

    • S3 (log, upload file)
    • DynamoDB
    • Secrets Manager
  • Transit Gateway: Nếu bạn có nhiều VPC và cần kết nối chúng lại với nhau, Transit Gateway là một "nút giao thông" tập trung. Nó cho phép bạn kết nối hàng trăm VPC và các mạng on-premise khác một cách dễ dàng và hiệu quả hơn VPC Peering.

    👉 Ví dụ:
    Bạn có hệ thống lớn:

    • VPC A: User service
    • VPC B: Payment
    • VPC C: Logging
    • VPC D: AI service

    ❌ Nếu dùng VPC Peering: → phải tạo rất nhiều connection (mesh network 😵‍💫)

    ✅ Dùng Transit Gateway:

                TGW
              / | | \ 
            A   B C   D
    

    ➡️ Mỗi VPC chỉ cần connect vào TGW
    ➡️ Dễ quản lý, scale tốt

    📌 Hiểu đơn giản:

    Transit Gateway = Router trung tâm của AWS network
    
  • Direct Connect (DX): Tưởng tượng đây là một "đường ống riêng" kết nối mạng lưới của công ty bạn trực tiếp với AWS. Direct Connect cung cấp một kết nối mạng ổn định và tốc độ cao, giúp bạn truyền tải dữ liệu giữa môi trường on-premise và AWS hiệu quả hơn.

    👉 Ví dụ:

    Công ty bạn có:

    • Data center on-premise
    • Hệ thống ERP nội bộ

    Bạn cần sync dữ liệu lên AWS:

    • ❌ Qua Internet:
      • latency cao
      • không ổn định
    • ✅ Qua Direct Connect:
      • tốc độ cao
      • ổn định
      • bảo mật hơn

    📌 Use case:

    • Ngân hàng
    • Doanh nghiệp lớn
    • Data pipeline lớn (TB/day)
  • Site-to-Site VPN: Cung cấp một kết nối VPN an toàn giữa mạng lưới của công ty bạn và VPC của bạn qua Internet. Nó bao gồm một Customer Gateway ở phía công ty và một Virtual Private Gateway ở phía VPC.

    👉 Ví dụ:
    Bạn có văn phòng công ty:

    • Muốn dev truy cập DB trên AWS

    ➡️ Setup:

    • Customer Gateway (ở công ty)
    • Virtual Private Gateway (AWS)

    ➡️ Kết quả:
    Nhân viên công ty truy cập AWS như mạng nội bộ

    📌 So với Direct Connect:

    • Rẻ hơn
    • Dễ setup hơn
    • Nhưng latency cao hơn
  • AWS VPN CloudHub: Nếu bạn có nhiều địa điểm cần kết nối với AWS bằng VPN, VPN CloudHub hoạt động như một "trung tâm" (hub) để kết nối các địa điểm đó lại với nhau.

    👉 Ví dụ:
    Công ty bạn có:

    • Office HCM
    • Office Hà Nội
    • Office Singapore

    ➡️ Mỗi office connect VPN vào AWS:

        HCM ----\
        HN  ----- AWS (CloudHub)
        SG  ----/
    

    ➡️ Các office có thể:

    • Kết nối với AWS
    • Kết nối với nhau luôn

    📌 Hiểu đơn giản:

    AWS đóng vai trò như "hub mạng toàn cầu"
    

4. Các Công Cụ Giám Sát Và Quản Lý

Cuối cùng, hãy trang bị cho "thành phố" của bạn các công cụ để giám sát và quản lý:

  • VPC Flow Logs: Giống như một hệ thống camera giám sát, VPC Flow Logs ghi lại thông tin về lưu lượng mạng đi vào và đi ra khỏi VPC, Subnet, hoặc ENI (Elastic Network Interface). Điều này giúp bạn xác định các cuộc tấn công, phân tích hiệu suất mạng và tuân thủ các quy định bảo mật. Bạn có thể phân tích log bằng Athena hoặc CloudWatch Logs Insights.

    👉 Ví dụ:

    • Bạn có một EC2 trong private subnet bị lỗi không gọi được API ngoài:
      • ➡️ Bạn bật VPC Flow Logs và thấy:
        • Nhiều request bị REJECT
        • Port bị block (ví dụ: 443)
      • ➡️ Từ đó bạn phát hiện:
        • Security Group hoặc NACL config sai

    👉 Ví dụ khác (security):

    • Bạn thấy trong log: Một IP lạ liên tục scan port 22 (SSH)
      • ➡️ Điều này có thể là:
        • Brute-force attack
        • Bot scan lỗ hổng
      • ➡️ Action:
        • Block IP đó
        • Tighten Security Group

    📌 Flow Logs giúp bạn:

    • Debug network issues
    • Audit security
    • Detect suspicious traffic

    📌 Cách phân tích phổ biến:

    • CloudWatch Logs Insights
    • Athena (query log kiểu SQL)
  • Traffic Mirroring: Cho phép bạn "sao chép" lưu lượng mạng từ một ENI và gửi đến một đích khác để phân tích sâu hơn. Điều này rất hữu ích cho các mục đích bảo mật, phân tích hiệu suất và phát hiện các mối đe dọa.


🏠 Ví Dụ Đời Thường: Xây Dựng Ngôi Nhà An Toàn

Thành phần Ví dụ đời thường Giải thích
VPC Ngôi nhà Toàn bộ hệ thống riêng của bạn
CIDR Khuôn viên ngôi nhà Xác định phạm vi địa chỉ IP có thể sử dụng
Subnets Các phòng trong nhà Chia khu vực theo chức năng (public / private)
Internet Gateway Cửa chính Kết nối với thế giới bên ngoài
NAT Gateway Cửa thoát hiểm một chiều Chỉ cho phép đi ra ngoài, không cho vào
NACL Hàng rào + bảo vệ ngoài nhà Kiểm soát traffic ra/vào ở mức subnet
Security Group Khóa cửa thông minh Kiểm soát ai được vào từng server
Route Tables Hệ thống đường xá Điều hướng traffic trong hệ thống
VPC Endpoints Dịch vụ giao hàng riêng Truy cập dịch vụ AWS mà không ra Internet
VPC Flow Logs Camera giám sát Ghi lại hoạt động mạng để kiểm tra

Sơ đồ Tổng quan Mạng AWS VPC

Đây là một sơ đồ kiến trúc phức tạp nhưng cực kỳ chi tiết, thể hiện cách các thành phần của một VPC làm việc cùng nhau và kết nối với thế giới bên ngoài.

image.png

Giải mã Sơ đồ: Sâu chuỗi sự liên kết
Hãy đi qua sơ đồ theo từng phần để thấy được sự liên kết chặt chẽ:
1. Trung tâm của thành phố (My VPC):

  • VPC (vùng màu xanh lá): Toàn bộ vùng này là "thành phố" của bạn, được định nghĩa bởi một dải CIDR (10.0.0.0/16).
  • Subnets: "Thành phố" được chia thành các quận. Chúng ta thấy Public Subnets (vùng màu vàng) và Private Subnets (vùng màu lam), nằm trong hai Availability Zones (AZ) khác nhau để đảm bảo tính sẵn sàng cao (High Availability). Mỗi Subnet có dải CIDR riêng (ví dụ: 10.0.1.0/24).

2. Di chuyển và Cửa ngõ:

  • Internet Gateway (IGW): Biểu tượng cửa chính ở cạnh trái của VPC. Nó là cửa ngõ duy nhất kết nối Public Subnets với Public Internet.
  • NAT Gateway: Nằm trong Public Subnet AZ A, nó hoạt động như một "cánh cửa một chiều", cho phép các Application Servers trong Private Subnets ra Internet mua sắm nhưng không ai có thể vào trực tiếp từ Internet.
  • Route Tables: Hai bảng định tuyến khác nhau điều khiển lưu lượng. Public Route Table hướng dẫn mọi người đến IGW (0.0.0.0/0). Private Route Table hướng dẫn lưu lượng đến NAT Gateway (0.0.0.0/0).
  • Egress-only Internet Gateway (IPv6): Một cửa ngõ một chiều khác, được thiết kế riêng cho lưu lượng IPv6 từ Private Subnets ra Internet.

3. Bảo mật nhiều lớp:

  • NACLs (Network Access Control Lists): Biểu tượng bức tường lửa nét đứt hoạt động ở cấp độ Subnet. Chúng kiểm soát lưu lượng đi vào và ra dựa trên các quy tắc stateless. Chú ý đến việc mở Ephemeral Ports!
  • Security Groups: Biểu tượng vòng bảo vệ stateful bao quanh các nhóm instances cụ thể (Bastion, Application, Database). Chúng kiểm soát lưu lượng đến từng instance cụ thể, "nhớ" các kết nối đã thiết lập.

4. Truy cập và Kết nối Nâng cao:

  • Bastion Host: Nằm trong Public Subnet AZ A, nó cho phép quản trị viên kết nối an toàn từ Internet bằng SSH và sau đó nhảy vào các instances trong Private Subnets.

  • VPC Endpoints:

    • Gateway Endpoint: Kết nối trực tiếp đến Amazon S3, bypassing Public Internet và NAT.
    • Interface Endpoint (PrivateLink): Kết nối riêng tư đến các dịch vụ AWS khác (như S3 qua PrivateLink) hoặc đến các dịch vụ của đối tác trong một VPC khác.
  • AWS VPN CloudHub & Site-to-Site VPN: Kết nối mạng của công ty (On-premise DC) với VPC qua một kết nối VPN an toàn.

  • Direct Connect (DX): Một kết nối riêng, tốc độ cao, ổn định kết nối trực tiếp DC của công ty với AWS qua một DX Location và DX Gateway.

  • VPC Peering: Kết nối riêng biệt giữa My VPC và một VPC khác (VPC B - Partner VPC) với dải CIDR không chồng lấn. Nhớ rằng nó không có tính bắc cầu!

5. Giám sát và Phân tích:

  • VPC Flow Logs: Thu thập thông tin lưu lượng từ VPC, Subnet, ENI và gửi đến Amazon CloudWatch Logs/Athena để phân tích. Nó giúp phát hiện các cuộc tấn công và phân tích hiệu suất.
  • Traffic Mirroring: Sao chép lưu lượng mạng từ ENI của một Application Server và gửi đến một công cụ phân tích mạng (ví dụ: trong một VPC phân tích riêng) để kiểm tra sâu hơn.

6. Kết nối tập trung:

  • Transit Gateway: Nằm ở trung tâm bên ngoài các VPC chính, nó hoạt động như một "nút giao thông" tập trung để kết nối nhiều VPC, mạng on-premise (qua VPN/DX), và các dịch vụ khác, đơn giản hóa cấu trúc mạng khi quy mô mở rộng.

🎯 Kết luận

AWS VPC thoạt nhìn có thể khiến bạn “ngợp” vì nhiều khái niệm như Subnet, Route Table, NAT Gateway hay Security Group. Nhưng khi nhìn nó dưới góc độ đời sống — như một “thành phố” hay “ngôi nhà” do chính bạn thiết kế — mọi thứ bắt đầu trở nên logic và dễ nắm bắt hơn rất nhiều.

Điều quan trọng nhất bạn cần nhớ không phải là thuộc lòng từng dịch vụ, mà là hiểu cách chúng phối hợp với nhau:

Subnet để phân chia khu vực Route Table để điều hướng traffic IGW/NAT để kết nối ra ngoài Security Group/NACL để bảo vệ hệ thống

Khi đã nắm được “bức tranh tổng thể”, bạn sẽ thấy việc thiết kế một hệ thống network trên AWS không còn quá phức tạp, mà giống như đang quy hoạch một hệ thống hạ tầng có kiểm soát.

Nếu bạn đang học AWS để đi làm hoặc chuẩn bị cho các chứng chỉ như SAA, thì VPC chính là nền móng bắt buộc phải vững.

💡 Hiểu VPC = hiểu cách mọi thứ trong AWS “nói chuyện” với nhau

Hãy đón đọc phần tiếp theo để khám phá những khía cạnh thú vị khác của AWS nhé!


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.