PowerDNS (pdns) là một máy chủ DNS nguồn mở được viết bằng C++ và được phát hành theo Giấy phép GPL. Nó đã trở thành một giải pháp thay thế tốt cho máy chủ DNS truyền thống Bind, được thiết kế với hiệu suất tốt hơn và yêu cầu bộ nhớ thấp. PowerDNS cung cấp hai sản phẩm, máy chủ Authoritative và Recursor. Máy chủ PowerDNS Authoritative có thể được cấu hình thông qua các backend khác nhau, bao gồm các tệp Bind zone đơn giản, RDBMS như MySQL, PostgreSQL, SQLite3 hoặc LDAP.
Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt và cấu hình máy chủ PowerDNS Authoritative với máy chủ cơ sở dữ liệu MariaDB làm Backend và sử dụng Poweradmin để quản lý DNS dễ dàng.
Cài đặt kho lưu trữ EPEL và PHP Remi bằng các lệnh sau.
Sau khi các kho lưu trữ này được thêm vào hệ thống, hãy cài đặt gói 'yum-utils'.
Và kích hoạt kho lưu trữ PHP 7.2 Remi bằng lệnh sau.
Cài đặt MariaDB bằng lệnh yum sau.
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ MariaDB và thêm nó vào thời gian khởi động.
Tiếp theo, chúng ta sẽ định cấu hình mật khẩu gốc cho MariaDB bằng công cụ tương tác có tên là 'mysql_secure_installation'.
Chạy lệnh bên dưới.
Và bạn sẽ được nhắc định cấu hình mật khẩu gốc của máy chủ cơ sở dữ liệu. Nhập 'Y' để thiết lập mật khẩu gốc và nhập mật khẩu mạnh.
Đối với những mật khẩu khác, chỉ cần nhập 'Y' để có.
Kết quả là bạn đã cài đặt máy chủ cơ sở dữ liệu MariaDB và thiết lập mật khẩu root để xác thực.
Tiếp theo, chúng ta sẽ tạo cơ sở dữ liệu và người dùng mới để cài đặt PowerDNS. Đăng nhập vào shell MySQL bằng người dùng root và mật khẩu của bạn.
Chạy lệnh MySQL bên dưới.
Bây giờ hãy tạo một cơ sở dữ liệu mới có tên là 'powerdns' và cấp tất cả các quyền cơ sở dữ liệu cho một người dùng mới có tên là 'pdns' với mật khẩu 'pdnspassword2018'.
Sau đó, tạo cấu trúc bảng cho cơ sở dữ liệu PowerDNS bằng cách chạy các truy vấn MySQL sau đây.
Kết quả là cơ sở dữ liệu MySQL/MariaDB và người dùng để cài đặt PowerDNS đã được tạo.
Sau khi cài đặt các gói PowerDNS, hãy vào thư mục '/etc/pdns/' và chỉnh sửa tệp cấu hình 'pdns.conf' bằng vim biên tập viên.
Theo mặc định, PowerDNS sử dụng 'bind' làm phần phụ trợ. Vì vậy, hãy nhập chú thích '#' vào phía trước cấu hình 'launch=bind' và dán cấu hình MySQL backend như bên dưới.
Lưu và đóng.
Bây giờ hãy khởi động dịch vụ pdns và thêm nó vào thời gian khởi động.
Sau đó, hãy thêm dịch vụ DNS vào tường lửa.
Và Dịch vụ PowerDNS đã hoạt động, hãy kiểm tra bằng lệnh sau.
Kết quả là, bạn sẽ nhận được thông báo dịch vụ pdns đã hoạt động trên cổng 53 và nhận được phản hồi từ máy chủ PowerDNS.
Cài đặt máy chủ web httpd và các gói PHP bằng lệnh sau.
Sau khi cài đặt, chúng ta cần cài đặt thêm các gói PHP Pear. Chạy lệnh sau.
Sau khi cài đặt httpd và PHP hoàn tất, hãy khởi động dịch vụ httpd và thêm nó vào thời gian khởi động.
Tiếp theo, hãy vào thư mục '/var/www/html' và tải xuống mã nguồn poweradmin.
Giải nén tệp nén poweradmin và đổi tên.
Sau đó, thêm giao thức HTTP và HTTPS vào tường lửa.
Và chúng ta đã sẵn sàng cho quá trình cài đặt poweradmin sau đó.
Chọn ngôn ngữ ưa thích của bạn và nhấp vào nút 'Đi đến Bước 2'.
Bây giờ chỉ cần nhấp vào nút 'Đi đến Bước 3'.
Và bạn sẽ được hiển thị để cấu hình cơ sở dữ liệu. Nhập thông tin chi tiết về cơ sở dữ liệu PowerDNS mà chúng tôi đã tạo và mật khẩu quản trị viên cho PowerDNS.
Nhấp vào nút 'Đi đến Bước 4'.
Sau đó, bạn sẽ cần tạo một người dùng mới có quyền hạn hạn chế. Nhập các thông tin chi tiết như sau và thay đổi tên người dùng, mật khẩu, v.v. theo thông tin của riêng bạn.
Bây giờ hãy nhấp vào nút 'Đi tới Bước 5'.
Và bạn sẽ thấy trang như bên dưới.
Mở lại máy chủ đầu cuối của bạn, đăng nhập bằng tên người dùng và mật khẩu gốc. Sau đó chạy các truy vấn MySQL như trên trang.
Bây giờ quay lại trình duyệt web và nhấp vào nút 'Go to Step 6'.
Và bạn sẽ thấy trang như bên dưới.
Trình cài đặt không thể tạo cấu hình mới '../inc/config.inc.php'. Vì vậy, chúng ta cần tạo thủ công.
Quay lại máy chủ đầu cuối, vào thư mục '/var/www/html/poweradmin' và tạo tệp cấu hình mới 'inc/config.inc.php'.
Bây giờ hãy dán tập lệnh PHP trên trang vào đó.
Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt và cấu hình máy chủ PowerDNS Authoritative với máy chủ cơ sở dữ liệu MariaDB làm Backend và sử dụng Poweradmin để quản lý DNS dễ dàng.
Điều kiện tiên quyết
- Máy chủ CentOS 7
- Quyền root
Những gì chúng ta sẽ làm:
- Cài đặt EPEL và Remi Repositories
- Cài đặt và cấu hình MariaDB
- Cài đặt PowerDNS
- Cài đặt Poweradmin
- Poweradmin sau khi cài đặt
- Tạo vùng mẫu
Bước 1 - Cài đặt Kho lưu trữ EPEL và Remi
Trước hết, chúng ta cần cài đặt các phần phụ thuộc cho quá trình cài đặt PowerDNS. Chúng ta sẽ cài đặt kho lưu trữ EPEL và REMI cho cài đặt PHP 7.2.Cài đặt kho lưu trữ EPEL và PHP Remi bằng các lệnh sau.
Mã:
yum -y install epel-release
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Mã:
yum -y install yum-utils
Mã:
yum-config-manager --enable remi-php72
Bước 2 - Cài đặt và cấu hình MariaDB
Máy chủ PowerDNS Authoritative hỗ trợ một backend khác, bao gồm máy chủ cơ sở dữ liệu MySQL/MariaDB. Thuật ngữ 'backend' là kho dữ liệu mà máy chủ sẽ tham khảo có chứa các bản ghi DNS (và một số siêu dữ liệu). Và đối với hướng dẫn này, chúng ta sẽ sử dụng MariaDB làm backend.Cài đặt MariaDB bằng lệnh yum sau.
Mã:
yum -y install mariadb mariadb-server
Mã:
systemctl start mariadb
systemctl enable mariadb
Chạy lệnh bên dưới.
Mã:
mysql_secure_installation
Mã:
Đặt mật khẩu gốc? [Y/n] Y
Mật khẩu mới:
Nhập lại mật khẩu mới:
Mã:
Xóa người dùng ẩn danh? [Y/n] Y
Không cho phép đăng nhập root từ xa? [Y/n] Y
Xóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? [Y/n] Y
Tải lại bảng đặc quyền ngay bây giờ? [Y/n] Y
Tiếp theo, chúng ta sẽ tạo cơ sở dữ liệu và người dùng mới để cài đặt PowerDNS. Đăng nhập vào shell MySQL bằng người dùng root và mật khẩu của bạn.
Chạy lệnh MySQL bên dưới.
Mã:
mysql -u root -p
MẬT KHẨU
Mã:
create database powerdns;
cấp tất cả các quyền trên powerdns.* cho pdns@localhost được xác định bởi 'pdnspassword2018';
flush privileges;
Sau đó, tạo cấu trúc bảng cho cơ sở dữ liệu PowerDNS bằng cách chạy các truy vấn MySQL sau đây.
Mã:
sử dụng powerdns;
TẠO BẢNG tên miền (
id INT TỰ ĐỘNG TĂNG,
tên VARCHAR(255) KHÔNG NULL,
chủ VARCHAR(128) MẶC ĐỊNH NULL,
kiểm tra cuối cùng INT MẶC ĐỊNH NULL,
loại VARCHAR(6) KHÔNG NULL,
thông báo_serial INT MẶC ĐỊNH NULL,
tài khoản VARCHAR(40) MẶC ĐỊNH NULL,
KHÓA CHÍNH (id)
) Engine=InnoDB;
TẠO CHỈ MỤC DUY NHẤT name_index TRÊN tên miền(tên);
TẠO BẢNG bản ghi (
id BIGINT TỰ ĐỘNG TĂNG,
tên_mã_mẶC ĐỊNH NULL,
tên VARCHAR(255) MẶC ĐỊNH NULL,
loại VARCHAR(10) MẶC ĐỊNH NULL,
nội dung VARCHAR(64000) MẶC ĐỊNH NULL,
ttl INT MẶC ĐỊNH NULL,
prio INT MẶC ĐỊNH NULL,
ngày thay đổi INT MẶC ĐỊNH NULL,
vô hiệu hóa TINYINT(1) MẶC ĐỊNH 0,
tên đơn hàng VARCHAR(255) NHỊ PHÂN MẶC ĐỊNH NULL,
xác thực TINYINT(1) MẶC ĐỊNH 1,
KHÓA CHÍNH (id)
) Engine=InnoDB;
TẠO CHỈ MỤC nametype_index TRÊN các bản ghi(tên,loại);
TẠO CHỈ MỤC domain_id TRÊN các bản ghi(tên_miền_id);
TẠO CHỈ MỤC recordorder TRÊN các bản ghi (tên_miền, tên_đơn_hàng);
TẠO BẢNG siêu quản trị (
ip VARCHAR(64) KHÔNG NULL,
máy chủ tên VARCHAR(255) KHÔNG NULL,
tài khoản VARCHAR(40) KHÔNG NULL,
KHÓA CHÍNH (ip, máy chủ tên)
) Engine=InnoDB;
TẠO BẢNG bình luận (
id INT TỰ ĐỘNG TĂNG,
id_tên_miền INT KHÔNG NULL,
tên VARCHAR(255) KHÔNG NULL,
loại VARCHAR(10) KHÔNG NULL,
đã sửa đổi tại INT KHÔNG NULL,
tài khoản VARCHAR(40) KHÔNG NULL,
bình luận VARCHAR(64000) KHÔNG NULL,
KHÓA CHÍNH (id)
) Engine=InnoDB;
TẠO CHỈ MỤC comments_domain_id_idx TRÊN bình luận (domain_id);
TẠO CHỈ MỤC comments_name_type_idx TRÊN bình luận (name, type);
TẠO CHỈ MỤC comments_order_idx TRÊN bình luận (domain_id, modified_at);
TẠO BẢNG domainmetadata (
id INT TỰ ĐỘNG TĂNG,
domain_id INT KHÔNG NULL,
loại VARCHAR(32),
nội dung VĂN BẢN,
KHÓA CHÍNH (id)
) Engine=InnoDB;
TẠO CHỈ MỤC domainmetadata_idx TRÊN domainmetadata (domain_id, loại);
TẠO BẢNG khóa mật mã (
id INT TỰ ĐỘNG TĂNG,
domain_id INT KHÔNG NULL,
cờ INT KHÔNG NULL,
BOOL đang hoạt động,
nội dung VĂN BẢN,
KHÓA CHÍNH(id)
) Engine=InnoDB;
TẠO CHỈ MỤC domainidindex TRÊN khóa mật mã(domain_id);
TẠO BẢNG tsigkeys (
id INT AUTO_INCREMENT,
name VARCHAR(255),
algorithm VARCHAR(50),
secret VARCHAR(255),
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
quit;
Bước 3 - Cài đặt PowerDNS
Cài đặt PowerDNS và tất cả các gói cần thiết bằng lệnh sau.
Mã:
yum -y install pdns pdns-backend-mysql bind-utils
Mã:
cd /etc/pdns/
vim pdns.conf
Mã:
#launch=bind
launch=gmysql
gmysql-host=localhost
gmysql-user=pdns
gmysql-password=pdnspassword2018
gmysql-dbname=powerdns
Bây giờ hãy khởi động dịch vụ pdns và thêm nó vào thời gian khởi động.
Mã:
systemctl start pdns
systemctl enable pdns
Mã:
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
Và Dịch vụ PowerDNS đã hoạt động, hãy kiểm tra bằng lệnh sau.
Mã:
netstat -tap | grep pdns
netstat -tulpn | grep 53
dig @10.9.9.10
Bước 4 - Cài đặt Poweradmin
Trong bước này, chúng ta sẽ cài đặt trình quản lý DNS cho PowerDNS có tên là 'Poweradmin'. Đây là một ứng dụng web dựa trên PHP, vì vậy chúng ta cần cài đặt PHP và máy chủ web để chạy ứng dụng.Cài đặt máy chủ web httpd và các gói PHP bằng lệnh sau.
Mã:
yum -y install httpd php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext
Mã:
yum -y install php-pear-DB php-pear-MDB2-Driver-mysqli
Mã:
systemctl start httpd
systemctl enable httpd
Mã:
cd /var/www/html/
wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
Mã:
tar xvf poweradmin-2.1.7.tgz
mv poweradmin-2.1.7/ poweradmin/
Mã:
firewall-cmd --add-service={http,https} --permanent
firewall-cmd --reload
Bước 5 - Poweradmin Sau khi cài đặt
Mở trình duyệt web của bạn và nhập địa chỉ IP của máy chủ cộng với URL đường dẫn /poweradmin/install/ để cài đặt. Của tôi là:Chọn ngôn ngữ ưa thích của bạn và nhấp vào nút 'Đi đến Bước 2'.
Bây giờ chỉ cần nhấp vào nút 'Đi đến Bước 3'.
Và bạn sẽ được hiển thị để cấu hình cơ sở dữ liệu. Nhập thông tin chi tiết về cơ sở dữ liệu PowerDNS mà chúng tôi đã tạo và mật khẩu quản trị viên cho PowerDNS.
Nhấp vào nút 'Đi đến Bước 4'.
Sau đó, bạn sẽ cần tạo một người dùng mới có quyền hạn hạn chế. Nhập các thông tin chi tiết như sau và thay đổi tên người dùng, mật khẩu, v.v. theo thông tin của riêng bạn.
Bây giờ hãy nhấp vào nút 'Đi tới Bước 5'.
Và bạn sẽ thấy trang như bên dưới.
Mở lại máy chủ đầu cuối của bạn, đăng nhập bằng tên người dùng và mật khẩu gốc. Sau đó chạy các truy vấn MySQL như trên trang.
Mã:
mysql -u root -p
PASSWORD
GRANT SELECT, INSERT, UPDATE, DELETE
ON powerdns.*
TO 'hakase'@'localhost'
IDENTIFIED BY 'hakase-labs123';
Bây giờ quay lại trình duyệt web và nhấp vào nút 'Go to Step 6'.
Và bạn sẽ thấy trang như bên dưới.
Trình cài đặt không thể tạo cấu hình mới '../inc/config.inc.php'. Vì vậy, chúng ta cần tạo thủ công.
Quay lại máy chủ đầu cuối, vào thư mục '/var/www/html/poweradmin' và tạo tệp cấu hình mới 'inc/config.inc.php'.
Mã:
cd /var/www/html/poweradmin
vim inc/config.inc.php
Mã: