Bỏ qua

05.VpcSubnets

🌐 VPC Subnets trên AWS: Lý thuyết & tư duy thực chiến (Dễ hiểu cho người mới, đủ thi & đi làm)


image image

PHẦN 1: Lý thuyết nền tảng về Subnet (CẦN NHỚ)

1. Subnet là gì?

  • Subnet = “phòng” nhỏ trong “ngôi nhà” VPC
  • khu vực mạng con nằm trọn vẹn trong 1 Availability Zone (AZ) cụ thể, không thể “kéo” qua AZ khác.
  • Một subnet = một AZ duy nhất (Đi thi cực hay hỏi!)
  • Subnet là nơi các dịch vụ AWS (EC2, RDS, Lambda, …) thực sự “chạy”. Không thể chạy tài nguyên trực tiếp trên VPC, phải đặt trong subnet.

2. Vai trò của subnet trong kiến trúc thực tế

  • Tăng tính sẵn sàng (High Availability): Đặt từng thành phần (web, app, db, …) vào các subnet thuộc nhiều AZ khác nhau. Nếu 1 AZ chết, dịch vụ vẫn sống ở AZ khác.
  • Tách biệt chức năng: Tạo subnet riêng cho từng tier (web/app/db), dễ set rule bảo mật, quản lý traffic.
  • Kiểm soát public/private: Chỉ subnet nào cấu hình “public” (qua Internet Gateway & auto-assign public IP) thì mới truy cập Internet được.

3. Quy tắc vàng về subnet

  • 1 subnet = 1 AZ. Không bao giờ có subnet nằm ở nhiều AZ.
  • 1 AZ có thể có nhiều subnet, hoặc không có subnet nào.
  • Subnet phải nằm hoàn toàn trong dải IP VPC, không được trùng nhau.
  • Subnet có thể có cả IPv4 và IPv6 (nếu VPC bật IPv6).
  • IPv4 CIDR của subnet là “con” của CIDR VPC. Ví dụ VPC /16, chia subnet /20 hoặc /24

4. AWS sẽ giữ lại 5 IP trong mỗi subnet, bạn không dùng được!

  • 5 IP này là:
    1. Network address (địa chỉ đầu tiên, dùng để định danh subnet)
    2. Network+1 (dùng cho VPC router – định tuyến giữa các subnet)
    3. Network+2 (dùng cho DNS server trong VPC)
    4. Network+3 (AWS dự phòng cho tương lai, hiện chưa dùng)
    5. Broadcast address (địa chỉ cuối cùng – dù VPC không hỗ trợ broadcast, nhưng vẫn giữ lại)
  • → Khi tính số IP usable luôn lấy tổng số IP trừ đi 5.
    Ví dụ: /24 = 256 IP, usable = 251.
