Hướng dẫn cài đặt PowerDNS
Overall architecture
- Kiến trúc trên bao gồm 3 server Authoriative chỉ phục vụ resolve private DNS, 2 server Recusor để resolve public DNS.
- Client nếu muốn chỉ resolve private DNS thì chỉ cần trỏ về Authoritative, muốn resolve cả hai thì trỏ DNS server về Recursor.
- Để resolve được public DNS, các server Recursor cần có public IP
- Cài đặt VIP trên các server, tham khảo thêm tại Create VIPs by Keepalived.
Cài đặt PDNS Authoritative
Quy hoạch domain
- Để PDNS hoạt động được trên nhiều server, ta tiến hành quy hoạch domain cho chúng như sau:
server | domain |
---|---|
10.10.40.100 | ns1.dns.stg |
10.10.40.101 | ns2.dns.stg |
10.10.40.102 | ns3.dns.stg |
- Thêm các records vào
/etc/hosts
của cả 3 server
Cài đặt MySQL sử dụng làm backend cho PDNS
- Có nhiều database có thể sử dụng làm backend cho PDNS, trong phạm vi bài viết này, mình sử dụng MySQL do có nhiều sự quen thuộc.
- Tùy thuộc vào hệ điều hành, cách thức cài đặt mysql sẽ khác nhau. Tiếp cận từng bước theo MySQL Installation Guide để cài đặt.
- Trước khi cài đặt, cần chuẩn bị script các bảng trong database.
- Sau khi cài đặt thành công, tạo database và user như sau:
- Trên 10.10.40.100
- Tạo database và user
- Import file database đã chuẩn bị ở trên vào database
- Trên 10.10.40.101
- Tạo database và user
- Import file database đã chuẩn bị ở trên vào database
- Login vào database và thêm vào dòng sau:
- Trên 10.10.40.102
- Tạo database và user
- Import file database đã chuẩn bị ở trên vào database
- Login vào database và thêm vào dòng sau:
- Trên 10.10.40.100
Cài đặt PDNS
- Tiếp cận từng bước theo powerdns repo để cài đặt phiên bản phù hợp.
CentOS7
và4.7.4
được sử dụng trong bài này. Cài đặt nó và các thư viện cần sử dụng trên cả ba server: - Kiểm tra kết quả cài đặt
Kết quả phải tương tự như:
Nov 15 11:34:18 PowerDNS Authoritative Server 4.7.4 (C) 2001-2022 PowerDNS.COM BV Nov 15 11:34:18 Using 64-bits mode. Built using gcc 8.3.1 20190311 (Red Hat 8.3.1-3) on Apr 17 2023 07:39:17 by root@89eec22969dd. Nov 15 11:34:18 PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms of the GPL version 2. Nov 15 11:34:18 Features: libcrypto-ecdsa libgeoip libmaxminddb lua lua-records PKCS#11 protobuf sodium curl DoT Nov 15 11:34:18 Built-in modules: Nov 15 11:34:18 Configured with: " '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu'
Tiếp theo, config pdns trên các server
Master
Chỉnh sửa config của pdns tại /etc/pdns/pdns.conf
Slave
Tương tự như master, thay đỏi địa chỉ trên mỗi slave cho phù hợp
- Start pdns trên cả 3 server
- Kiểm tra trạng thái service, kết quả nên là
● pdns.service - PowerDNS Authoritative Server Loaded: loaded (/usr/lib/systemd/system/pdns.service; disabled; vendor preset: disabled) Active: active (running) since T3 2023-11-14 15:35:35 +07; 23h ago Docs: man:pdns_server(1) man:pdns_control(1) https://doc.powerdns.com Main PID: 29723 (pdns_server) CGroup: /system.slice/pdns.service └─29723 /usr/sbin/pdns_server --socket-dir=/run/pdns --guardian=no --daemon=no --disable-syslog --log-timestamp=no --write-pid=no
Cài đặt PowerDNS-Admin
- Đây là một web UI sử dụng pdns API để quản lý cluster. tiếp cận từng bước theo PowerDNS-Admin wiki để cài đặt.
- Sử dụng Supervisord để setup web server
- Thay đổi file config của PowerDNS-Admin
- Start dịch vụ PowerDNS-Admin
- Kiểm tra trạng thái của dịch vụ
-
Kết quả nên là
-
Tới đây, cài đặt xem như đã hoàn tất. Nếu không có nhu cầu sử dụng recursor, client có thể phân giải DNS bằng cách thay đổi DNS server về các VIP/IP của pdns server. Người dùng có thể vào giao diện web tại http://10.10.40.100:9191 để sử dụng PowerDNS-Admin
- Sau khi vào giao diện, tạo tài khoản mới, tài khoản đầu tiên đươc tạo sẽ là tài khoản admin.
-
Sau khi có tài khoản, tiến hành đăng nhập. Và cấu hình API để có PowerAdmin có thể sử dụng pdns API
- Tại thanh công cụ bên trái, chọn Settings → PDNS
- Nhập vào thông tin URL và API key được cài đặt ở master
-
Tạo domain
dns.stg
với các records như sau:
Cài đặt PDNS Recursor
- Tiếp cận từng bước theo Recursor Installation để cài đặt pdns-recursor theo hệ điều hành của mình.
- Config recursor, thay đổi địa chỉ IP và các config khác cho phù hợp
- recursor.conf: file config chính của recursor
- forward-zones: recursor sẽ đi hỏi DNS của các domain được tương ứng với các địa chỉ được cấu hình trong file. Config dưới đây nghĩa là, nếu client yêu cầu resolve domain
dns.stg
thì sẽ hỏi các serverpdns Authoritative
, còn không thì sẽ trả DNS public (của google và cloudflare) - allow: recursor sẽ chỉ cho các server có IP được quy dịnh đươc resolve domain
- recursor.conf: file config chính của recursor