DNS 從初學者到放棄系列 5

發布時間:2024-05-08 閱讀:3525

基於集群設定 PowerDNS 生產環境。

架構圖。 伺服器時區和時間是統一的:

# ubuntu 22.04.1 LTS 同步網路時間和更改時區 root@dnsdist01: etc powerdns datewed dec 14 02:28:44 am UTC 2022root@dnsdist01: etc powerdns timedatectlroot@dnsdist01: etc powerdns timedatectl list-timezonesroot@dnsdist01: etc powerdns timedatectl set-timezone asia shanghairoot@dnsdist01: etc powerdns apt install ntpdateroot@dnsdist01: etc powerdns ntpdate -u ntp.aliyun.com
負載平衡器和遞迴伺服器配置:

# 192.168.10.100 和 192168.10.在 110 root@dnsdist01中部署 dnsdist 和 pdns-recursor(負載均衡器和遞迴伺服器):hostnamectl --static hostname"dnsdist01" # 192.168.10.100root@dnsdist02:~# hostnamectl --static hostname "dnsdist02"安裝 dnsdistcat > 等 apt 源list.d/pdns.list描述 Ubuntu 2204.1 LTS 網路問題:如果系統埠 53 被 systemd-resolved 占用,systemctl 將停止 systemd-resolvedservicesystemctl disable systemd-resolved.服務修改等解析conf 檔案等解析confnameserver 192.168.10.254 可寫閘道器 IP 或公共 DNSC選項 edns0 trust-adsearchNIC 資訊網路:乙太網:ENS33:位址:-192168.10.100/24 nameservers: addresses: -192.168.10.254 search: [routes: -to: default via: 192.168.10.254 version: 2

伺服器 192168.10.100配置如下:

