DNS服务器的作用不多说,是计算机网络中的基础服务。如果我们的局域网内设备比较多,那么可以配置私有DNS,使用设备名或域名代替IP地址,方便记忆和定制。
之前博主有介绍过Ubuntu系统中的DNS安装配置,需要的可以参考这两篇文章。
下面就在CentOS 7下做安装和测试,配置其实都差不多。
环境
ns1:172.16.10.128
ns2:172.16.10.129
client:172.16.10.130
安装
在ns1和ns2中分别安装bind,使用yum方式安装即可。
yum install bind bind-utils
systemctl enable named
配置
定义ns1为主DNS服务,也就是master,ns2为slave备份。
主DNS
centos中的bind配置文件基本都是named。Bind配置文件的结构:
| 主程序 | /usr/sbin/named |
| 主配置文件 | /etc/named.conf |
| 区域配置文件 | /etc/named.rfc1912.zones |
| zone文件的默认路径 | /var/named |
修改配置文件:/etc/named.conf
1、关闭ipv6
在 options 块中修改ipv6配置:
listen-on-v6 { none; };
在 /etc/sysconfig/named 文件末尾添加如下内容:
OPTIONS="-4"
2、创建ACL
在 options 块前面,创建一个 ACL(Access Control List) 块,名称为 “trusted”。我们使用这个控制局域网内哪些计算机可以使用我们这个域名服务进行递归域名查询。
例如:
acl "trusted" {
172.16.10.0/24;
192.168.10.0/24;
192.168.1.0/24;
localhost;
localnets;
};
修改 options 块中的allow-query为:
allow-query { trusted; };
3、配置可信任的slave地址
allow-transfer { 172.16.10.129; };
最后 /etc/named.conf 类似如下:
acl "trusted" { 172.16.10.0/24; 192.168.10.0/24; 192.168.1.0/24; localhost; localnets; };options { listen-on port 53 { 192.168.10.244; 172.16.10.128; }; //定义bind的监听IP地址(IPv4) listen-on-v6 { none; }; //定义bind的监听IP地址(IPv6) directory "/var/named"; //zone文件的默认路径 dump-file "/var/named/data/cache_dump.db"; //cache的备份 statistics-file "/var/named/data/named_stats.txt"; //静态文件 memstatistics-file "/var/named/data/named_mem_stats.txt"; //内存静态文件 recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots";allow-transfer { 172.16.10.129; };allow-query { trusted; }; //允许谁向此DNS进行查询 recursion yes; //允许递归查询 dnssec-enable yes; dnssec-validation yes; bindkeys-file "/etc/named.root.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
4、添加本地zone配置
我们将本地配置都放到 /etc/named 文件夹下,在这个配置中指定正向和反向的域。然后在 /etc/named.conf 末尾增加这样一行。
include "/etc/named/named.conf.local";
创建 /etc/named/named.conf.local 文件,内容类似如下:
[root@master named]# cat /etc/named/named.conf.local
zone "local.blog.nbqykj.cn" {
type master;
file "/etc/named/zones/db.local.blog.nbqykj.cn"; // 正向域配置
};
zone "10.16.172.in-addr.arpa" {
type master;
file "/etc/named/zones/zone.172.16.10"; //反向域配置
};
这个配置创建了一个 local.blog.nbqykj.cn 的网络,如果有多个域,那么按照这个格式创建多个就可以。
5、正向域
这个配置文件定义正常查找,例如我们输入 blog.nbqykj.cn 域名,dns服务器就会帮忙找到对应的IP地址。
mkdir /etc/named/zones
chown -R named.named /etc/named/zones
配置举例:
[root@master named]# cat /etc/named/zones/db.local.blog.nbqykj.cn
$TTL 60
@ IN SOA ns1.local.blog.nbqykj.cn. admin.local.blog.nbqykj.cn. (
4 ; Serial
1H ; Refresh
5M ; Retry
1D ; Expire
6H ) ; Negative Cache TTL
;name servers
@ IN NS ns1.local.blog.nbqykj.cn.
@ IN NS ns2.local.blog.nbqykj.cn.
;ns records
ns1.local.blog.nbqykj.cn. IN A 172.16.10.128
ns2.local.blog.nbqykj.cn. IN A 172.16.10.129
;host records
blog.local.blog.nbqykj.cn. IN A 172.16.10.130
6、反向域
反向域主要是DNS中的PTR记录的查找,也就是通过IP查询域名。
配置举例:
$TTL 60
@ IN SOA ns1.local.blog.nbqykj.cn. admin.local.blog.nbqykj.cn. (
4 ; Serial
1H ; Refresh
5M ; Retry
1D ; Expire
6H ) ; Negative Cache TTL
@ IN NS ns1.local.blog.nbqykj.cn.
@ IN NS ns2.local.blog.nbqykj.cn.
130 IN PTR blog.local.blog.nbqykj.cn.
注意修改正向域和反向域中soa中的域名为自己的域名。
7、启动测试
systemctl start named

备DNS
备DNS配置相对来说比主的简单,当主DNS无法提供服务的时候,备DNS也可以提供响应。所以一般我们的客户端上都会配置至少2个NS服务器。
备DNS服务的安装和主配置文件基本一样,只需要修改本地zone配置文件。例如:
[root@slave1 ~]# cat /etc/named/named.conf.local
zone "local.blog.nbqykj.cn" {
type slave;
file "slaves/db.local.blog.nbqykj.cn";
masters { 172.16.10.128; };
};
zone "10.16.172.in-addr.arpa" {
type slave;
file "slaves/zone.172.16.10";
masters { 172.16.10.128; };
};
启动测试
如果没有报错启动正常后可以看到 /var/named/slaves 目录中已经有我们上面定义的域配置文件,解析正常。


最后如果需要更改记录,在主的DNS服务器中修改完域配置文件后,还需要记录修改soa中的serial,否则备dns服务器不会生效。
参考:
http://blog.nbqykj.cn/?p=2524.html
http://blog.nbqykj.cn/?p=2520.html



一直在用 CentOS 6 版本。
@夏日博客 以前我也一直用的6,不过想想8都出来了,还是跟上吧,就像死守windows xp也没用。