Skip to content

Chương 4: Kiến trúc Cloud DNS & Các mô hình Production

Tại sao DNS quan trọng trong production

DNS không phải là một "commodity service" có thể bỏ qua. Ở quy mô production, các lỗi DNS (DNS failures) dẫn đến:

  • Dịch vụ ngừng hoạt động hoàn toàn (Complete service outages): Khi DNS không phân giải (resolve) được, mọi dịch vụ (service) phía sau cũng không thể tiếp cận (unreachable)
  • Vi phạm bảo mật (Security breaches): Tấn công giả mạo DNS (DNS poisoning), phát hiện rò rỉ dữ liệu (exfiltration detection), các hướng tấn công lan truyền (lateral movement vectors)
  • Vi phạm tuân thủ (Compliance violations): Nhật ký kiểm toán (Audit logs) không ghi nhận (capture), vi phạm quy định lưu trữ dữ liệu (data residency)
  • Tăng độ trễ (Latency amplification): Mỗi truy vấn DNS (DNS query) cộng thêm 10-100ms—ở quy mô lớn có thể lên tới hàng nghìn truy vấn mỗi giây (queries/sec)
  • Bề mặt tấn công ẩn (Hidden attack surface): Chiếm đoạt DNS (DNS hijacking), tấn công từ chối dịch vụ qua phản xạ DNS (DDoS qua DNS reflection), giả mạo bộ nhớ đệm (cache poisoning)

Thực tế: Hầu hết các sự cố ngừng hoạt động (outages) không phải do lỗi tính toán (compute)—mà là do các vấn đề về mạng/DNS (network/DNS issues).

Tại sao có Chương này

GCP Cloud DNS có sự khác biệt so với hệ thống DNS truyền thống (traditional DNS như BIND on-prem):

  1. Được quản lý hoàn toàn (Fully managed), không tốn chi phí vận hành (overhead) — nhưng vẫn cần hiểu rõ cơ chế
  2. Tích hợp với các lớp bảo mật của GCP (GCP security stack) — IAM, audit logs, áp đặt chính sách VPC (VPC enforcement)
  3. Split-horizon, peering, forwarding — cấu trúc mô hình (topology) phức tạp cho hybrid/multi-cloud
  4. Bắt buộc cho GKE Autopilot — không thể bỏ qua
  5. Vận hành quy mô lớn trong Production (Production at scale) — quản lý hàng nghìn zone (1000s zones), hàng triệu truy vấn mỗi giây (millions queries/sec)

Lộ trình học tập (Learning Path)

Khuyên dùng học theo thứ tự sau:

Nền tảng (Foundation) (Bắt buộc)

  1. Managed Zones: Public và Private - Thành phần trừu tượng cốt lõi (Core abstraction)
  2. Split-Horizon DNS - Cấu trúc liên kết (topology) internal/external
  3. Cloud DNS cho GKE - Tài liệu bắt buộc đọc (Mandatory reading) nếu sử dụng Kubernetes

Môi trường Hybrid/Enterprise (Rất khuyên dùng)

  1. DNS Peering - Đa dự án (Multi-project), đa VPC (multi-VPC)
  2. DNS Forwarding - Tích hợp với on-premises (On-premises integration)
  3. Private DNS Zones - Phân giải đặc thù cho VPC (VPC-specific resolution)

Nâng cao (Advanced) (Khuyên dùng)

  1. Response Policy Zones (RPZ) - Ghi đè chính sách bảo mật (Security overrides)
  2. NodeLocal DNSCache - Hiệu năng (Performance)
  3. Đường đi của phân giải DNS (DNS Resolution Path) - Gỡ lỗi và xử lý sự cố (Debugging & troubleshooting)

Vận hành & Tuân thủ (Operations & Compliance)

  1. DNS Query Logging - Kiểm toán (Audit), tuân thủ (compliance), phát hiện rò rỉ dữ liệu (exfiltration detection)
  2. TTL Tuning - Các kịch bản biến động (Churn scenarios)
  3. DNSSEC - Xác thực (Validation) & quản lý khóa (key management)
  4. Multi-Cluster DNS - Các mô hình Service Directory (Service Directory patterns)

Theo Vai Trò

Backend Engineer (5-10 năm kinh nghiệm)

→ Đọc: 01, 02, 06, 09

Bạn cần hiểu cách các dịch vụ khám phá nhau (services discover), tại sao DNS ảnh hưởng đến độ trễ cuộc gọi thủ tục từ xa (RPC latency), và các khái niệm split-horizon cơ bản.

Platform Engineer / SRE

→ Đọc: 01, 02, 03, 04, 05, 06, 07, 09, 10, 11, 12

Bạn quản lý hạ tầng DNS (DNS infrastructure), cấu hình peering (peering configs), gỡ lỗi sự cố (troubleshooting), và tuân thủ (compliance).