< Giải thích chi tiết về 5 ip này (Bấm để xem) ### **Tổng quan: Nền móng ẩn của mỗi Subnet** Hãy hình dung mỗi **subnet** bạn tạo ra như một **khu phố khép kín, được quy hoạch bài bản**. AWS, với vai trò là nhà phát triển hạ tầng, đã giữ lại 5 "lô đất" chiến lược trong mỗi khu phố này để xây dựng các tiện ích chung, đảm bảo toàn bộ khu phố vận hành trơn tru và an toàn. Việc giữ lại 5 địa chỉ IP này là một quy tắc **cố định và không thể thay đổi**. **Phạm vi:** Quy tắc này được áp dụng ở cấp độ **SUB-NET**. Nghĩa là, dù bạn tạo ra 1 hay 100 subnet, mỗi subnet trong số đó đều sẽ có 5 địa chỉ IP này bị giữ lại. --- ### **Chi tiết về 5 thành phần và tác động của chúng** Giả sử chúng ta có một subnet với dải IP là `10.0.1.0/24`. #### 1. Địa chỉ Mạng (`10.0.1.0`) * **Vai trò:** Đây là **danh tính** của subnet, giống như tên của khu phố (ví dụ: "Khu phố A"). Nó không phải là một địa chỉ cụ thể của một ngôi nhà nào, mà là địa chỉ định danh cho cả một khu vực. * **Tác động:** * **Định nghĩa ranh giới:** Địa chỉ này xác định điểm bắt đầu của dải IP trong subnet. * **Routing:** Bảng định tuyến (Route Table) sử dụng địa chỉ này để biết rằng "tất cả các địa chỉ từ 10.0.1.0 đến 10.0.1.255 đều thuộc về khu phố này". * **Không thể sử dụng:** Bạn không bao giờ có thể gán địa chỉ này cho bất kỳ tài nguyên nào (EC2, RDS, v.v.). #### 2. VPC Router / Cổng Mặc Định (`10.0.1.1`) * **Vai trò:** Đây là **cổng ra vào duy nhất** của khu phố, do AWS quản lý. Mọi "thư từ" hay "xe cộ" (traffic) muốn đi từ trong subnet ra ngoài (Internet, VPC khác) hoặc từ ngoài vào trong đều phải đi qua cái cổng này. * **Tác động:** * **Điểm trung chuyển bắt buộc:** Bất kỳ máy chủ EC2 nào trong subnet này muốn kết nối ra Internet đều phải gửi gói tin đến địa chỉ `10.0.1.1` này đầu tiên. * **Tính sẵn sàng cao:** Đây không phải là một máy chủ vật lý duy nhất mà là một dịch vụ có tính sẵn sàng cao và khả năng mở rộng tự động do AWS quản lý. #### 3. Máy chủ DNS của Amazon (`10.0.1.2`) * **Vai trò:** Đây là **"bốt thông tin" hoặc "danh bạ điện thoại" nội bộ** của khu phố. Nó có hai chức năng chính: 1. Giúp các máy chủ trong subnet phân giải tên miền công cộng (ví dụ: `google.com`). 2. Giúp các máy chủ trong cùng VPC phân giải tên miền riêng tư của nhau (ví dụ: phân giải hostname `ip-10-0-1-50.ec2.internal`). * **Tác động:** * **Phân giải tên miền hiệu quả:** Việc có một máy chủ DNS ngay trong subnet giúp giảm độ trễ và đảm bảo các tài nguyên có thể "tìm thấy" nhau một cách nhanh chóng. * **Nền tảng của DHCP Option Set:** DHCP Option Set mặc định sẽ chỉ cho các máy chủ EC2 sử dụng địa chỉ `10.0.1.2` này làm DNS server. #### 4. Dành cho tương lai (`10.0.1.3`) * **Vai trò:** Đây là một **"lô đất trống"** mà AWS đã giữ lại để phòng trường hợp trong tương lai họ muốn triển khai thêm một dịch vụ mạng mới ở cấp độ subnet. * **Tác động:** * **Không khả dụng:** Đơn giản là bạn không thể sử dụng địa chỉ này. Nó làm giảm đi một địa chỉ trong tổng số IP khả dụng của bạn. #### 5. Địa chỉ Broadcast (`10.0.1.255`) * **Vai trò:** Trong mạng truyền thống, đây là địa chỉ dùng để **gửi một gói tin đến tất cả các thiết bị** trong cùng một mạng, giống như một hệ thống "loa phát thanh" công cộng. * **Tác động:** * **Bị vô hiệu hóa:** AWS **không hỗ trợ** giao thức broadcast trong VPC để tăng cường bảo mật và tránh các vấn đề về "bão broadcast" (broadcast storm). * **Không thể sử dụng:** Vì tính năng này không được hỗ trợ, AWS giữ lại địa chỉ này để đảm bảo không ai có thể sử dụng nó sai mục đích. --- ### **Tóm tắt tác động chung lên Subnet** 1. **Giảm số lượng IP khả dụng:** Đây là tác động rõ ràng nhất. Khi bạn tính toán số lượng máy chủ có thể đặt trong một subnet, bạn phải luôn lấy tổng số IP của dải CIDR đó **trừ đi 5**. Một subnet `/24` (256 IP) chỉ có 251 IP để bạn sử dụng. 2. **Cung cấp các chức năng mạng cốt lõi:** 5 địa chỉ này không chỉ làm giảm IP mà còn là nền tảng cung cấp các dịch vụ thiết yếu (định tuyến, DNS) giúp subnet hoạt động như một thực thể mạng hoàn chỉnh. 3. **Đảm bảo tính nhất quán và bảo mật:** Việc giữ lại các địa chỉ này tạo ra một kiến trúc mạng đồng nhất và có thể dự đoán được trên toàn bộ nền tảng AWS, đồng thời loại bỏ các giao thức kém an toàn như broadcast.

