PowerDNS là một máy chủ tên miền có thẩm quyền miễn phí và mã nguồn mở. Nó được viết bằng C++ và chạy trên các hệ điều hành Unix, Linux và macOS. Nó sử dụng MySQL, MariaDB, PostgreSQL và Oracle để lưu trữ các tệp và bản ghi vùng.
PowerDNS Admin là một công cụ dựa trên web được sử dụng để quản lý PowerDNS. Bạn có thể tạo và quản lý các vùng DNS bằng trình duyệt web. Nó đi kèm với một bộ tính năng phong phú. Dưới đây là một số trong số chúng:
Trước tiên, hãy cài đặt các gói cần thiết bằng lệnh sau:
Sau khi tất cả các gói được cài đặt, hãy thêm khóa ký MariaDB bằng lệnh sau:
Tiếp theo, hãy thêm kho lưu trữ MariaDB bằng lệnh sau:
Tiếp theo, cài đặt máy chủ MariaDB bằng cách chạy lệnh sau:
Sau khi cài đặt, bạn sẽ cần tạo cơ sở dữ liệu và người dùng cho PowerDNS.
Trước tiên, hãy đăng nhập vào MariaDB bằng lệnh sau:
Sau khi đăng nhập, hãy tạo cơ sở dữ liệu và người dùng bằng lệnh sau:
Tiếp theo, xóa các đặc quyền và thoát khỏi shell MariaDB bằng lệnh sau:
Tiếp theo, xóa tệp resolv.conf mặc định và tạo một tệp mới:
Tiếp theo, cài đặt máy chủ PowerDNS bằng lệnh sau:
Sau khi PowerDNS được cài đặt, bạn có thể tiến hành bước tiếp theo.
Tiếp theo, bạn sẽ cần xác định chi tiết kết nối cơ sở dữ liệu PowerDNS. Bạn có thể thực hiện bằng cách chỉnh sửa tệp pdns.local.gmysql.conf:
Thay đổi các dòng sau:
Lưu và đóng tệp sau đó cấp quyền thích hợp cho tệp pdns.local.gmysql.conf:
Tiếp theo, dừng máy chủ PowerDNS và xác minh PowerDNS bằng lệnh sau:
Nếu mọi thứ đều ổn, bạn sẽ nhận được kết quả đầu ra sau:
Tiếp theo, khởi động máy chủ PowerDNS bằng lệnh sau:
Lúc này, PowerDNS đã khởi động và đang lắng nghe trên cổng 53. Bạn có thể kiểm tra bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Sau khi tất cả các phụ thuộc được cài đặt, hãy thêm kho lưu trữ Node.js bằng lệnh sau:
Tiếp theo, hãy cài đặt Node.js bằng lệnh sau:
Tiếp theo, hãy thêm kho lưu trữ yarn bằng lệnh sau:
Tiếp theo, cập nhật kho lưu trữ và cài đặt Yarn bằng lệnh sau:
Lúc này, tất cả các phụ thuộc cần thiết đã được cài đặt, giờ bạn có thể tiến hành bước tiếp theo.
Tiếp theo, thay đổi thư mục thành thư mục đã tải xuống và tạo môi trường ảo Python bằng lệnh sau:
Tiếp theo, kích hoạt môi trường ảo và cài đặt tất cả các phụ thuộc Python bằng lệnh sau:
Tiếp theo, hủy kích hoạt khỏi môi trường ảo bằng lệnh sau:
Thay đổi các dòng sau:
Lưu và đóng tệp sau đó thay đổi thư mục thành pdns và kích hoạt môi trường ảo:
Tiếp theo, cập nhật cơ sở dữ liệu bằng lệnh sau:
Tiếp theo, hủy kích hoạt môi trường ảo bằng lệnh sau:
Thay đổi các dòng sau:
Lưu và đóng tệp, sau đó khởi động lại dịch vụ PowerDNS để áp dụng các thay đổi:
Thêm các dòng sau:
Lưu và đóng tệp, sau đó kiểm tra Nginx xem có lỗi cú pháp nào không bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Tiếp theo, thay đổi quyền sở hữu của pdns thành www-data:
Cuối cùng, khởi động lại dịch vụ Nginx để áp dụng các thay đổi:
Đầu tiên, hãy tạo tệp dịch vụ pdns bằng lệnh sau:
Thêm các dòng sau:
Lưu và đóng tệp, sau đó tạo tệp sockt pdnsadmin bằng lệnh sau:
Thêm các dòng sau:
Lưu và đóng tệp, sau đó tạo các tệp và thư mục cần thiết bằng lệnh sau:
Tiếp theo, tải lại daemon systemd bằng lệnh sau:
Tiếp theo, bật dịch vụ pdnsadmin để bắt đầu khi khởi động lại hệ thống bằng lệnh sau:
Tiếp theo, xác minh trạng thái của cả hai dịch vụ bằng lệnh sau:
Bạn sẽ nhận được kết quả đầu ra sau:
Nhấp vào nút Tạo tài khoản. Bạn sẽ thấy màn hình sau:
Cung cấp thông tin chi tiết về người dùng quản trị của bạn và nhấp vào nút Đăng ký để tạo tài khoản. Bạn sẽ thấy trang đăng nhập quản trị PowerDNS trong màn hình sau:
Cung cấp tên người dùng, mật khẩu quản trị và nhấp vào nút Đăng nhập. Bạn sẽ thấy giao diện web quản trị PowerDNS trong trang sau:
Tại đây, hãy cung cấp URL API PowerDNS để kết nối với PowerDNS và quản lý nó. Sau đó, nhấp vào nút Cập nhật để lưu các thay đổi. Bạn sẽ thấy trang sau:
Nhấp vào nút Bảng điều khiển. Bạn sẽ thấy bảng điều khiển quản trị PowerDNS trong màn hình sau:
PowerDNS Admin là một công cụ dựa trên web được sử dụng để quản lý PowerDNS. Bạn có thể tạo và quản lý các vùng DNS bằng trình duyệt web. Nó đi kèm với một bộ tính năng phong phú. Dưới đây là một số trong số chúng:
- Hỗ trợ IPv4 và IPv6
- Trang trạng thái hiển thị thông tin hữu ích
- Tự động tạo/cập nhật bản ghi PTR ngược
- Hỗ trợ tạo tên miền hàng loạt
- Hỗ trợ mẫu tên miền
- Hỗ trợ DNSsec
- Hỗ trợ xác thực người dùng Active Directory, LDAP, SAML, DB cục bộ
Điều kiện tiên quyết
- Một máy chủ chạy Ubuntu 20.04.
- Một tên miền hợp lệ được trỏ bằng IP máy chủ của bạn.
- Một mật khẩu gốc được định cấu hình cho máy chủ.
Cài đặt và định cấu hình máy chủ MariaDB
Trước khi bắt đầu, bạn sẽ cần cài đặt máy chủ cơ sở dữ liệu MariaDB trong hệ thống của mình. Theo mặc định, phiên bản mới nhất của MariaDB không có sẵn trong kho lưu trữ mặc định của Ubuntu 20.04. Vì vậy, bạn sẽ cần thêm kho lưu trữ MariaDB vào hệ thống của mình.Trước tiên, hãy cài đặt các gói cần thiết bằng lệnh sau:
Mã:
apt-get install software-properties-common gnupg2 -y
Mã:
apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
Mã:
add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirrors.ukfast.co.uk/sites/mariadb/repo/10.5/ubuntu focal main'
Mã:
apt-get install mariadb-server -y
Trước tiên, hãy đăng nhập vào MariaDB bằng lệnh sau:
Mã:
mysql
Mã:
MariaDB [(none)]> create database pdns;
MariaDB [(none)]> cấp tất cả trên pdns.* cho pdnsadmin@localhost được xác định bằng 'password';
Mã:
MariaDB [(none)]> xóa các đặc quyền;
MariaDB [(none)]> thoát;
Cài đặt PowerDNS
Trước tiên, bạn sẽ cần phải vô hiệu hóa dịch vụ systemd-resolved khỏi hệ thống của mình. Bạn có thể vô hiệu hóa nó bằng lệnh sau:
Mã:
systemctl disable --now systemd-resolved
Mã:
rm -rf /etc/resolv.conf
echo "nameserver 8.8.8.8" > /etc/resolv.conf
Mã:
apt-get install pdns-server pdns-backend-mysql -y
Cấu hình PowerDNS
Trước tiên, bạn sẽ cần nhập lược đồ cơ sở dữ liệu PowerDNS vào cơ sở dữ liệu PowerDNS. Bạn có thể nhập lược đồ này bằng lệnh sau:
Mã:
mysql -u pdnsadmin -p pdns < /usr/share/pdns-backend-mysql/schema/schema.mysql.sql
Mã:
nano /etc/powerdns/pdns.d/pdns.local.gmysql.conf
Mã:
# Cấu hình MySQL## Khởi chạy gmysql backendlaunch+=gmysql# tham số gmysqlgmysql-host=127.0.0.1gmysql-port=3306gmysql-dbname=pdnsgmysql-user=pdnsadmingmysql-password=passwordgmysql-dnssec=yes# gmysql-socket=
Mã:
chmod 640 /etc/powerdns/pdns.d/pdns.local.gmysql.conf
Mã:
systemctl stop pdns
pdns_server --daemon=no --guardian=no --loglevel=9
Mã:
02/11 10:43:47 gmysql Kết nối thành công. Đã kết nối với cơ sở dữ liệu 'pdns' trên '127.0.0.1'.02/11 10:43:47 gmysql Kết nối thành công. Đã kết nối với cơ sở dữ liệu 'pdns' trên '127.0.0.1'.02/11 10:43:47 gmysql Kết nối thành công. Đã kết nối với cơ sở dữ liệu 'pdns' trên '127.0.0.1'.02/11 10:43:47 Khởi chạy xong các chủ đề, sẵn sàng phân phối câu hỏi
Mã:
systemctl start pdns
Mã:
ss -alnp4 | grep pdns
Mã:
udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:* users:(("pdns_server",pid=33140,fd=5))tcp LISTEN 0 128 0.0.0.0:53 0.0.0.0:* users:(("pdns_server",pid=33140,fd=7))
Cài đặt PowerDNS Admin
Trong phần này, chúng tôi sẽ chỉ cho bạn cách cài đặt PowerDNS admin với Nginx.Cài đặt các Dependencies bắt buộc
Trước tiên, hãy cài đặt tất cả các dependency cần thiết cho PowerDNS admin bằng lệnh sau:
Mã:
apt-get install nginx python3-dev libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-https virtualenv build-essential libmariadb-dev git python3-flask -y
Mã:
curl -sL https://deb.nodesource.com/setup_14.x | bash -
Mã:
apt-get install nodejs -y
Mã:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
Mã:
apt-get update -y
apt-get install yarn -y
Tải xuống PowerDNS Admin
Tiếp theo, tải xuống phiên bản mới nhất của PowerDNS admin từ kho lưu trữ Git vào thư mục gốc Nginx:
Mã:
git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /var/www/html/pdns
Mã:
cd /var/www/html/pdns/
virtualenv -p python3 flask
Mã:
source ./flask/bin/activate
pip install -r requirements.txt
Mã:
deactivate
Define Database Connection
Tiếp theo, bạn sẽ cần xác định chi tiết kết nối cơ sở dữ liệu PowerDNS vào tệp default_config.py:
Mã:
nano /var/www/html/pdns/powerdnsadmin/default_config.py
Mã:
SALT = 'yoursecretekey'SECRET_KEY = 'yoursecretekey'BIND_ADDRESS = '0.0.0.0'PORT = 9191HSTS_ENABLED = FalseOFFLINE_MODE = FalseSQLA_DB_USER = 'pdnsadmin'SQLA_DB_PASSWORD = 'password'SQLA_DB_HOST = '127.0.0.1'SQLA_DB_NAME = 'pdns'SQLALCHEMY_TRACK_MODIFICATIONS = True
Mã:
cd /var/www/html/pdns/
source ./flask/bin/activate
Mã:
export FLASK_APP=powerdnsadmin/__init__.py
flask db upgrade
yarn install --pure-lockfile
flask asset build
Mã:
deactivate
Bật PowerDNS Admin API
PowerDNS admin sử dụng JSON API để đọc số liệu thống kê và sửa đổi nội dung vùng, siêu dữ liệu và tài liệu khóa DNSSEC. Bạn có thể bật nó bằng cách chỉnh sửa tệp pdns.conf:
Mã:
nano /etc/powerdns/pdns.conf
Mã:
api=yesapi-key=yoursecretekey
Mã:
systemctl restart pdns
Cấu hình Nginx cho PowerDNS Admin
Tiếp theo, bạn sẽ cần cấu hình Nginx cho PowerDNS admin. Để thực hiện, hãy tạo tệp cấu hình máy chủ ảo Nginx bằng lệnh sau:
Mã:
nano /etc/nginx/conf.d/pdns-admin.conf
Mã:
server { lắng nghe *:80; tên_máy_chủ pdnsadmin.example.com; chỉ mục index.html index.htm index.php; gốc /var/www/html/pdns; nhật_ký_truy_cập /var/log/nginx/pdnsadmin_access.log kết hợp; nhật_ký_lỗi /var/log/nginx/pdnsadmin_error.log; kích_thước_phần_tối_đa_của_khách_hàng 10 phút; kích_thước_phần_đệm_phần_của_khách_hàng 128k; tắt chuyển_đổi_proxy; thời_gửi_proxy 90; thời_gửi_proxy 90; thời_gian_đọc_proxy 90; bộ_đệm_proxy 32 4k; kích_thước_bộ_đệm_proxy 8k; bộ_đế_tiêu_đề_proxy Máy chủ $host; bộ_đế_tiêu_đề_proxy X-Địa_chỉ_IP_thực $remote_addr; bộ_đế_tiêu_đề_proxy X-Chuyển_chuyển_chuyển_chuyển_dành cho $proxy_add_x_chuyển_chuyển_chuyển_dành; proxy_headers_hash_bucket_size 64; vị trí ~ ^/static/ { bao gồm /etc/nginx/mime.types; root /var/www/html/pdns/powerdnsadmin; vị trí ~* \.(jpg|jpeg|png|gif)$ { hết hạn sau 365 ngày; } vị trí ~* ^.+.(css|js)$ { hết hạn sau 7 ngày; } } vị trí / { proxy_pass http://unix:/run/pdnsadmin/socket; proxy_read_timeout 120; proxy_connect_timeout 120; proxy_redirect tắt; }}
Mã:
nginx -t
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: kiểm tra tệp cấu hình /etc/nginx/nginx.conf thành công
Mã:
chown -R www-data:www-data /var/www/html/pdns
Mã:
systemctl restart nginx
Tạo tệp dịch vụ Systemd cho quản trị viên PowerDNS
Tiếp theo, bạn sẽ cần tạo tệp dịch vụ systemd để quản lý dịch vụ PowerDNS.Đầu tiên, hãy tạo tệp dịch vụ pdns bằng lệnh sau:
Mã:
nano /etc/systemd/system/pdnsadmin.service
Mã:
[Unit]Description=PowerDNS-AdminRequires=pdnsadmin.socketAfter=network.target[Service]PIDFile=/run/pdnsadmin/pidUser=pdnsGroup=pdnsWorkingDirectory=/var/www/html/pdnsExecStart=/var/www/html/pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsadmin/socket 'powerdnsadmin:create_app()'ExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s TERM $MAINPIDPrivateTmp=true[Cài đặt]WantedBy=multi-user.target
Mã:
nano /etc/systemd/system/pdnsadmin.socket
Mã:
[Unit]Description=PowerDNS-Admin socket[Socket]ListenStream=/run/pdnsadmin/socket[Cài đặt]WantedBy=sockets.target
Mã:
echo "d /run/pdnsadmin 0755 pdns pdns -" >> /etc/tmpfiles.d/pdnsadmin.conf
mkdir /run/pdnsadmin/
chown -R pdns: /run/pdnsadmin/
chown -R pdns: /var/www/html/pdns/powerdnsadmin/
Mã:
systemctl daemon-reload
Mã:
systemctl enable --now pdnsadmin.service pdnsadmin.socket
Mã:
systemctl status pdnsadmin.service pdnsadmin.socket
Mã:
? pdnsadmin.service - PowerDNS-Admin Đã tải: đã tải (/etc/systemd/system/pdnsadmin.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ Hai 2020-11-02 10:54:19 UTC; 5 giây trướcĐược kích hoạt bởi: ? pdnsadmin.socket PID chính: 38881 (gunicorn) Nhiệm vụ: 2 (giới hạn: 2353) Bộ nhớ: 62,5M CGroup: /system.slice/pdnsadmin.service ??38881 /var/www/html/pdns/flask/bin/python /var/www/html/pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsa> ??38898 /var/www/html/pdns/flask/bin/python /var/www/html/pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsa>02 tháng 11 10:54:19 pdnsadmin.example.com systemd[1]: Đã khởi động PowerDNS-Admin.02/11 10:54:19 pdnsadmin.example.com gunicorn[38881]: [02/11/2020 10:54:19 +0000] [38881] [THÔNG TIN] Đang khởi động gunicorn 20.0.402/11 10:54:19 pdnsadmin.example.com gunicorn[38881]: [02/11/2020 10:54:19 +0000] [38881] [THÔNG TIN] Đang nghe tại: unix:/run/pdnsadmin/socket (38881)02/11 10:54:19 pdnsadmin.example.com gunicorn[38881]: [02/11/2020 10:54:19 +0000] [38881] [INFO] Sử dụng worker: đồng bộ02/11 10:54:19 pdnsadmin.example.com gunicorn[38898]: [02/11/2020 10:54:19 +0000] [38898] [INFO] Đang khởi động worker với pid: 38898? pdnsadmin.socket - PowerDNS-Admin socket Đã tải: đã tải (/etc/systemd/system/pdnsadmin.socket; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ Hai 2020-11-02 10:54:19 UTC; 5 giây trước Kích hoạt: ? pdnsadmin.service Nghe: /run/pdnsadmin/socket (Stream) CGroup: /system.slice/pdnsadmin.socket02/11 10:54:19 pdnsadmin.example.com systemd[1]: Nghe trên socket PowerDNS-Admin.
Truy cập Giao diện người dùng web quản trị PowerDNS
Bây giờ, hãy mở trình duyệt web của bạn và truy cập giao diện web quản trị PowerDNS bằng URL . Bạn sẽ được chuyển hướng đến trang sau:Nhấp vào nút Tạo tài khoản. Bạn sẽ thấy màn hình sau:
Cung cấp thông tin chi tiết về người dùng quản trị của bạn và nhấp vào nút Đăng ký để tạo tài khoản. Bạn sẽ thấy trang đăng nhập quản trị PowerDNS trong màn hình sau:
Cung cấp tên người dùng, mật khẩu quản trị và nhấp vào nút Đăng nhập. Bạn sẽ thấy giao diện web quản trị PowerDNS trong trang sau:
Tại đây, hãy cung cấp URL API PowerDNS để kết nối với PowerDNS và quản lý nó. Sau đó, nhấp vào nút Cập nhật để lưu các thay đổi. Bạn sẽ thấy trang sau:
Nhấp vào nút Bảng điều khiển. Bạn sẽ thấy bảng điều khiển quản trị PowerDNS trong màn hình sau: