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解析服务的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 如何购买赛门铁克的代码数字签名?
- 下一篇: oracle数据库短期培训,Oracle