dns服务端计划简介
dns服务有什么用呢,尤其是内网的dns服务,其实用途还蛮大的,我见过的典型应用,是数据库跨机房多活。
如某mysql主机搭建在深圳机房,为了保障高可用,那咱们能够给这台主库,保护多个深圳同城的跨机房半同步备机,在异地如上海还能够保护一个异步备机。当主机出问题时候,咱们能够切换到备机去,而切换了之后,ip必定就变了,此时就不得不要求客户端批改ip,十分麻烦。
一个可选的计划就是,给客户端服务提供一个域名,客户端服务通过域名获取对应的ip,而后再去和该ip建设连贯。当数据库产生主备切换时,只须要批改dns服务端,把域名对应的ip进行批改,同时告诉客户端服务进行重连(重连时就能够取到最新的ip),这样的话,不就能够做到数据库容灾切换,且不须要业务方批改配置了吗?
在这其中呢,有个要害的组件,就是搭建公有的内网dns服务器。
dns服务的开源实现,有两个,一个是bind,一个是dnsmasq,前者比拟重,专一于dns这块,后者则是绝对轻量一些,所以呢,如果须要极高稳定性,倡议还是应用重量级的bind。
明天呢,其实就是简略介绍下bind的装置、内网域名配置等等,细节还是比拟多,因而记录一下。
装置&配置
装置其实有两种办法,一种是通过源码包编译装置,一种是应用yum包管理器,我这边之前实际是用的源码包形式,的确绝对繁琐一点,不过也还行;当前能够再略微说下yum包的形式。
源码包下载及装置
https://downloads.isc.org/isc...
https://downloads.isc.org/isc...
我这边是9.18版本,下载bind-9.18.4.tar.xz后,rz上传到了我的服务器上。(wget也ok)
tar -xvf bind-9.18.4.tar.xzcd bind-9.18.4/// 倡议肯定要加上prefix哈,不然相干文件会散落各处./configure --prefix=/usr/local/bind9 --disable-doh// 接下来,可能会提醒一些依赖包不存在,此时须要yum 装置yum search libuvyum install libuvyum install libuv-develyum search libnghttp2yum install libnghttp2yum search libpcapyum install libpcapyum install libcap-devel
因为大家的机器环境各不相同,可能有些依赖曾经有了,不须要装;或者是还缺更多依赖,这种时候就拿着谬误去百度吧;另外,我集体习惯yum装置前,先查一下,看看是个什么包。
configure实现后,就执行
make && make install
此时,能够去看看prefix目录下,是什么状况:
[root@VM-0-6-centos bind9]# pwd/usr/local/bind9[root@VM-0-6-centos bind9]# lltotal 28drwxr-xr-x 2 named named 4096 Jul 3 11:50 bindrwxr-xr-x 2 named named 4096 Jul 3 14:42 etcdrwxr-xr-x 10 named named 4096 Jul 3 11:50 includedrwxr-xr-x 3 named named 4096 Jul 3 11:50 libdrwxr-xr-x 2 named named 4096 Jul 3 15:45 sbindrwxr-xr-x 3 named named 4096 Jul 3 11:50 sharedrwxr-xr-x 3 named named 4096 Jul 3 12:12 var
创立专属用户(可选步骤)
建了个专门的named用户
groupadd -g 53 -r nameduseradd -u 53 -s /sbin/nolgin -r named -g named
如果应用了named用户,所以要保障prefix目录下的文件、目录的权限匹配,我习惯了root用户,操作完了后
chown -R named:named /usr/local/bind9
全局选项配置文件批改
咱们当初须要先创立一个次要的配置文件,这个配置文件里会有很多选项。
/usr/local/bind9/sbin/rndc-confgen > /usr/local/bind9/etc/rndc.confcd /usr/local/bind9/etc/// 上面这条命令的意思是,取最初的10行,而后取这10行中的前9行,再去掉每一行后面的\#符号,大家能够分步执行看看后果tail -10 rndc.conf | head -9 | sed s/#\ //g > named.conf
此时,named.conf这个配置文件的最最根本配置就有了,大抵如下:
在这个之外,咱们还能够再配置一些option选项,比方我这边最终的配置文件如下:
key "rndc-key" { algorithm hmac-sha256; secret "RCTpzylRQeSrU5dPwypdzOJ0eeWNUYGt0csRFbISaU0=";};controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; };};options { # 运行时数据的目录 directory "/usr/local/bind9/var/run"; # pid文件 pid-file "named.pid"; recursion yes; allow-query { any; }; # 监听53端口 listen-on port 53 { any; }; # 除了本地配置的域名,其余都转发dns查问到如下dns服务器 forwarders { 114.114.114.114; 8.8.8.8; }; forward only; # 禁用安全检查,否则dns查问会失败 dnssec-validation no;};# 自定义的域名的所在文件include "/usr/local/bind9/etc/named.user.zones";
自定义内网域名的配置文件
咱们关上named.user.zones文件看看:
zone "nx.com" IN { type master; # 文件名为nx.com,那么全门路在哪里呢,就是下面文件中的options.directory那个门路 file "nx.com"; allow-update { none; };};zone "dump.com" IN { type master; file "dump.com"; allow-update { none; };};
这里配置了两个轻易写的域名。那么,有人会持续问,怎么没看到域名相干的A记录之类的dns记录呢?
大家看下下面正文哈,真正的dns记录那些,在file那个属性中配置,全门路在哪里呢,就是下面文件中的options.directory那个门路。
[root@VM-0-6-centos run]# pwd/usr/local/bind9/var/run[root@VM-0-6-centos run]# lltotal 24-rw-r--r-- 1 root root 534 Jul 3 16:08 dump.com-rw-r--r-- 1 named named 221 Jul 3 14:26 managed-keys.bind-rw-r--r-- 1 named named 1818 Jul 3 14:26 managed-keys.bind.jnldrwxr-xr-x 2 named named 4096 Jul 3 16:08 named-rw-r--r-- 1 named named 6 Jul 3 16:25 named.pid-rw-r--r-- 1 root root 463 Jul 3 12:55 nx.com
这边给大家看看dump.com文件的内容:
$TTL 1D@ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.2## 后面几行呢,我也没做深入研究,倡议生产部署的时候,再钻研该选项,咱们部署着玩,能够先只看上面几行 nameserver.dump.com. IN A 127.0.0.3test1.dump.com. IN A 127.0.0.5test2 IN A 127.0.0.8
能够看到,上文的最初三行,格局比拟乱,但大抵是三条A记录;格局乱不影响,因为它应该是依照空格来离开的。
前台形式运行bind
/usr/local/bind9/sbin/named -u named -g
运行后,记得观测是否报错。
有报错的话,根本对应的域名就解析不了了。
此时,咱们ps看一下过程:
[root@VM-0-6-centos work-file.git]# ps -ef|grep namednamed 28891 2019 0 16:15 pts/1 00:00:00 sbin/named -u named -g
ok,曾经运行起来了,此时能够用dig命令来进行测试:
# @符号前面跟该dns服务的ip或域名,端口默认为udp 53,如果dns服务部署在云端服务器,而后测试如果在pc,可能要留神云服务器放行相干防火墙端口dig nameserver.dump.com @localhost
后盾运行
/usr/local/bind9/sbin/named -u named -c /usr/local/bind9/etc/named.conf
在windows pc上装置dig命令,测试成果
https://downloads.isc.org/isc...
下载BIND9.16.30.x64.zip
本地解压后,cmd里执行:
留神啊,如果不通,多半是udp 53端口被防火墙拦挡了。
重要文档
如果心愿理解更多配置文件选项:https://downloads.isc.org/isc...
yum装置bind:https://copr.fedorainfracloud...
bind相干文档:https://www.isc.org/bind/
参考文档
https://blog.csdn.net/weixin_...
https://blog.csdn.net/u011288...
本文由mdnice多平台公布