SERVICE ASSURANCE

Kiểm thử DNS zone transfer: AXFR, IXFR, NOTIFY và tính nhất quán serial

10/9/2026 · 16 phút

Primary DNS truyền zone bằng AXFR hoặc IXFR tới nhiều secondary
Mục lục bài viết 10 phần

Secondary trả lời được DNS chưa có nghĩa dữ liệu đã đồng bộ. Một record mới có thể chưa tới một node, serial có thể tăng nhưng nội dung bị thiếu, hoặc AXFR bị cho phép từ mạng không mong muốn. Test plan cần nối control plane của zone transfer với truy vấn authoritative thực tế và bằng chứng bảo mật.

ĐỌC NHANH

Bài viết giúp bạn

  • Bài toán cần kiểm chứng
  • Topology và điều kiện đo
  • Biến số phải kiểm soát
Tùy chỉnh đọc
01

Bài toán cần kiểm chứng

#

RFC 5936 mô tả AXFR là cơ chế truyền toàn bộ zone; RFC 1995 định nghĩa IXFR để truyền thay đổi dựa trên SOA serial; RFC 1996 cho phép primary gửi NOTIFY để secondary chủ động kiểm tra thay vì chờ refresh timer. Ba cơ chế bổ sung nhau, không phải ba chế độ độc lập có thể đánh giá chỉ bằng một lệnh dig.

Câu hỏi acceptance là: sau một thay đổi hợp lệ, mọi authoritative server phục vụ cùng dữ liệu trong SLO bao lâu; khi IXFR không dùng được, fallback AXFR có đúng và an toàn không; khi primary hoặc đường mạng lỗi, secondary có tiếp tục trả lời dữ liệu chấp nhận được hay không.

02

Topology và điều kiện đo

#

Dùng một primary, tối thiểu hai secondary khác subnet/region, một client truy vấn trực tiếp từng authoritative server và một probe đi qua resolver nếu muốn đo trải nghiệm cuối. Đặt capture ở primary và ít nhất một secondary; thu log transfer, SOA serial, catalog/config snapshot và hash của bản xuất zone đã chuẩn hóa.

Tách management/control path khỏi query path nếu production có kiến trúc tương tự. Baseline gồm zone nhỏ, không DNSSEC và không packet loss; sau đó thêm DNSSEC, zone lớn, latency/loss, hidden primary và anycast nếu nằm trong phạm vi.

Minh họa: Hidden primary đồng bộ hai secondary với đường kiểm tra độc lập.
Minh họa: Hidden primary đồng bộ hai secondary với đường kiểm tra độc lập.
03

Biến số phải kiểm soát

#

Khóa implementation/version, transport của từng phép thử, SOA refresh/retry/expire, serial policy, zone size, số record thay đổi, transfer ACL, TSIG algorithm/key ID, DNSSEC signing mode và clock. RFC 7766 yêu cầu triển khai DNS hỗ trợ TCP; AXFR vận hành trên TCP; IXFR theo RFC 1995 có thể dùng UDP khi toàn bộ phản hồi vừa một bản tin hoặc chuyển sang TCP khi cần. Với transfer qua TCP, middlebox timeout, MSS và connection reuse có thể ảnh hưởng transfer lớn.

Không dùng một serial kiểu ngày tháng rồi tăng tùy ý giữa nhiều writer. Ghi chính xác old serial/new serial và chuỗi cập nhật. SOA serial là số 32 bit có wrap-around, phải so sánh theo RFC 1982, không so sánh như số nguyên hoặc ngày tháng thông thường. Với DNSSEC, phân biệt propagation record với thời điểm signer tạo RRSIG; nếu không, độ trễ signing dễ bị quy nhầm cho IXFR.

04

KPI và bằng chứng đầu ra

#

KPI tối thiểu gồm notify delivery latency, transfer start/completion time, bytes transferred, tỷ lệ IXFR/AXFR, serial convergence, record completeness, authoritative answer correctness và tỷ lệ truy vấn lỗi trong transfer. Bảo mật cần có kết quả allow/deny theo source, TSIG success/failure và log không lộ secret.

