上一篇文章中介绍了Ubuntu系统缓存转发DNS服务器的配置,不过有时可能还需要我们自己搭建一个私有DNS服务器。例如一个或多个项目的多台服务器之间,通信地址可能需要配置成统一的域名地址,解析记录可能需要私有IP地址等。使用域名而不是IP的方式,可以很好的管理服务器和项目中的配置,减少维护成本和风险。
Ubuntu系统试了下,12.04,14.04和16.04应该都没什么问题,配置一样。
准备
准备两台server,一台主DNS服务器,一台备份DNS服务器。
ns1:192.168.140.129
ns2:192.168.140.135
步骤
安装和配置步骤参考前面缓存和转发DNS服务器的配置。
主DNS服务器
1、安装
登录server服务器,运行apt-get命令安装。
apt-get update apt-get install bind9 bind9utils bind9-doc
进程named,配置文件目录为/etc/bind ,监听在TCP和UDP的53端口。
2、关闭IPv6
一般现在bind工作在ipv4环境居多,所以先把ipv6监听的地址关了。
vi /etc/default/bind9
OPTIONS中增加-4选项,例如:OPTIONS=”-u bind -4″。
3、配置缓存转发
打开/etc/bind/named.conf.options目录,修改后如下。
acl goodclients { 192.168.140.0/24; localhost; localnets; }; options { directory "/var/cache/bind"; listen-on { 192.168.140.129;}; listen-on-v6 { none; }; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 recursion yes ; allow-query { goodclients;}; allow-transfer { none; }; # disable zone transfers by default forwarders { 223.5.5.5; 223.6.6.6; }; forward only ; };
4、配置local文件
named.conf.local 文件默认是空的。本文在配置文件中分别定义一条正向解析和一条反向解析。配置文件修改后类似如下。
root@ubuntu:/etc/bind# less named.conf.local zone "sijitao.net" { type master; file "/etc/bind/zones/zone.sijitao.net"; allow-transfer { 192.168.140.135; }; }; zone "1.1.1.in-addr.arpa" { type master; file "/etc/bind/zones/zone.1.1.1"; allow-transfer { 192.168.140.135; }; };
这里我们把zone解析数据文件放在了/etc/bind/zones目录中,如果没有该目录需要手工创建。
5、定义区域配置文件
配置文件定义后类似如下,分别是正向和反向两个解析记录。按照自己需求修改相应的区域和区域解析记录,IP等信息。
正向记录
root@ubuntu:/etc/bind# cat /etc/bind/zones/zone.sijitao.net $TTL 600 @ IN SOA ns1.sijitao.net. admin.sijitao.net. ( 4 ; Serial 1H ; Refresh 5M ; Retry 1D ; Expire 6H ) ; Negative Cache TTL ;name servers @ IN NS ns1.sijitao.net. @ IN NS ns2.sijitao.net. ;ns records ns1.sijitao.net. IN A 192.168.140.129 ns2.sijitao.net. IN A 192.168.140.135 ;host records blog.nbhao.org. IN A 1.1.1.1
反向记录
root@ubuntu:/etc/bind# cat /etc/bind/zones/zone.1.1.1 $TTL 600 @ IN SOA ns1.sijitao.net. admin.sijitao.net. ( 4 ; Serial 1H ; Refresh 5M ; Retry 1D ; Expire 6H ) ; Negative Cache TTL @ IN NS ns1.sijitao.net. @ IN NS ns2.sijitao.net. 1 IN PTR blog.nbhao.org.
6、检查配置、重启
root@ubuntu:/etc/bind# named-checkconf root@ubuntu:/etc/bind# named-checkzone sijitao.net /etc/bind/zones/zone.sijitao.net zone sijitao.net/IN: loaded serial 4 OK root@ubuntu:/etc/bind# named-checkzone 1.1.1.in-addr.arpa /etc/bind/zones/zone.1.1.1 zone 1.1.1.in-addr.arpa/IN: loaded serial 4 OK
分别检查了语法和区域配置文件,没有报错。重启bind服务。
service bind9 restart
到这里主DNS服务器的配置就完成了,可以使用dig命令测试。
备DNS服务器
1、安装
备份服务器的安装配置和主DNS步骤中的1、2、3一样,具体步骤参考上面即可。唯一需要修改的是/etc/bind/named.conf.options中listen-on为备份服务器的IP 。
2、配置local文件
local中指定区域数据文件一样需要配置,不过和主区别的是不需要手动创建,配置时指定类型为slave即可。
root@ubuntu:/var/cache/bind/slaves# less /etc/bind/named.conf.local zone "sijitao.net" { type slave; file "slaves/zone.sijitao.net"; masters { 192.168.140.129; }; }; zone "1.1.1.in-addr.arpa" { type slave; file "slaves/zone.1.1.1"; masters { 192.168.140.129; }; };
数据会在bind启动后从主DNS服务器上同步过来,同步目录为/var/cache/bind/slaves,如果没有该目录需要手动创建,注意目录的属主和属组必须都为bind 。/var/cache/bind目录在named.conf.options的directory中定义。
3、检查重启
named-checkconf service bind9 restart
重启后可以看到zone文件都已经在/var/cache/bind/slaves自动创建。这样备份DNS服务器就配置好了。
DNS维护
主备DNS服务器配置好后,只需要修改客户端服务器上的resolv.conf配置为以上两个地址就可以正常解析。
如果DNS解析记录需要修改,在主DNS服务器上修改类似如上的zone.sijitao.net和zone.1.1.1配置文件。重要的还需要修改其中SOA记录中Serial的值,一般修改一次增加1。不然主的DNS记录不会同步到备份服务器上。
让记录生效重新bind服务,不需要重启服务。
service bind9 reload
总结,生产环境上建议至少需要两台DNS服务器,不然域名解析出问题麻烦就大了。
DNS服务器相关