5. DHCP Option Set

  • VPC auto có 1 DHCP Option Set – giúp EC2 trong subnet tự nhận IP, DNS server, NTP server…
  • Không chỉnh sửa được DHCP Option Set, muốn đổi phải tạo mới rồi gán vào VPC.
< Giải thích chi tiết về DHCP Option Set (Bấm để xem) --- ### DHCP Option Set là gì? Nếu VPC là một khu mạng ảo riêng, thì **DHCP Option Set** chính là **bộ quy tắc cấu hình mạng mặc định** được áp dụng cho toàn bộ khu vực đó. Nó là một tập hợp các thông số mà giao thức DHCP (Dynamic Host Configuration Protocol) sẽ cung cấp tự động cho các máy chủ (EC2) mới được khởi tạo bên trong VPC. Mục tiêu chính của DHCP Option Set là **đơn giản hóa việc cấu hình mạng** và đảm bảo tính nhất quán cho toàn bộ hệ thống. --- ### Các tùy chọn (Options) chính Một DHCP Option Set bao gồm nhiều tùy chọn, nhưng đây là những tùy chọn quan trọng nhất: * **Máy chủ DNS (`domain-name-servers`)** * **Chức năng:** Chỉ định máy chủ DNS mà các EC2 sẽ dùng để phân giải tên miền (ví dụ: biến `google.com` thành địa chỉ IP). * **Mặc định của AWS:** `AmazonProvidedDNS`, một dịch vụ đặc biệt có thể phân giải cả tên miền công cộng và tên miền riêng tư của các EC2 khác trong cùng VPC. * **Tùy chỉnh:** Bạn có thể thay bằng DNS của công ty hoặc DNS công cộng như `8.8.8.8`. * **Tên Miền (`domain-name`)** * **Chức năng:** Gán một tên miền mặc định cho các máy chủ, giúp tạo thành Tên miền Đầy đủ (FQDN). Ví dụ: `server-1.mycompany.local`. * **Máy chủ Thời gian NTP (`ntp-servers`)** * **Chức năng:** Chỉ định máy chủ thời gian để các EC2 đồng bộ giờ giấc. Điều này rất quan trọng cho việc ghi log và bảo mật. --- ### Tại sao không thể chỉnh sửa trực tiếp? Đây là một quy tắc thiết kế quan trọng của AWS nhằm đảm bảo **an toàn và nhất quán**. Việc cho phép sửa đổi trực tiếp một DHCP Option Set đang được sử dụng có thể gây ra sự cố mất kết nối mạng trên diện rộng nếu có lỗi xảy ra. Do đó, quy trình an toàn là: 1. **Tạo một DHCP Option Set mới** với cấu hình bạn muốn. 2. **Gán (associate)** set mới này vào VPC để thay thế cho set cũ. --- ### Khi nào cần quan tâm? Bạn chỉ thực sự cần tạo một DHCP Option Set tùy chỉnh trong các trường hợp sau: * **Môi trường Lai (Hybrid Cloud):** Khi bạn muốn máy chủ trên AWS "thấy" và giao tiếp được với các máy chủ ở văn phòng công ty bằng tên miền nội bộ. * **Tích hợp Active Directory:** Khi các máy chủ Windows cần gia nhập vào miền (domain) của công ty. * **Tuân thủ chính sách nội bộ:** Khi công ty yêu cầu sử dụng máy chủ DNS hoặc NTP riêng.