dnsdist 配置檔案路徑 etc dnsdist dnsdistconf-- 關閉安全更新 預設 setsecuritypollsuffix("secpoll.powerdns.com"安全漏洞警報 setsecuritypollsuffix(""--將本地監聽位址設定為 192168.10.埠 100(共 53 個)預設為 1270.0.1 如果要啟用 IPv6,需要設定 IPv6 位址和埠 setlocal('192.168.10.100:53'--允許列表中的 IP 解析 setacl() dnsdist 是乙個負載均衡器,它本身不做任何 DNS 解析或服務,因此它需要下游伺服器來設定 qps-- 新增伺服器 192168.10.100:553,QPS 限制為 10NewServer() - 新增伺服器 192168.10.110:553,QPS 限制為 10newserver() - 新增伺服器 114114.114.114 並使用本機 192168.10.100 與它通訊 -- newserver() - 將服務載入模式設定為 qps 查詢 要啟用內建的 Web 服務和 API Prometheus 監控指標,您需要呼叫 Web 伺服器 ("127.0.0.1:8083"--將 Web 服務安全性設定為僅允許指定的 IP 訪問,例如 192168.10.0 24 此網段訪問不允許網段中的位址訪問 setwebserverconfig()-supersecretpassword 和 supersecretapikey 來設定安全字串 123 不建議這樣做 您可以使用密碼生成器來生成複雜的密碼 -- doh 預設不啟用 -- adddohlocal('127.0.0.1:8053', '/etc/ssl/certs/example.com.pem', '/etc/ssl/private/example.com.key', "/", }dot 預設不啟用 -- addtlslocal('127.0.0.1:8053', ,
上面的配置,192168.10.100 和 192168.10.110 預設為此配置,您可以更改 setlocal 的 IP 位址。

遞迴伺服器配置:

訪問白名單 如果設定為僅允許這些逗號分隔的網路掩碼遞迴,則預設情況下僅允許訪問 RFC 1918 專用 IP 位址 allow-from=1270.0.0/8, 10.0.0.0/8, 100.64.0.0/10, 169.254.0.0/16, 192.168.0.0/16, 172.16.0.0 12 CIDR 可以寫入檔案 中文 檔案每行必須有乙個 CIDR 不允許逗號分隔 不寫絕對路徑 是 以下 include-dir 指定 conf 配置檔案路徑 allow-from-file=primit-aclconf 目錄路徑 預設 etc powerdns 如果安裝了編譯,則為指定的 sysconfdir 變數路徑 config-dir= etc powerdns root 提示檔案 default usr share dns root提示 例如,當將所有查詢傳送到另乙個 recursor 時,您可以關閉 hint-file= usr share dns root其他配置檔案的提示目錄 include-dir= etc powerdns recursord 服務偵聽位址預設為 1270.0.1 IPv6 位址和埠必須用方括號括起來 IPv6 位址 local-address=192168.10.100 監聽埠 預設 53local-port=553 **域 如果需要解析內部網域名稱**到權威伺服器 格式 domain name=ip:[port] 可以指定埠 不帶冒號和埠,預設 **指定 IP 的 53 埠 forward-zones=exampleorg=203.0.113.210:5300;127.0.0.1, powerdns.com=127.0.0.1;198.51.100.10:530;[2001:db8::1:3]:5300forward-zones=example.org=192.168.10.130:53;192.168.10.140:53 **域檔案 每行只能寫入乙個網域名稱 沒有逗號分隔 當網域名稱轉發區域較多時,單行寫入不方便 可讀性差 可直接寫入單獨的檔案 forward-zones-file=primit-forward-zoneconf 優先遞迴查詢權威伺服器 如果查詢不可用,則遞迴到公共 dns 查詢 forward-zones-recurse==223.5.5.5;114.114.114 Lua 指令碼高階配置支援 lua-config-file= etc powerdns recursorLua 公共網域名稱字尾 listpublic-suffix-list-file= usr share publicsuffix public suffix public suffix listdat 禁用查詢的記錄和答案 quiet=yes 禁用安全更新 預設值 security-poll-suffix=secpollpowerdns.com 不允許安全更新security-poll-suffix= version reply disables security version-string="not currently **ailable"已啟用 Web 服務和 API Webserver=yes 預設未啟用 預設值 1720.0.1webserver-address=192.168.10.100 預設 8082webserver-port=8082 Web 訪問 passwordwebserver-password=pdnsrecursorpassword api-keyapi-key=changeme 日誌 檔案格式顯示 logging-facility=0 預設級別 6 資訊 loglevel=6 預設本地快取最大時間 單位秒 max-negative-ttl=3600
備份原始檔案:

mv /etc/powerdns/recursor.conf /etc/powerdns/recursor.conf.bakvim /etc/powerdns/recursor.conf 將上述配置資訊複製到檔案中
配置完成後,重啟服務

重新啟動遞迴伺服器 systemctl restart pdns-recursorservicesystemctl status pdns-recursor.服務重啟負載均衡器 systemctl 重啟 dnsdistservicesystemctl status dnsdist.service
最後,執行netstat命令查詢程序資訊

服務偵聽。 或者使用 ss 命令檢視:

伺服器 192168.10.110配置同上,如下圖所示

dnsdist 配置檔案路徑 etc dnsdist dnsdistconf-- 關閉安全更新 預設 setsecuritypollsuffix("secpoll.powerdns.com"安全漏洞警報 setsecuritypollsuffix(""--將本地監聽位址設定為 192168.10.埠 110(共 53 個)預設為 1270.0.1setlocal('192.168.10.110:53'--設定訪問控制列表 允許所有 **IP 訪問 setacl() 而無需設定 -DNSDIST 是乙個負載均衡器 它本身不做任何DNS解析或服務,所以需要下游伺服器設定qps-- newserver()-add server 192168.10.110:553 QPS 限制為 10NewServer() - 新增伺服器 192168.10.100:553 QPS 限制為 10NewServer() - 新伺服器 114114.114.114 並使用本機 192168.10.100 與它通訊 -- newserver() - 開啟內建的 Web 服務和 apiwebserver("127.0.0.1:8083"--將 Web 服務安全性設定為僅允許指定的 IP 訪問,例如 192168.10.0 24 此 CIDR 塊不允許 CIDR 塊中的位址訪問 setwebserverconfig()。
dnsdist 服務配置檔案如上,遞迴伺服器配置如下

訪問白名單 如果設定為僅允許這些逗號分隔的網路掩碼遞迴,則預設情況下僅允許訪問 RFC 1918 專用 IP 位址 allow-from=1270.0.0/8, 10.0.0.0/8, 100.64.0.0/10, 169.254.0.0/16, 192.168.0.0/16, 172.16.0.0 12 CIDR 可以寫入檔案 中文 檔案每行必須有乙個 CIDR 不允許逗號分隔 不寫絕對路徑 是 以下 include-dir 指定 conf 配置檔案路徑 allow-from-file=primit-aclconf 目錄路徑 預設 etc powerdns 如果安裝了編譯,則為指定的 sysconfdir 變數路徑 config-dir= etc powerdns root 提示檔案 default usr share dns root提示 例如,當將所有查詢傳送到另乙個 recursor 時,您可以關閉 hint-file= usr share dns root其他配置檔案的提示目錄 include-dir= etc powerdns recursord 服務偵聽位址預設為 1270.0.1 IPv6 位址和埠必須用方括號括起來 IPv6 位址 local-address=192168.10.110 監聽埠 預設 53local-port=553 **域 如果需要解析內部網域名稱**到權威伺服器 格式 domain name=ip:[port] 可以指定埠 不帶冒號和埠,預設 **指定 IP 的 53 埠 forward-zones=exampleorg=203.0.113.210:5300;127.0.0.1, powerdns.com=127.0.0.1;198.51.100.10:530;[2001:db8::1:3]:5300forward-zones=example.org=192.168.10.130:53;192.168.10.140:53 **域檔案 每行只能寫入乙個網域名稱 無逗號分隔 forward-zones-file=primit-forward-zoneconf 優先遞迴查詢權威伺服器 如果查詢不可用,則遞迴到公共 dns 查詢 forward-zones-recurse==223.5.5.5;114.114.114 Lua 指令碼高階配置支援 lua-config-file= etc powerdns recursorLua 公共網域名稱字尾 listpublic-suffix-list-file= usr share publicsuffix public suffix public suffix listdat 禁用查詢的記錄和答案 quiet=yes 禁用安全更新 預設值 security-poll-suffix=secpollpowerdns.com 不允許安全更新security-poll-suffix= version reply disables security version-string="not currently **ailable"已啟用 Web 服務和 API Webserver=yes 預設未啟用 預設值 1720.0.1webserver-address=192.168.10.110 預設 8082webserver-port=8082 Web Access Passwordwebserver-password=pdnsrecursorpassword api-keyapi-key=changeme 日誌 檔案格式顯示 logging-facility=0 預設級別 6 資訊 loglevel=6 預設本地快取最大時間 單位秒 max-negative-ttl=3600
配置上乙個遞迴伺服器後,只有乙個 DNSDIST 下游伺服器up配置了兩個遞迴伺服器後,重新啟動 dnsdist 伺服器後,dnsdist 的兩個下游伺服器都up

下游伺服器顯示啟動狀態。

權威伺服器配置和安裝:

資料庫是乙個主資料庫和乙個集群,keepalive 用於故障轉移

A和B兩台機器,A是主資料庫,負責讀寫,B是從資料庫,負責讀取資料。

如果資料庫A發生故障,資料庫B成為master資料庫,負責讀寫,故障修復後,A成為從屬資料庫,master資料庫B將資料同步到從資料庫A。

上圖取自婁仔原文,可直接向婁仔知虎檢視。

主資料庫建設與配置:192個168.10.120 構建主資料庫和構建主 PowerDNS 權威伺服器,建議在官方環境中使用 RDS 或單獨的機器構建資料庫。

apt-get 安裝 mysql 57.40root@pdns01:首頁 Scops APT更新 **APT倉庫安裝包,ubuntu安裝包是。 DEB 檔案 WGET
在彈出框中,選擇:ubuntu bionic(ubuntu18.04系統的代號為BIONIC,選擇1804 的安裝儲存庫)。

mysql 5.7.40

在彈出框中,選擇:mysql server & cluster

在彈出框中,選擇:mysql-5.7

mysql-5.7 選擇。

當前版本為 MySQL 57

如上圖所示,請確保選擇的是當前版本mysql-5.7點選ok

首先,匯入倉庫的金鑰資訊 apt-key adv --keyserver keyserverubuntu.com --recv-keys 467b942d3a79bd29 update repository information apt update 檢查Mysql5配置是否成功7 apt-cache 策略 mysql-server

查詢 MySQL 57

使用 apt 安裝 MySQL 客戶端和 MySQL 伺服器 apt install -f -y mysql-client=57* mysql-community-server=5.7*

輸入您的密碼。 在上圖的彈窗框中輸入root密碼,選擇確定,密碼是任意的,設定在這裡的設定中hua321鑑於。

mysql 5.7. 安裝後,MySQL 啟動的預設配置檔案路徑為:/etc/mysql/my.cnf,請參閱 etc mysql 目錄下的配置檔案資訊

配置檔案目錄。

在上圖中,我的cnf.回退是備份的回滾檔案,其他所有內容都很有用。

my.cnf 是乙個符號鏈結,指向 etc 替代品 mycnf,但這個檔案也是乙個符號鏈結,檔案指向etc mysql mysqlcnf,所以最終檔案是 mysqlcnf,如果我的cnf 修改 mysqlCNF 是同步的。

my.cnf 沒有特定的引數,而是包含兩個資料夾,並將不同的模組配置放在不同的資料夾中

!includedir /etc/mysql/conf.d/!includedir /etc/mysql/mysql.conf.d,所以我們主要需要修改etc mysql mysqlconf.d/mysqld.cnf 檔案,主要配置伺服器引數配置
此外,系統會自動建立管理服務 MySQLservice

# mysql 5.7 狀態和啟停守護程序管理工具 systemctl status mysqlservicesystemctl stop mysql.servicesystemctl start mysql.servicesystemctl restart mysql.service
主節點引導配置檔案配置:

登入到主節點資料庫 root@pdns01: etc mysql mysql -uroot -penter password: 在 master 資料庫上輸入上面的 root 密碼 設定乙個用於複製的帳戶並在此處授予複製 sl**e 以建立複製使用者 dnstosyn 以允許從屬伺服器 ip 192168.10.130 個主機連線到 MySQL>授予複製 sl**e,複製客戶端開啟 *to 'dnstosyn'@'192.168.10.130' identified by 'powerdns666';mysql> flush privileges;
修改主節點資料庫配置檔案引數

[mysqld] 程序檔案路徑 pid-file = var run mysqld mysqldpid 套接字檔案路徑 socket = var run mysqld mysqld襪子資料目錄 datadir = var lib mysql 錯誤 日誌路徑 log-error = var 日誌 mysql 錯誤預設情況下,日誌僅接受來自 localhost bind-address = 127 的連線0.0.1 禁用符號連線 為了保護 symbolic-links=0 [必須] 配置唯一的伺服器 ID,請不要設定 mysql5錯誤會在7以上上報,這裡按照這個配置,通過IP位址主機位server-id=120來標識,MySQL會自動將日誌bin設定為ON狀態,即啟用binlog指定binlog的儲存位置,日誌格式為binary log bin= var log mysql master-bin 二進位日誌格式, 並且可以是語句、行或混合 選擇三個binlog format=row二進位資料庫名稱之一進行同步(如果有多個,請配置多個binlog-do-db) binlog-do-db = powerdns 預設情況下,主資料庫中的所有操作都會備份到從資料庫中,有些資料庫可能需要忽略, 您可以將以下配置新增到主資料庫: 哪些資料庫未同步(多次寫入和多行) binlog-ignore-db = mysql binlog-ignore-db = 資訊架構 binlog-ignore-db = 效能架構 binlog-ignore-db = sys automati在這種情況下,授權表中的所有主機列值都必須是 IP 位址 跳過名稱 resolve=1 併發連線數 預設值 100 通常小於 1000 預設值 151max connections=1000 更改字符集 init connect='set collation_connection = utf8_unicode_ci'init_connect='set names utf8'character-set-server = utf8collation-server = utf8_unicode_ciskip-character-set-client-handshake
驗證主資料庫資訊:

mysql> show master status;mysql> reset master;mysql> show processlist;mysql> flush logs;
從節點資料庫配置:

[mysqld]pid-file = /var/run/mysqld/mysqld.pidsocket = /var/run/mysqld/mysqld.sockdatadir = /var/lib/mysqllog-error = /var/log/mysql/error.log# by default we only accept connections from localhost# bind-address = 127.0.0.1 建議禁用 symbolic-links 以防止各種安全風險symbolic-links=0 不得設定 mysql57 個或更多將報告錯誤,如果未重複,則由 IP 位址主機位 server-id=130 標識。MySQL會根據這個配置自動將日誌bin設定為ON狀態,即啟用binlog指定binlog的儲存位置,日誌格式為二進位 中繼日誌= var log mysql mysql-relay-bin 設定唯讀許可權 read only=on 要同步的資料庫名稱(多個資料庫使用逗號, 以逗號分隔) replicate-do-db=powerdns 會自動清除超過 7 天的日誌檔案,您可以根據需要修改 expire-logs-days=7,設定要複製的複製表,並將要忽略的複製表設定為 replicate-ignore-table=table name 1,則 mysqld 僅使用 ipnumbers;在這種情況下,授權表中的所有主機列值都必須是 IP 位址 跳過名稱 解析=1 併發連線數 預設值 100 通常小於 1000 預設值 151max connections=1000
檢查從屬節點資料庫:

要設定從站和主站之間的通訊複製,請使用必要的連線資訊配置從站,並執行以下操作 **將主站更改為主站主機='192.168.10.120',master_port=3306,master_user='dnstosyn',master_password='powerdns666',master_log_file='master-bin.000003',master_log_pos=306;從節點資料庫 mysql 啟動 sl**e 執行緒>啟動 sl**e; mysql> show sl**e status;mysql> show processlist;
從節點設定複製帳戶。

如上圖所示,不設定開啟從節點是沒有用的。

檢查從屬伺服器的狀態:mysql> show sl**e status g;

您必須確保SL**e SQL Running和SL**E IO Running處於Yes狀態,以便主從複製正常。

檢查主伺服器的執行狀態show master status; 檢視從屬伺服器主機列表 show sl**e hosts; 獲取二進位日誌檔案列表:顯示二進位日誌; 只看第乙個binlog檔案的內容顯示binlog事件; 檢視指定二進位日誌檔案的內容,在'mysql-bin.000001';從庫啟動複製執行緒 start sl**e; 停止庫中的複製執行緒 stop sl**e; 重置 sl**e; 
SL**e SQL 執行配置問題:使用命令 show sl**e status g; 發現 sl**e SQL 執行的配置項為 no,需要改為 yes。

mysql> stop sl**e;query ok, 0 rows affected (0.00 sec)mysql> set global sql_sl**e_skip_counter=1;query ok, 0 rows affected (0.00 sec)mysql> start sl**e;query ok, 0 rows affected (0.00 sec)
最後,檢查主從通訊的複製狀態:

SL**e IO 狀態 從屬程式的當前狀態SL**e IO 正在執行:是 讀取主程式的二進位日誌的 I o 執行緒是否正在執行SL**e SQL 執行:是 執行讀取主程式的二進位日誌事件的 SQL 執行緒是否正在執行,就像 I o 執行緒一樣, master 後面的秒數是否為 0,並且 0 是否已經同步
將 PowerDNS 的預設表單結構新增到主資料庫:PowerDNS Authoritative NameServer 4版本 7 是預設模板。

建立資料庫 powerdnsmysql> 建立資料庫 powerdns 字符集 utf8 collate utf8 general ci; 切換到 PowerDNS 資料庫 mysql>使用 powerdns; 用於建立表域的 SQL 語句 ( id int auto increment, name varchar(255) not null, master varchar(128) default null, last check int default null, type varchar(8) not null, notify serial int unsigned default null, account varchar(40) 字符集'utf8' default null, options varchar(64000) default null, catalog varchar(255) default null, primary key (id)) engine=innodb character set 'latin1';create unique index name_index on domains(name);create index catalog_idx on domains(catalog);create table records ( id bigint auto_increment, domain_id int default null, name varchar(255) default null, type varchar(10) default null, content varchar(64000) default null, ttl int default null, prio int default null, disabled tinyint(1) default 0, ordername varchar(255) binary default null, auth tinyint(1) default 1, primary key (id)) engine=innodb character set 'latin1';create index nametype_index on records(name,type);create index domain_id on records(domain_id);create index ordername on records (ordername);create table supermasters ( ip varchar(64) not null, nameserver varchar(255) not null, account varchar(40) character set 'utf8' not null, primary key (ip, nameserver)) engine=innodb character set 'latin1';create table comments ( id int auto_increment, domain_id int not null, name varchar(255) not null, type varchar(10) not null, modified_at int not null, account varchar(40) character set 'utf8' default null, comment text character set 'utf8' not null, primary key (id)) engine=innodb character set 'latin1';create index comments_name_type_idx on comments (name, type);create index comments_order_idx on comments (domain_id, modified_at);create table domainmetadata ( id int auto_increment, domain_id int not null, kind varchar(32), content text, primary key (id)) engine=innodb character set 'latin1';create index domainmetadata_idx on domainmetadata (domain_id, kind);create table cryptokeys ( id int auto_increment, domain_id int not null, flags int not null, active bool, published bool default 1, content text, primary key(id)) engine=innodb character set 'latin1';create index domainidindex on cryptokeys(domain_id);create table tsigkeys ( id int auto_increment, name varchar(255), algorithm varchar(50), secret varchar(255), primary key (id)) engine=innodb character set 'latin1';create unique index namealgoindex on tsigkeys(name, algorithm);
檢視主庫表:

PowerDNS 表結構。

檢查副本資料庫是否同步表結構,檢查表結構是否一致特別要記住,這是單向複製,即 master 資料庫中的資料同步到從屬資料庫。 如果需要實現雙向複製,需要自行了解,不建議在本地DNS場景下使用。

# ubuntu 22.04.1 LTS 安裝 keepalived 也在 192 中168.10.120 和 192168.10.130 安裝 apt-cache madison keepalivedapt install keepaliveded 配置檔案 cp usr share doc keepalivelived samples keepalivedconf.sample /etc/keepalived/keepalived.會議大師 192168.10.120!keepalivedglobal defs vrrp script chk mysql port vrrp instance vi 1 virtual ipaddress track script } 備 192.的配置檔案。168.10.130! configuration file for keepalivedglobal_defs vrrp_script chk_mysql_port vrrp_instance vi_1 virtual_ipaddress track_script }# /etc/keepalived/chk_mysql.sh指令碼!/bin/bashcounter=$(netstat -na | grep "listen" | grep "3306" | wc -l)if [ "$" -eq 0 ];then /etc/init.d/keepalived stopfi
重新啟動keepaliveed,並在主伺服器192上找到它168.10.在 192 的 ENS33 網絡卡上有乙個額外的虛擬 IP 120168.10.10/24

虛擬 IP 現已完成 MySQL + Keepalived 的高可用安裝和切換。

這兩個裝置上仍然安裝權威伺服器,實際生成環境與資料庫和權威伺服器分開安裝。

安裝 PowerDNS 權威名稱伺服器 47.3

建立官方 repo 原始檔並從官方儲存庫 etc apt sources 安裝它list.d/pdns.listcat >/etc/apt/sources.list.d/pdns.檢視權威伺服器狀態 systemctl 狀態 pdns 的列表服務啟動停止系統ctl stop pdnsservicesystemctl start pdns.service
主從資料庫建立資料庫使用者,並將其用作讀取和寫入資料庫的主要權威伺服器

mysql> grant all privileges on powerdns.* to 'pdnsadmin'@'%' identified by 'powerdns4321';mysql> flush privileges;
如果MySQL資料庫使用的儲存引擎是InnoDB,建議您新增外來鍵約束

檢查PowerDNS資料庫使用的儲存引擎:show table status from powerdns;

alter table records add constraint `records_domain_id_ibfk` foreign key (`domain_id`) references `domains` (id`) on delete cascade on update cascade;alter table comments add constraint `comments_domain_id_ibfk` foreign key (`domain_id`) references `domains` (id`) on delete cascade on update cascade;alter table domainmetadata add constraint `domainmetadata_domain_id_ibfk` foreign key (`domain_id`) references `domains` (id`) on delete cascade on update cascade;alter table cryptokeys add constraint `cryptokeys_domain_id_ibfk` foreign key (`domain_id`) references `domains` (id`) on delete cascade on update cascade;
主頒發機構伺服器配置檔案:

cp /etc/powerdns/pdns.conf /etc/powerdns/pdns.conf.bak 配置 pdnsconf disable security updates security-poll-suffix= enable apiapi=yes 用於訪問 REST API 的靜態預共享身份驗證金鑰 api-key=qno9k64vkkkyfz1ltc3klk 訪問控制 allow-axfr-ips=00.0.0/0allow-dnsupdate-from=0.0.0.0/0allow-notify-from=0.0.0.0/0allow-unsigned-notify=yesallow-unsigned-autoprimary=yesalso-notify=192.168.10.120,192.168.10.120 不允許區域傳輸 資料庫主從複製 disable-axfr=no 以守護程式身份執行 daemon=yes 在守護程序中執行 guardian=no 是否為 primary=yes 啟動許可權setgid=pdnssetuid=pdns 是否來自伺服器 secondary=no 啟用詳細查詢 loglogslog-dns-details=yes 禁用所有查詢日誌logslogslog-dns-queries=no,日誌級別:loglevel=6,日誌加時間戳,log-timestamp=yes, 儲存不同的日誌類別, logging-facility=0, 記錄查詢查詢, query-logging=yes, 啟用 webserverwebserver:webserver=yes webserver listener address webserver-address=1270.0.1 個 Web 伺服器監聽埠 webserver-port=8081 pdns 程序監聽位址 IPv4local-address=00.0.0 pdns 程序監聽埠 local-port=53 MySQL 資料庫配置:launch=gmysql MySQL 資料庫位址:寫入 VIP 位址 gmysql-host= 192168.10.10 MySQL資料庫埠 預設值:3306gmysql-port=3306 要連線的資料庫名稱 gmysql-dbname=powerdns 資料庫使用者 gmysql-user=pdnsadmin 資料庫密碼 gmysql-password=powerdns4321
從權威伺服器配置檔案:

關閉安全更新 security-poll-suffix= enable apiapi=yes 靜態預共享身份驗證金鑰,用於訪問 REST API api-key=qno9k64vkkkyfz1ltc3klk 訪問控制 allow-axfr-ips=00.0.0/0allow-dnsupdate-from=0.0.0.0/0allow-notify-from=0.0.0.0/0allow-unsigned-notify=yesallow-unsigned-autoprimary=yesalso-notify=192.168.10.120,192.168.10.120 不允許區域傳輸 用於主從複製的資料庫 disable-axfr=no 將 daemon=yes 作為守護程式執行 watch=no 是否為主 = 否 引導許可權 setgid=pdnssetuid=pdns 是否來自伺服器 secondary=yes 輔助節點檢查區域更新的秒數 預設值:60xfr-cycle-interval=60 啟用詳細查詢日誌logslogslog-dns-details=yes 禁用所有查詢logslog-dns-queries=no 日誌級別: loglevel=6 向 logslog-timestamp=yes 新增時間戳 日誌分類儲存 logging-facility=0 記錄查詢查詢 queryquery=yes 啟用 webserverwebserver=yes webserver 偵聽位址 webserver-address=1270.0.1 個 Web 伺服器監聽埠 webserver-port=8081 pdns 程序監聽位址 IPv4local-address=00.0.0 pdns 程序監聽埠 local-port=53 MySQL 資料庫配置:launch=gmysql MySQL 資料庫位址:寫入 VIP 位址 gmysql-host= 192168.10.10 MySQL資料庫埠 預設值:3306gmysql-port=3306 要連線的資料庫名稱 gmysql-dbname=powerdns 資料庫使用者 gmysql-user=pdnsadmin 資料庫密碼 gmysql-password=powerdns4321
安裝MySQL模組依賴包:需要同時安裝主從權威伺服器,否則PDNS將無法啟動。

apt install pdns-backend-mysql
Bug 解決方法:

root@pdns01:/etc/keepalived# mysql -h 192.168.10.10 -u pdnsadmin -penter password: error 1129 (hy000): host '192.168.10.120' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
指向此命令可解決:

mysql -u root -p -e 'flush hosts'enter password: flush hosts;
192年168.10.120 和 192168.10.130啟動PDNS,權威伺服器現已建成

通過重新啟動 pdnssystemctl restart pdns 來修改配置檔案服務 檢視狀態 systemctl 狀態 pdnsservice
圖中用了 7 臺伺服器,但實際上我在文章的構建中使用了 5 臺伺服器,包括用於 Web 管理的權威伺服器的 pdns-admin該服務尚未構建,將在下一部分中演示。 所以文章中只使用了 4 臺伺服器,其中 192 臺168.10.100 和 192168.10.110兩台伺服器同時設定了 dnsdist 和 pdns-recursor。

而在 192 年168.10.120 和 192168.10.MySQL、Keepalived 和 PowerDNS 權威名稱伺服器同時設定在 130 中。 其中,資料庫一主一從,做單向主從複製,keepalive做資料庫高可用和故障轉移。 PowerDNS權威名稱伺服器配置為主從架構。

至此,架構圖中最核心的元件和服務已經構建完成,內部生成環境使用的一組本地DNS已經完成。 附註事項:建議您單獨部署資料庫,不要與權威伺服器在同一臺伺服器上構建,也不要使用雲資料庫。 如RDS等,更好的可用性。

下一篇文章介紹了pdns-admin的構建,這套web管理機構伺服器的增刪修改和查詢系統,並演示了使用drill命令的基本操作和今天構建的三套DNS元件管理工具,下一篇文章也將是DNS系列的最後一篇文章,敬請期待。

1. AMD將密碼更改為lntelno1--男神閣下。

從被父母放棄到公升入大學的成功經歷(2)。

這是第一天的開始,你應該放棄嗎?我不甘心!但這確實是我自己的原因,所以我必須想辦法去做,以免影響到任何人。第二天,我還是像往常一樣起床背誦單詞,但今天不一樣,因為我減少了醒來後在宿舍的時間,把第二天晚上出門時要穿的衣服 鞋子 書本 筆都準備好了,放在桌子上。起床,穿上衣服拿著書出門,不到兩分鐘,洗完...

從被父母放棄到公升學本科的成功經歷(1)。

最近,我看到了很多成功登陸專上教育的兄弟姐妹們分享的經歷,今天,作為乙個差點被父母拋棄的孩子,我想分享一下我成功上岸後的經歷。首先,從小到大,我都是那種學習成績差,不愛學習,調皮的孩子,家人親戚都不喜歡。大概還記得,當他們徹底放棄我的時候,是初中第二學期的第二學期,然後初三第一學期還沒結束就回家玩王...

閱讀分享 從初學者到精通的新媒體操作

閱讀分享 新 操作從初學者到精通 本書是一本值得一讀的好書,它介紹了更多新 案例,讓讀者了解新 操作的相關知識庫和操作策略。 新 的起源與發展。本書的第一章是介紹什麼是新 在各種數字技術和網路技術的支援下,通過網路終端和計算機 流動電話 數碼電視等服務的新型通訊形式具有數位化的特點。簡單來說,就是通...

從初學者到精通雲頂遊戲初學者的策略,你可能不知道這些詳細的機制

雖然距離雲頂遊戲上線已經有一段時間了,但仍然有很多玩家沒有體驗過雲頂遊戲帶來的樂趣,或者沒有感受到成為第一名的快樂。對於這個模式,孟鑫戰戰兢兢,大佬在暴風雨中馳騁,下面就給大家介紹一下雲頂遊戲的幾個玩法點,讓孟鑫也能快速上手。雲頂遊戲是一款英雄配置陣容後會自動戰鬥的遊戲,勝負只與陣容位置 英雄羈絆 ...

從梁漱溟的人生態度到《遙遠的救世主》三部曲,再到《阿甘正傳》。

梁漱溟先生曾說 生活態度是指人們日常生活的傾向。這並不難理解。與中國古代 出生 和 加入世貿組織 兩種生活態度不同,梁漱溟將生活態度分為三種。這三種人生態度是 尋求 噁心 和 莊嚴 一。首先是 尋找 這在現代西方人中很明顯。他們被外界的名利 情慾和享受所吸引,純粹是外在的發揮,直視前方,追求物質享樂...