Serial bằng nhau là điều kiện cần, không phải bằng chứng đủ: lỗi triển khai hoặc thao tác sai vẫn có thể tạo dữ liệu khác cùng serial. Vì vậy phải kiểm record canary hoặc hash normalized content.

  • KPI: Serial convergence · Cách đo: Poll SOA từng node · Bằng chứng pass: Tất cả đạt new serial trong SLO
  • KPI: Data completeness · Cách đo: Query tập canary + hash zone · Bằng chứng pass: Không thiếu/thừa record ngoài thay đổi
  • KPI: IXFR efficiency · Cách đo: Bytes, message sequence · Bằng chứng pass: Delta khi journal đủ và server chọn IXFR; ghi rõ trường hợp chọn full transfer
  • KPI: AXFR fallback · Cách đo: Xóa/giới hạn journal có kiểm soát · Bằng chứng pass: Full transfer hoàn tất, dữ liệu đúng
  • KPI: Authorization · Cách đo: Thử source/key hợp lệ và không hợp lệ · Bằng chứng pass: Chỉ tuple được phép thành công
  • KPI: Availability · Cách đo: Query trong lúc transfer/failover · Bằng chứng pass: Error rate và latency trong budget
05

Ma trận AXFR, IXFR và NOTIFY

#

NOTIFY không mang toàn bộ zone; nó thúc đẩy secondary kiểm tra SOA và quyết định transfer. Không kết luận “NOTIFY thành công” chỉ vì packet đến nếu serial không đổi hoặc transfer sau đó thất bại.

  • Kịch bản: IXFR một thay đổi · Trigger: Thêm/sửa/xóa record · Kỳ vọng: Đo delta hoặc full transfer theo lựa chọn server; serial mới và answer đúng
  • Kịch bản: Nhiều serial liên tiếp · Trigger: Burst update · Kỳ vọng: Secondary hội tụ tới serial cuối, không bỏ dữ liệu
  • Kịch bản: Journal không đủ · Trigger: Yêu cầu serial quá cũ · Kỳ vọng: Fallback AXFR có kiểm soát
  • Kịch bản: Mất NOTIFY · Trigger: Drop UDP/TCP thông báo · Kỳ vọng: Refresh timer cuối cùng kéo dữ liệu
  • Kịch bản: NOTIFY giả · Trigger: Source/TSIG sai · Kỳ vọng: Không transfer trái phép; có log
  • Kịch bản: Secondary restart · Trigger: Giữ/xóa journal local · Kỳ vọng: Phục hồi đúng theo implementation
  • Kịch bản: Primary failover · Trigger: Chuyển writer/hidden primary · Kỳ vọng: Serial tiếp tục hợp lệ, không split-brain
  • Kịch bản: Zone lớn + loss · Trigger: Impair TCP · Kỳ vọng: Transfer retry/recovery trong SLO
06

Test plan chức năng và bảo mật

#

TSIG xác thực và bảo vệ tính toàn vẹn bản tin bằng shared secret nhưng không mã hóa nội dung; DNSSEC cung cấp xác thực dữ liệu DNS tới validator. Không dùng việc transfer có TSIG để tuyên bố zone đã được DNSSEC bảo vệ, và cũng không dùng DNSSEC để thay thế transfer ACL.

  • Bước 1: Chụp cấu hình, serial và tập record chuẩn trên mọi node.
  • Bước 2: Thêm record canary có TTL xác định; ghi timestamp commit.
  • Bước 3: Quan sát NOTIFY, SOA check, IXFR và thời điểm answer mới xuất hiện.
  • Bước 4: Lặp với sửa, xóa, nhiều update nhanh và serial cũ.
  • Bước 5: Làm journal không đủ trong lab để kích hoạt AXFR fallback.
  • Bước 6: So sánh normalized zone/hàng trăm truy vấn mẫu, không chỉ SOA.
  • Bước 7: Thử AXFR từ source không được phép, key thiếu, key sai và key cũ.
  • Bước 8: Xoay TSIG theo runbook; bảo đảm không tạo khoảng transfer mở.
  • Bước 9: Kiểm tra query availability trong toàn bộ quá trình.
  • Bước 10: Lưu pcap, log, config hash, record diff và kết quả pass/fail.
07

Scale, failover và recovery

#

Tạo profile theo số record, tổng byte, tỷ lệ thay đổi và số secondary đồng thời. Một IXFR rất nhỏ có thể biến thành AXFR khi journal hết; nhiều secondary cùng refresh có thể tạo burst CPU, disk và bandwidth ở primary. Theo dõi queue, TCP resets, transfer concurrency và query latency ở các mốc 50/80/95% tải dự kiến.