6. Option quan trọng khi tạo subnet

  • Auto-assign public IPv4: Nếu bật, mọi EC2 khi launch vào subnet này sẽ tự được gán public IP.
    • Muốn subnet public: Bật option này + subnet có route ra Internet Gateway.
    • Muốn subnet private: Tắt option này, EC2 chỉ có private IP (muốn ra Internet phải qua NAT Gateway).
  • IPv6: Nếu subnet (và VPC) bật IPv6, EC2 vào subnet sẽ được gán IPv6 (public routeable).

7. Kết nối giữa các subnet

  • Mặc định: Các subnet trong cùng VPC truy cập nhau tự do (do route table mặc định), không bị chặn (bảo mật dùng Security Group/Network ACL).
  • Isolation thực sự: Ở biên của VPC, không phải giữa các subnet.

PHẦN 2: Tư duy thiết kế subnet thực chiến (Đi làm & đi thi)

1. Multi-tier subnet mẫu cho production

  • Web tier: Chỉ web server, có thể đặt public nếu cần.
  • App tier: Logic xử lý, private subnet.
  • Database tier: Cơ sở dữ liệu, luôn ở private subnet.
  • Reserved tier: Để trống, dự phòng mở rộng.
  • Mỗi tier nhân với số AZ (thường là 3 hoặc 4) → tổng số subnet.

2. Ví dụ chia subnet thực tế

  • VPC: 10.16.0.0/16
  • Chia 4 tier × 3 AZ (A, B, C) = 12 subnet
    • Web-A: 10.16.0.0/20
    • Web-B: 10.16.16.0/20
    • Web-C: 10.16.32.0/20
    • App-A: 10.16.48.0/20
    • ...
    • Reserved-C: 10.16.176.0/20
  • Subnet nào AZ nào phải đặt đúng, không đảo lộn!

3. Bài học thực tế

  • Sai subnet/AZ hoặc CIDR trùng lặp → hệ thống lỗi, rất khó sửa sau này.
  • Quên bật/tắt auto-assign public IP → EC2 không truy cập Internet hoặc bị public ngoài ý muốn.
  • Không tính trừ 5 IP → hết IP sớm, đặc biệt subnet nhỏ /28, /27.

PHẦN 3: Checklist & câu hỏi phỏng vấn/cert

  • [x] 1 subnet chỉ thuộc 1 AZ, AZ có thể nhiều subnet
  • [x] CIDR subnet phải nằm trong CIDR VPC, không trùng nhau
  • [x] 5 IP bị AWS giữ lại/subnet (network, router, DNS, dự phòng, broadcast)
  • [x] Muốn subnet public phải bật auto-assign public IP & có route ra IGW
  • [x] Tất cả subnet trong 1 VPC mặc định truy cập nhau được
  • [x] Khi chia subnet phải có file/subnet plan để tránh trùng

Câu hỏi đi thi/phỏng vấn:

  • “Một subnet có thể nằm ở nhiều AZ không?”
  • “Subnet có thể trùng CIDR không?”
  • “Làm sao để subnet thành public/private?”
  • “5 IP bị giữ lại là gì?”
  • “Nếu EC2 không có public IP dù subnet public, kiểm tra gì?”

PHẦN 4: Tổng kết & chuẩn bị demo thực hành

  • Subnet là nền tảng của mọi thiết kế mạng AWS – phải hiểu cực chắc.
  • Tuyệt đối không được nhầm subnet/AZ, không được trùng CIDR.
  • Muốn subnet public/private là do option khi tạo + route table, không phải do tên.
  • Khi chia subnet nên làm bảng (excel/pdf) lưu lại mapping tier–AZ–CIDR.
  • Bài sau: Thực hành tạo 12 subnet cho VPC, cấu hình đúng từng AZ, đúng option!

Đọc lại bài này trước khi đi thi hoặc bắt đầu làm bất kỳ dự án AWS production nào!

Bình luận