bind9+mysql搭建DNS解析服务

基本的架构图如下:

安装步骤:

  1. 安装依赖服务
yum install wget cmake ncurses boost zlib gcc libuv libuv-devel libnghttp2 libnghttp2-devel openssl-devel libcap-devel mysql mysql-devel -y
  1. 安装mysql
    此处省略安装配置mysql主从~~
    mysql安装完成后需要添加环境变量,编译bind时会用到
export CPPFLAGS="-I/usr/lib64/mysql $CPPFLAGS"
export LDFLAGS="-L/usr/lib64/mysql $LDFLAGS"
export LD_LIBRARY_PATH="/usr/lib64/mysql"

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');
  1. 编译安装bind服务
    下载安装包
cd /usr/local/src/
wget https://www.cpan.org/src/5.0/perl-5.34.0.tar.gz
wget wget https://ftp.isc.org/isc/bind9/9.16.26/bind-9.16.26.tar.xz

编译安装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模块

  1. 生成rndc.conf和named.conf
cd /data/bind/etc/
/data/bind/sbin/rndc-confgen > rndc.conf
tail -10 rndc.conf | head -9 | sed s/#\ //g > named.conf
../bin/dig > named.root
  1. 配置named.conf
    配置options
options {listen-on port 53 { any; };directory       "/data/bind";dump-file       "/data/bind/data/cache_dump.db";statistics-file "/data/bind/data/named_stats.txt";memstatistics-file "/data/bind/data/named_mem_stats.txt";Pid-file "/data/bind/var/run/named/named.pid";allow-query     { any; };recursion yes;version "0";serial-query-rate 1;dnssec-enable no;dnssec-validation no;dnssec-lookaside auto;managed-keys-directory "/data/bind/dynamic";forwarders { 223.5.5.5;223.6.6.6; };
};

配置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解析服务相关推荐

  1. MyCAT+MySQL 搭建高可用企业级数据库集群

    第1章 课程介绍 课程介绍 1-1 MyCAT导学 试看 1-2 课程介绍 第2章 MyCAT入门 这一章中,我们将回顾了垂直切分,水平切分,分库分表等基础概念,然后快速回如何安装和启动MyCAT的, ...

  2. 看完不会的来打我!Mycat和Mysql搭建高可用企业数据库集群

    前言 本系列的目的是明明白白.彻彻底底的搞定日期/时间处理的几乎所有case.上篇文章铺设所有涉及到的概念解释,例如GMT.UTC.夏令时.时间戳等等,若你还没看过,不仅强烈建议而是强制建议你前往用花 ...

  3. Mycat和Mysql搭建高可用企业数据库集群

    个人背景 如标题所示,我的个人背景非常简单,Java开发经验1年半,学历普通,2本本科毕业,毕业后出来就一直在Crud,在公司每天重复的工作对我的技术提升并没有什么帮助,但小镇出来的我也深知自我努力的 ...

  4. 如何搭建高可用Redis服务

    作者:漫步CODE人生 来自:cnblogs.com/scode2/p/8670980.html 题记 基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常 ...

  5. 使用Docker搭建高可用Mysql数据库集群

    文章目录 前言 正文 选择哪一种搭建集群的方式 PXC Replication 安装docker Docker操作的基本命令 安装PXC集群 负载均衡 双机热备 具体实现细节 安装keepalived ...

  6. 使用SpringCloud搭建高可用服务注册中心

    我们需要的,不仅仅是一个服务注册中心而已,而是一个高可用服务注册中心. 上篇博客中我们介绍了如何使用Spring Cloud搭建一个服务注册中心,但是搭建好的服务注册中心是一个单节点的服务注册中心,这 ...

  7. win2012故障转移mysql集群_Windows 2012 系统搭建高可用故障转移集群

    Windows 2012 系统搭建高可用故障转移集群 一.故障转移集群介绍 1.1系统介绍 故障转移群集是针对具有长期运行的内存中状态或具有大型的.频繁更新的数据状态的应用程序而设计.这些应用程序称为 ...

  8. 亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统

    亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统 1.高并发原则 1.1 无状态 1.2 拆分 1.3 服务化 1.4 消息队列 1.5 数据异构 1.6 缓存银弹 1.7 并发化 2 高可用原 ...

  9. 云信私有化方案中如何搭建高可用的日志和监控平台?

    导读 云信公有云系列产品已经稳定运行数年,随着企业对信息安全和数据隔离愈加重视,云信产品私有化课题必然成为云信发展过程中一个的重要分支.依赖虚拟化和容器技术的日臻成熟,云信业务系统已经全面完成私有化, ...

最新文章

  1. Vue:echarts的柱状图为什么X轴上的文字不显示?
  2. Fedora 32 因 Bug 将推迟发布
  3. Graphpad Prism作相关性分析图
  4. 用WPF开发Mapxtreme-- 在.net 4.0 下面开发WPF mapxtreme 程序
  5. PS教程第二十三课:套索工具
  6. 淘宝万亿级海量交易订单存储在哪?
  7. 腾讯没有梦想,阿里没有盟友?
  8. 生产者消费者 java实现_Java生产者消费者的三种实现
  9. Teradata SQL tips
  10. Python语言应该加上块标识(开始、结束)的特性
  11. 电脑软件推荐【含软件链接】:压缩,插件,截屏,录制,办公,电脑防护与修复,磁盘清理,软件卸载......
  12. 计算机电源模式怎么删,电脑的电源选项里只剩下了平衡模式怎么办?
  13. X1000 Kernel 3.10 Linux V8.2编译
  14. 【ATSC】美国第二大有线电视公司-Charter
  15. CCI: Representing N cents
  16. 9款好用的SSH客户端软件推荐
  17. 展示csdn的云服务
  18. 实现vue页面下载成word文档
  19. 网络显示连接,不能还是上网,找不到DNS怎么办?
  20. 如何在不同的窗口中打开多个Excel

热门文章

  1. java/php/net/python员工管理系统设计与实现设计
  2. 从字节流到字符流的装换
  3. focusky导出html修改,Focusky怎么设置播放时间间隔 Focusky怎么自定义模板以及导出文件...
  4. bootice添加黑苹果引导_OpenCore引导安装黑苹果卡代码解决方法(内容较多)
  5. 算法题练习系列之(三十七): 客似云来
  6. JavaScript—基础Day1
  7. dependencies和dependency以及dependencyManagement三者的区别?
  8. vivo2021笔试愚人节礼品盒问题
  9. 水流法敷设光缆技术的研究与应用
  10. 人工智能技术与产业发展