Failure injection gồm chặn NOTIFY, mất một chiều TCP, restart primary giữa transfer, đầy disk secondary và chuyển active writer. Sau lỗi, đo tới khi dữ liệu hội tụ và truy vấn phục hồi. Theo RFC 1034, khi không thể refresh trong khoảng SOA expire, secondary phải ngừng coi bản sao zone là authoritative. Việc vẫn trả lời authoritative cho zone đã hết hạn cần được ghi nhận là sai lệch cần điều tra, không coi là high availability; không nhầm cơ chế này với serve-stale ở recursive resolver.

Minh họa: Các bước cập nhật, NOTIFY, so sánh serial, transfer và kiểm tra answer; không phải số liệu hội tụ.
Minh họa: Các bước cập nhật, NOTIFY, so sánh serial, transfer và kiểm tra answer; không phải số liệu hội tụ.
08

Diễn giải kết quả và giới hạn

#

Một lab pass chứng minh topology, version, zone profile và timer đã thử. Nó không chứng minh mọi resolver thấy dữ liệu mới ngay vì caching và TTL nằm ngoài authoritative transfer. Tương tự, truy vấn qua anycast thành công không chứng minh mọi site đã đồng bộ nếu probe chỉ rơi vào một catchment.

Nếu AXFR bị từ chối từ Internet, đó là bằng chứng ACL ở điểm thử; chưa đủ khẳng định mọi interface, IPv6 path hoặc secondary endpoint đều đóng. Nếu IXFR dùng ít byte hơn, chưa thể kết luận hiệu năng tốt hơn khi CPU/journal overhead hoặc signing delay chưa được đo.

09

Runbook vận hành

#
  • Chỉ định primary writer, serial policy và owner phê duyệt thay đổi.
  • Theo dõi serial skew, transfer failures, AXFR fallback rate và zone expire.
  • Canary query trực tiếp từng authoritative node, cả IPv4 và IPv6.
  • Giới hạn transfer bằng ACL và TSIG; quản lý vòng đời key riêng.
  • Cảnh báo khi IXFR đột ngột chuyển thành AXFR hoặc bytes tăng bất thường.
  • Regression sau nâng cấp DNS, thay đổi signer, firewall hoặc topology.
  • Lưu bằng chứng rollback: zone snapshot, config, serial và key version.
10

Khái niệm cần nhớ

#
  • AXFR: truyền toàn bộ nội dung zone theo RFC 5936.
  • IXFR: truyền thay đổi giữa các serial theo RFC 1995.
  • DNS NOTIFY: thông báo chủ động để secondary kiểm tra cập nhật.
  • SOA serial: số phiên bản logic của zone.
  • Hidden primary: primary không trực tiếp phục vụ truy vấn công khai.
  • TSIG: xác thực bản tin DNS bằng shared secret; khác DNSSEC.
THUẬT NGỮ NHANH

Khái niệm cần nhớ

Baseline
Dải giá trị bình thường được thu đủ lâu để làm mốc so sánh và đặt ngưỡng.
SLA
Cam kết chất lượng dịch vụ gắn với KPI, phạm vi, thời gian và cách đo cụ thể.
Active test
Phép đo dùng traffic tổng hợp được tạo có chủ đích giữa các điểm kiểm tra.
TÀI LIỆU ĐỐI CHIẾUTài liệu tham khảo7 nguồn
Nguyên tắc biên tập

NetVali ưu tiên nguồn tiêu chuẩn và tài liệu chính thức; phân biệt khuyến nghị triển khai với yêu cầu của tiêu chuẩn; không công bố thông số sản phẩm chưa gắn với phiên bản và điều kiện đo.

Thông số và khả năng sản phẩm có thể thay đổi theo phiên bản. Hãy đối chiếu tài liệu chính thức trước khi xây dựng cấu hình hoặc tiêu chí nghiệm thu.
BẮT ĐẦU TỪ BÀI TOÁN

Cần chuyển kiến thức thành test plan?

Chia sẻ mục tiêu, topology và ràng buộc kỹ thuật. NetVali sẽ cùng bạn xác định bài đo phù hợp.

Trao đổi yêu cầu kỹ thuật