Mấy hôm nay không biết có phải ngẫu nhiên không mà có tới 5 bạn hỏi mình cách buid hệ thống control DNS cho domain. Và mình biết cũng có mấy bên đang cung cấp dịch vụ domain/hosting như BKNS cũng đang tìm hiểu để xây dựng hệ thống này. Thôi thì các bạn đang quan tâm thì mình cũng chia sẻ luôn.
Nói qua chút hệ thống DNS – Nameserver cho domain. Đây là hệ thống dùng để tạo ra các zone và record cho các domain được trỏ vào. Các nhà cung cấp dịch vụ bắt buộc phải có hệ thống này (có thể tự build hoặc dùng của bên mà họ làm đại lý). Do vậy đây là hệ thống vô cùng quan trọng, không có nó thì không có các dịch vụ khác.
Thêm nữa hệ thống DNS – Nameserver không trả lời trực tiếp cho khách hàng cuối mà nó sẽ trả lời cho các DNS trung gian như Google hay DNS nhà mạng. Do vậy khi bạn có 1 triệu người vào web thì không có nghĩa bạn có 1 triệu request tới hệ thống DNS. Thêm nữa thời gian cache tại các DNS trung gian được quy định bởi tham số TTL. Do đó ngày xưa và hiện tại, rất nhiều người hiểu sai cái này nên set tham số rất lớn, như một số cty ở Vn để tới 86,400s (1 ngày) do vậy khi thay đổi IP chờ mốc mồm chưa thấy update. Tham số tối ưu là 3-5 phút. Tất nhiên TTL dài nó cũng có cái lợi, bạn nào quan tâm thì post mình giải đáp.
Bên mình đang dùng hệ thống PowerDNS và lưu zone vào MariaDB. Bên mình chạy 3 máy chủ nằm ở 3 nơi: VNPT, FPT và Singapore để đảm bảo hệ thống luôn được an toàn. Ưu điểm của giải pháp này là chúng ta có thể tự viết control cho khách hàng cuối cực kỳ đơn giản do đã có database, PowerDNS chỉ cần đọc zone từ database ra là xong. Thêm nữa là mỗi khi có thay đổi zone, record thì không cần phải restart hay reload service như Bind9. Đây là một điều cực kỳ lợi khi bạn đang sở hữu số zone và record cực lớn. Áp dụng hệ thống này vào bên mình thì mình thấy:
– Các zone, recode update cực nhanh và cực tiện.
– BKNS đang sử dụng nó để phân giải cho khoảng hơn 20k domain và hơn 400k record cùng với phân giải ngược (PTR) cho 4k IPv4 và một số lượng lớn IPv6.
– Các máy chủ update các chỉnh sửa thông tin record gần như tức thời.
– Hệ thống này bên mình chạy ổn định từ 2014 tới giờ nên các bạn cứ yên tâm mà build.
– Thông tin giải pháp:
https://www.powerdns.com/auth.html
– Hướng dẫn xây dựng:
https://www.howtoforge.com/how-to-install-powerdns-and-pow…/
– Demo bên BKNS đang sử dụng:
https://intodns.com/bkns.vn
Note thêm: Nếu bạn nào sử dụng domain quốc tế để làm nameserver thì cần phải tạo thêm Child Name Servers trên hệ thống của registrar. Còn nếu bạn dùng domain .VN thì chỉ cần tạo các bản ghi A hoặc AAAA trỏ về IP của DNS là hệ thống sẽ hoạt động.
Đây là hệ thống cơ bản, hệ thống bên mình phức tạp hơn khá nhiều và do lý do an toàn, mình xin không public thiết kế hệ thống và cũng không trả lời inbox nhé. Cái này chỉ cần ai hiểu hệ thống là xây dựng cực hoàn hảo.
Thêm nữa để tăng thêm tính ổn định, các bạn có thể dùng Bind9 để làm proxy bên ngoài sau đó forward xuống hệ thống này, cách làm này sẽ giúp bạn có 1 hệ thống trả lời truy vấn cực khủng và cực ổn định.