bind9+mysql搭建高可用DNS解析服务
生活随笔
收集整理的這篇文章主要介紹了
bind9+mysql搭建高可用DNS解析服务
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
bind9+mysql搭建DNS解析服務
基本的架構圖如下:
安裝步驟:
此處省略安裝配置mysql主從~~
mysql安裝完成后需要添加環境變量,編譯bind時會用到
mysql建表命令
CREATE TABLE IF NOT EXISTS `dns_records` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`zone` varchar(255) NOT NULL,`host` varchar(255) NOT NULL DEFAULT '@',`type` enum('A','MX','CNAME','NS','SOA','PTR','TXT','AAAA','SVR','URL') NOT NULL,`data` varchar(255) DEFAULT NULL,`ttl` int(11) NOT NULL DEFAULT '3600',`mx_priority` int(11) DEFAULT NULL,`view` enum('any', 'Telecom', 'Unicom', 'CMCC', 'ours') NOT NULL DEFAULT "any" ,`priority` tinyint UNSIGNED NOT NULL DEFAULT '255',`refresh` int(11) NOT NULL DEFAULT '28800',`retry` int(11) NOT NULL DEFAULT '14400',`expire` int(11) NOT NULL DEFAULT '86400',`minimum` int(11) NOT NULL DEFAULT '86400',`serial` bigint(20) NOT NULL DEFAULT '2022022317',`resp_person` varchar(64) NOT NULL DEFAULT 'localhost',`primary_ns` varchar(64) NOT NULL DEFAULT 'localhost.',PRIMARY KEY (`id`),KEY `type` (`type`),KEY `host` (`host`),KEY `zone` (`zone`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;后續添加DNS解析的命令
insert into dns_bind.dns_records (zone, host, type, data, ttl) VALUES ('testinfo.local', 'aaa', 'A', 'xxx.xxx.xxx.xxx', '600');下載安裝包
編譯安裝perl , 這里make test的時候會報一個錯誤,無視他,繼續make install就行
tar -zxvf perl-5.34.0.tar.gz cd perl-5.34.0 cp configure.gnu configure ./configure -des -Dprefix=/usr/local/perl make make test make install編譯安裝bind服務
tar -xvf bind-9.16.26.tar.xz cd bind-9.16.26 ./configure --prefix=/data/bind/ --with-dlz-mysql=yes --enable-largefile --with-openssl=no --without-python --disable-ipv6 make make install注意:bind9.16是最后支持mysql的版本,9.17開始就移除了mysql模塊
配置options
配置zone
dlz "mysql zone" { database "mysql {host=XXX.XXX.XXX.XXX dbname=dns_bind ssl=false port=3306 user=root pass=XXXXXXXX} {select zone from dns_records where zone = '$zone$' and view = 'any' limit 1} {select ttl,type,if(mx_priority>0,mx_priority,NULL),case when lower(type)='txt' then concat('\"',data,'\"') when lower(type) = 'soa' then concat_ws(' ', data, resp_person, serial, refresh, retry, expire, minimum) else data end as mydata from dns_records where zone = '$zone$' and host = '$record$' and view = 'any'}"; };到這里就安裝完成了。
附1:bind檢測配置文件命令
/usr/local/bind/sbin/named -c /usr/local/bind/etc/named.conf -g附2:bind啟動腳本
#!/bin/bash ########################################################################################## # Info: # start dns server ########################################################################################## # Auther: Yin Jiang # Changelog: # 20220223 jiangyin initial create ####################################################################################################################################################################################if [ `id -u` -ne 0 ] then echo "ERROR:Must run as root." exit 1 fifunction start() {/data/bind/sbin/named -c /data/bind/etc/named.conf -4echo . && echo 'DNS server started.' }function stop() {kill `cat /data/bind/var/run/named/named.pid`echo . && echo 'DNS server stopped.' }function reload() {/data/bind/sbin/rndc reload }function status() {/data/bind/sbin/rndc status }case "$1" instart)start;;stop)stop;;restart)stopsleep 2start;;reload)reload;;status)status;;*)echo "Please use these command (start | stop | restart | status | reload)";; esac總結
以上是生活随笔為你收集整理的bind9+mysql搭建高可用DNS解析服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何购买赛门铁克的代码数字签名?
- 下一篇: juniper防火墙端口映射