Vận hành Kubernetes (Kubernetes Operator)

→ Đọc: 06, 08, 09, 10, 13

Tích hợp GKE DNS (GKE DNS integration), bộ nhớ đệm (caching), và khám phá dịch vụ đa cụm (multi-cluster service discovery).

Kỹ sư bảo mật (Security Engineer)

→ Đọc: 02, 07, 10, 12, 13

Split-horizon, các chính sách RPZ (RPZ policies), ghi nhật ký (logging), DNSSEC, và kiểm soát truy cập đa cụm (multi-cluster access control).

Kiến trúc sư đám mây (Cloud Architect)

→ Đọc: 01, 02, 03, 04, 05, 06, 12, 13

Thiết kế mạng lai (hybrid networks), cấu trúc liên kết peering (peering topologies), và các mô hình đa vùng (multi-region patterns).

Các mô hình tư duy cốt lõi (Key Mental Models)

1. Phân cấp phân giải DNS (DNS Resolution Hierarchy)

Pod/VM (10.0.1.5)

Local /etc/resolv.conf (ndots=5, search domains)

NodeLocal DNSCache (tùy chọn, cached entries)

Cloud DNS (private zones → public zones → upstream)

Upstream (DNS on-prem, public internet)

Quan trọng: Mỗi chặng (hop) đều có thể bị lỗi (fail). Hãy hiểu rõ cả 5 tầng.

2. Mô hình liên kết Zone (Zone Attachment)

Các Private zone gắn vào VPCs, không phải từng tài nguyên (resource) riêng lẻ:

Project A: VPC A, VPC B (shared VPC)
  ├── Private Zone "internal.example.com"
  │   └── Gắn vào: VPC A, VPC B → CẢ HAI đều phân giải (resolve) được
  └── Private Zone "database.internal"
      └── Gắn vào: VPC A only → VPC B không phân giải (resolve) được

Project B: VPC C (peer project)
  └── Không phân giải (resolve) được zone nào từ Project A (trừ khi có DNS peering)

Lưu ý: Cẩn thận với việc liên kết zone (zone attachment) → ranh giới bảo mật.

3. Sự đánh đổi trong Split-Horizon (Split-Horizon Trade-offs)

Cùng một domain, nhưng trả về câu trả lời khác nhau:

Internal user (10.0.1.5 trong VPC A):
  dig api.example.com → 10.0.2.10 (private, Cloud LB)

External user (internet):
  dig api.example.com → 35.201.100.50 (public IP)

Chi phí: Cần duy trì 2 zone, đồng bộ dữ liệu, tiềm ẩn sự không nhất quán (inconsistency).

4. Forwarding so với Peering (Forwarding vs Peering)

Khía cạnhPeeringForwarding
Cơ chếSao chép DNS zoneChuyển hướng truy vấn (query)
Độ trễ (Latency)Thấp hơn (có cache)Cao hơn (mỗi query)
Kiểm soátSao chép toàn zonePhụ thuộc vào upstream
On-premHạn chếTrường hợp sử dụng chính (Use case chính)
Mở rộng (Scale)Tốt cho đa VPC (multi-VPC)Tốt cho 1-2 zones

Mô hình Production (Production pattern): Peering cho mô hình đa dự án (multi-project), forwarding cho việc tích hợp on-prem (on-prem integration).

5. GKE DNS Stack

Pod → /etc/resolv.conf của kubelet

kube-dns hoặc CoreDNS (DNS của cluster)

NodeLocal DNSCache (trên mỗi node, nếu bật)

Cloud DNS (nếu truy vấn - query không nằm trong cluster)

Upstream (phân giải - resolution bên ngoài)

Lưu ý: NodeLocal DNSCache là tùy chọn nhưng rất nên dùng cho môi trường production.

6. TTL là công cụ kiểm soát tính nhất quán

TTL thấp (60s) = dữ liệu mới cập nhật nhanh hơn nhưng phát sinh nhiều truy vấn (query) hơn TTL cao (3600s) = nguy cơ nhận dữ liệu cũ (stale) nhưng ít truy vấn (query) hơn

Mô hình Production (Production pattern): Tùy theo môi trường:

  • Production: 300s (5 phút) cân bằng
  • Staging: 60s (dữ liệu mới, dễ gỡ lỗi - debug)
  • Dev: 300s (không quá quan trọng)

7. Response Policy Zones cho Bảo Mật

RPZ chặn truy vấn (query) và áp dụng chính sách (policy):

Truy vấn: malware.example.com → RPZ rule khớp → NXDOMAIN (chặn)
Truy vấn: internal-service.com → RPZ rule khớp → 10.0.1.100 (redirect nội bộ)

