Giới Thiệu Về PowerDNS
PowerDNS là một phần mềm máy chủ DNS mã nguồn mở nổi bật, tích hợp nhiều tính năng ưu việt từ các máy chủ DNS khác. Với khả năng hoạt động như một server DNS chính hoặc một server phân giải, PowerDNS mang đến hiệu suất cao, khả năng mở rộng và tính linh hoạt cho tổ chức và nhà cung cấp dịch vụ.
Ưu Điểm Của PowerDNS
- Hiệu Suất Cao: Xử lý hàng triệu yêu cầu DNS mỗi giây nhờ kiến trúc phân tán
- Hỗ Trợ Nhiều Giao Thức: Bao gồm DNSSEC, DNS-over-HTTP, DNS-over-TLS và DNS-over-HTTPS, đảm bảo tính bảo mật và riêng tư.
- Tích Hợp Dữ Liệu Linh Hoạt: Hỗ trợ kết nối với nhiều hệ thống cơ sở dữ liệu như MySQL, PostgreSQL, cho phép quản lý dữ liệu DNS một cách dễ dàng.
- Cộng Đồng Hỗ Trợ: Một cộng đồng lớn cùng nhiều tài liệu làm cho việc triển khai và sử dụng PowerDNS trở nên đơn giản hơn.
Bài viết này sẽ hướng dẫn bạn cách cài đặt PowerDNS trên hệ điều hành Debian 12.
1. Chuẩn Bị Môi Trường
Trước khi bắt đầu cài đặt, bạn cần chuẩn bị các yêu cầu sau:
- Server Debian 12
- Cấu Hình Hardware:
- CPU: 2 core
- RAM: 2 GB
- Disk: 20 GB
- Tên miền trỏ tới địa chỉ IP của Server
- Quyền truy cập root
2. Cập Nhật Hệ Thống
Hãy đảm bảo rằng hệ thống của bạn đã cập nhật và nâng cấp trước khi tiến hành cài đặt:
apt update -y
apt upgrade -y
apt install apt-transport-https lsb-release ca-certificates curl dirmngr gnupg
3. Cài Đặt MySQL
Để cài đặt MySQL 8.0 trên Debian, bạn có thể tham khảo bài viết sau:
- Hướng dẫn cài đặt MySQL trên Debian 12
4. Cài Đặt PowerDNS
Trước tiên, vô hiệu hóa systemd-resolved
, một service phân giải DNS mặc định trên Debian:
systemctl disable --now systemd-resolved
Chỉnh sửa file /etc/resolv.conf
để làm cho server có thể phân giải DNS:
echo "nameserver 8.8.8.8" > /etc/resolv.conf # DNS Recursor của Google
echo "nameserver 1.1.1.1" > /etc/resolv.conf # DNS Recursor của Cloudflare
Tiếp theo, cài đặt PowerDNS:
echo 'deb [signed-by=/etc/apt/keyrings/auth-48-pub.asc arch=amd64] http://repo.powerdns.com/debian bookworm-auth-48 main' > /etc/apt/sources.list.d/pdns.list
cat > /etc/apt/preferences.d/auth-48 << EOL
Package: auth*
Pin: origin repo.powerdns.com
Pin-Priority: 600
EOL
install -d /etc/apt/keyrings; curl https://repo.powerdns.com/FD380FBB-pub.asc | tee /etc/apt/keyrings/auth-48-pub.asc
apt update
apt install pdns-server pdns-backend-mysql
systemctl enable pdns
systemctl start pdns
systemctl status pdns
5. Tạo Database và User
Tạo một Database với tên powerdns
và User powerdns_admin
để PowerDNS có thể truy cập MySQL:
mysql -u root -p # Nhập mật khẩu root để truy cập
CREATE DATABASE powerdns;
CREATE USER 'powerdns_admin'@'localhost' IDENTIFIED BY 'Strongpassword';
GRANT ALL ON powerdns.* TO 'powerdns_admin'@'localhost';
FLUSH PRIVILEGES;
exit
6. Nhập Cấu Trúc Bảng Database
Thông thường, cấu trúc bảng database của PowerDNS được lưu tại /usr/share/pdns-backend-mysql/schema/schema.mysql.sql
:
mysql -u powerdns_admin -p powerdns < /usr/share/pdns-backend-mysql/schema/schema.mysql.sql
mysqlshow -u powerdns_admin -p powerdns
7. Tạo Tệp Cấu Hình Kết Nối MySQL
Tạo tệp cấu hình /etc/powerdns/pdns.d/pdns.local.gmysql.conf
:
cat > /etc/powerdns/pdns.d/pdns.local.gmysql.conf << 'EOL'
# MySQL Configuration
# Launch gmysql backend
launch+=gmysql
# gmysql parameters
gmysql-host=127.0.0.1
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=powerdns_admin
gmysql-password=Strongpassword
gmysql-dnssec=yes
EOL
Chỉnh sửa quyền của file để PowerDNS có thể sử dụng nó:
chown pdns: /etc/powerdns/pdns.d/pdns.local.gmysql.conf
chmod 640 /etc/powerdns/pdns.d/pdns.local.gmysql.conf
Kiểm tra kết nối:
systemctl stop pdns.service
pdns_server --daemon=no --guardian=no --loglevel=9
Khởi động lại và kích hoạt dịch vụ PowerDNS:
systemctl restart pdns
systemctl enable pdns
systemctl status pdns
Đảm bảo port 53 đang mở:
ss -alnp4 | grep pdns
8. Tạo Zone và Record Trên PowerDNS
Sử dụng domain nin.id.vn
và địa chỉ IP 123.123.123.123
để tạo zone:
pdnsutil create-zone nin.id.vn
pdnsutil list-all-zones
Tạo thêm một Record A:
pdnsutil add-record nin.id.vn @ A 123.123.123.123
pdnsutil add-record nin.id.vn www A 123.123.123.123
Thông Tin Về Record SOA
Khi tạo một Zone, record SOA (Start Of Authority) sẽ được tự động tạo ra. Đây là record quan trọng để xác định thông tin quản lý cho một Zone cụ thể.
Kiểm Tra Zone
Hiển thị chi tiết zone:
pdnsutil list-zone nin.id.vn
Kết Luận
Bạn đã hoàn tất quá trình cài đặt PowerDNS và MySQL trên Debian 12. Tuy nhiên, để quản lý tốt hơn các Zones và Records, bạn có thể tham khảo cài đặt giao diện quản trị web PowerAdmin trong bài viết tiếp theo.