介绍
Linux系统中的DNS服务器的名字叫bind,本文通过介绍bind的安装以及
环境
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
DNS服务器地址:192.168.1.100
安装
- 安装bind: yum install bind
- 启动服务: service named start
- 设置开机启动:systemctl enable named
安装后便有个入口配置文件/etc/named.conf
,其中(1)可以include其他配置文件,(2)以及设置不同的域的配置文件.
例如/etc/named.conf中包含下面的内容,指定了不同的zone所对应的配置文件
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
}
};
zone "." IN {
type hint;
file "named.ca";
};
说明
如果要增加demo.com的域,从而使用a.demo.com、b.demo.com等域名,则需要主要进行两步:(1)配置named.conf(2)配置demo.com的配置文件
增加域名
- 步骤1:在
/etc/named.conf
增加域,增加如下配置
上面示例是:增加了demo.com域,并指定了该域的配置文件位置file
在/var/named/demo.com
。当然的file
值也可以换成其他值。
- 步骤2:配置/var/named/demo.com。这个文件可以copy其他已有的文件(例如
/var/named/named.empty
),然后进行修改。修改成如下内容:
$TTL 3H
@ IN SOA @ demo.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
a IN A 192.168.1.101
b IN A 192.168.1.102
如果要继续增加其他域名,在上面继续按照相同的方式追加即可
- 步骤3:重启named服务:
service named restart
本地测试
进行测试前,需要设置本机的dns服务器。
- 编辑/etc/resolv.con,修改文件为如下内容:
nameserver 192.168.1.100
- 1
- 1
- 在DNS服务器本地测试:
nslookup a.demo.com
如果能解析到,则说明域名服务器以及域名配置成功
远端测试-失败
- 在另外一个主机上(如Windows PC)上配置DNS服务器为DNS服务器地址(本例子中为:192.168.1.100)
- (Windows)刷新DNS缓存:ipconfig /flushdns
- 执行
nslookup a.demo.com
。可以发现无法解析。
无法解析的原因是,DNS服务器(bind)默认只允许地址为127.0.0.1/localhost的主机通过DNS服务器进行查询,即DNS服务器本身只能被自己查询。
如果要解决这个问题,则需要进行配置。如下面的步骤。
配置允许远端查询
配置文件/etc/named.conf
需要进行如下修改
- 将
listen-on port 53 { 127.0.0.1; };
修改为listen-on port 53 { any; };
- 将
allow-query { localhost; };
修改为allow-query { any; };
- 将
dnssec-enable yes;
修改为dnssec-enable no;
- 将
dnssec-validation yes;
修改为dnssec-validation no;
重启named服务:service named restart
再一次远端测试-成功
- 在另外一个主机上(如Windows PC)上配置DNS服务器为DNS服务器地址(本例子中为:192.168.1.100)
- (Windows)刷新DNS缓存:ipconfig /flushdns
- 执行
nslookup a.demo.com
。可以发现能够正常解析。
至此通过bind部署DNS服务器以及配置实验结束。
TODO
- /var/named.conf中各个字段的作用
- demo.com文件中各个字段的意义以及作用