Trường hợp sử dụng (Use case): Chặn phần mềm độc hại (malware), chuyển hướng (redirect) dịch vụ nội bộ, ghi đè chính sách tuân thủ (compliance).

Tóm Tắt Production Patterns

Mô hình 1: Hub-and-Spoke DNS (Pattern 1)

Dự án trung tâm (Hub project) thực hiện DNS peering, các dự án vệ tinh (spoke) liên kết (attach) → quản lý tập trung.

Mô hình 2: Hybrid On-Premises (Pattern 2)

Cloud DNS forwarding zone → DNS on-prem → phân giải (resolution) liền mạch.

Mô hình 3: Split-Horizon API (Pattern 3)

Điểm cuối (Endpoint) nội bộ so với bên ngoài, dùng chung domain.

Mô hình 4: GKE Service Discovery (Pattern 4)

Sử dụng Cloud DNS cho việc khám phá dịch vụ bên ngoài, kube-dns cho các pod nội bộ.

Mô hình 5: DNS đa cụm (Multi-Cluster DNS)

Sử dụng Cloud Service Directory, ServiceImport/ServiceExport trên nhiều cụm (cross-cluster).

Lỗi Thường Gặp Cần Tránh

Toàn bộ lưu lượng (traffic) dùng public DNS resolvers (8.8.8.8) → Phá vỡ split-horizon, tăng độ trễ (latency)

Không có private zone — các dịch vụ (services) sử dụng IP công khai (public IPs) → Tốn chi phí không cần thiết, tăng rủi ro bảo mật

Quá nhiều forwarding zone → Độ trễ (latency) tích lũy, dẫn đến lỗi dây chuyền (failure cascade)

Cấu hình TTL = 0 (luôn làm mới - refresh) → Tăng đột biến CPU (CPU spike), làm trải nghiệm người dùng bị chậm

Không bật DNS query logging → Không thể gỡ lỗi (debug), tạo ra điểm mù bảo mật, thiếu tuân thủ (compliance)

Bật DNSSEC trên internal DNS nhưng không có xác thực (validation) → Tạo ra ảo giác bảo mật, gây phức tạp trong vận hành

Khung ra quyết định kiến trúc (Architecture Decision Framework)

Khi thiết kế hệ thống DNS, hãy hỏi:

  1. Công khai (Public) hay nội bộ (Internal)? → Chọn loại zone (public/private)
  2. Đa VPC (Multi-VPC)? → Sử dụng Peering hay tách biệt các zone (separate zones)
  3. Có tích hợp với on-prem không? → Sử dụng các forwarding zone
  4. Cần split-horizon không? → Kết hợp public và private zone
  5. Hiệu năng có quan trọng không? → Sử dụng NodeLocal DNSCache, tối ưu hóa TTL (TTL tuning)
  6. Cần tuân thủ bảo mật không? → Sử dụng RPZ, query logging, DNSSEC
  7. Đa cụm (Multi-cluster)? → Sử dụng Cloud Service Directory
  8. Ưu tiên khả năng gỡ lỗi (debug)? → Thiết lập logging, tracing

Nội dung tiếp theo sau chương này

  • Chương 5 (Chapter 5): Đi sâu vào VPC-native networking (routing, chính sách - policies)
  • Chương 6 (Chapter 6): GKE Networking ở quy mô lớn (service mesh, ingress)
  • Chương 7 (Chapter 7): Kiến trúc bảo mật (định danh - identity, chính sách - policies)
  • Chương 8 (Chapter 8): Khả năng quan sát (Observability - ghi nhật ký, giám sát DNS)

Tra cứu nhanh lệnh (Quick Commands Reference)

bash
# Managed zones
gcloud dns managed-zones list
gcloud dns managed-zones create ZONE_NAME --dns-name=example.com --visibility=private --networks=VPC_NAME

# Record sets
gcloud dns record-sets list --zone=ZONE_NAME
gcloud dns record-sets transaction add 10.0.1.5 --name=service.example.com --ttl=300 --type=A --zone=ZONE_NAME

# DNS peering
gcloud dns managed-zones update ZONE_NAME --inbound-forwarding-servers=10.0.1.5

# Query logs
gcloud logging read "resource.type=dns_query" --limit=50

# Test resolution
nslookup service.example.com 10.0.1.1  # Trình phân giải nội bộ (Internal resolver)

Thông Tin Tài Liệu

  • Cập nhật lần cuối: 2026-06-01
  • Ngôn ngữ: Tiếng Việt
  • Đối tượng: Kỹ sư cấp cao (Senior engineers), đội ngũ platform, SREs
  • Tổng nội dung: 13 files, ~45,000 từ, tập trung vào môi trường production
  • Điều kiện tiên quyết: Hiểu rõ Chương 3 (VPC Model)