本篇博客主要介绍如何在linux上构建简易dns服务器,内容涵盖本地dns解析,主从dns服务器区域传送、rndc的使用以及如何在主域中添加子域
说明:
本实验操作均在VMware10上实现,需要准备三台虚拟机(Redhat Enterprise Linux 5.8),一台作为主dns服务器,一台作为从dns服务器使用,另一台作为子域dns服务器,当然也可以通过克隆的方式克隆主dns服务器虚拟机并重新配置IP即可。作者将主dns服务器端IP设为:192.168.134.2,从dns服务器端的IP设为:192.168.134.22,子域dns服务器的IP设为:192.168.134.8。根据个人设定不同,需要修改相应配置文件中的设置。
实现:
1、安装bind97(主从dns服务器都需要安装)
说明:系统上已经安装了bind,需先卸载相关软件包
bind97安装后的部分文件介绍:
/etc/named.conf: 主配置文件(权限640)
options: 全局选项,定义bind软件的工作属性:监听设置 (选项:“值”)
directory: 指明数据文件目录
logging: 定义如何生成和保存日志
zone: 定义区域
include: 包含其它路径下的配置文件
/usr/sbin/
named-checkconf: 检查配置文件是否有语法错误
named-checkzone:区域配置文件是否有语法错误
named-compilezone:编译zone
/var/named/:区域数据文件存放路径
named.ca:13个根节点服务器的地址(A-M),可使用bind97-utils手动生成
named.localhost: 主机名正向解析数据文件
named.loopback: 主机名反向解析数据文件
bind list all bind* yum remove bind yum remove bind-libs yum -y install bind97-utils yum -y install bind97-libs yum -y install bind97 rpm -ql bind97 # 查看bind97安装后生成的文件列表 cp /etc/named.conf /etc/named.conf.orig # 备份主配置文件
2、配置主dns服务器
1、修改主配置文件
说明:
directory "/var/named":数据文件存放路径
allow-recursion:定义允许递归查询的IP范围
type hint:指明域类型
file "named.ca":指定域数据文件存放路径(使用的是相对路径 == /etc/named/named.ca)
allow-transfer { none; }:定义允许指定IP的服务器进行区域传送,一般指定为从服务器IP
vim /etc/named.conf # 修改主配置文件为: options { directory "/var/named"; allow-recursion { 192.168.134.0/24; }; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "named.localhost"; allow-transfer { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-transfer { none; }; }; zone "tb.com" IN { type master; file "tb.com.zone"; allow-transfer { 192.168.134.22; }; }; zone "134.168.192.in-addr.arpa" IN { type master; file "192.168.134.zone"; allow-transfer { 192.168.134.22; }; };
2、新建对应的区域数据文件
说明:
@:在DNS文件中表示域名
SOA: 起始授权记录
NS:dns服务器记录
MX:邮件记录
A: IPv4地址正向解析记录
CNAME: 别名记录
PTR: 反向域名解析记录
cd /var/named vim tb.com.zone # 编辑资源记录如下 $TTL 600 @ IN SOA ns1.tb.com. admin.tb.com. ( 2016052801 1H 5M 2D 1H ) IN NS ns1 IN NS ns2 IN MX 10 mail ns1 IN A 192.168.134.2 ns2 IN A 192.168.134.22 www IN A 192.168.134.3 mail IN A 192.168.134.4 ftp IN CNAME www tb.com IN A 192.168.134.3 vim 192.168.134.zone # 编辑资源记录如下 $TTL 600 @ IN SOA ns1.tb.com. admin.tb.com. ( 2016052801 1H 5M 2D 1H ) IN NS ns1.tb.com. IN NS ns2.tb.com. 3 IN PTR www.tb.com. 4 IN PTR mail.tb.com. # 修改数据文件的属主、属组以及权限 chown root:named tb.com.zone chmod 640 tb.com.zone chown root:named 192.168.134.zone chmod root:named 192.168.134.zone
3、修改dns配置
vim /etc/resolv.conf # 添加如下记录并将其它nameserver记录暂时注释 nameserver 192.168.134.2
4、启用服务
service named start
5、至此,主dns服务器的配置就完成了,先使用dig测试
dig简要说明:
dig -t NS tb.com @192.168.134.2
-t: 指定资源记录类型
tb.com:查询对象
@IP:指定使用指定的dns服务器进行查询
作者测试结果:
3、配置从dns服务器
1、编辑主配置文件
vim /etc/named.conf # 编辑配置文件如下,与主dns服务器的区别在于type slave options { directory "/var/named"; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "named.localhost"; allow-transfer { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-transfer { none; }; }; zone "tb.com" IN { type slave; file "slaves/tb.com.zone"; masters { 192.168.134.2; }; allow-transfer { none; }; }; zone "134.168.192.in-addr.arpa" IN { type slave; file "slaves/192.168.134.zone"; masters { 192.168.134.2; }; allow-transfer { none; }; };
2、至此,从dns服务器配置已完成,启用服务
service named start
3、测试主从dns服务器完全区域传送
作者测试结果
4、给dns服务器添加远程域名服务器控制器(rndc)
1)、实现本地rndc控制,本操作在主dns服务器中完成
1、生成rndc配置文件
rndc-confgen > /etc/rndc.conf vim /etc/rndc.conf # 复制所需内容追加至/etc/named.conf文件中 # 所需复制内容如下: # Use with the following in named.conf, adjusting the allow list as needed: # key "rndc-key" { # algorithm hmac-md5; # secret "qMdLUBIveV7aEDn87esq5g=="; # }; # # controls { # inet 127.0.0.1 port 953 # allow { 127.0.0.1; } keys { "rndc-key"; }; # }; # End of named.conf >.,$-1w >> /etc/named.conf
2、编辑主配置文件
vim /etc/named.conf # 去除rndc文件注释 # 即修改追加内容为: # Use with the following in named.conf, adjusting the allow list as needed: key "rndc-key" { algorithm hmac-md5; secret "qMdLUBIveV7aEDn87esq5g=="; }; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; };
3、测试本地rndc控制
说明:rndc -c /etc/rndc.conf status
-c: 指定rndc的配置文件
status: 查看状态信息
(rndc命令的使用可使用rndc -h查看)
rm -f /etc/rndc.key # 删除bind启用后自动生成的rndc.key
service named restart
rndc -c /etc/rndc.conf status
作者测试结果:
1)、实现远程rndc控制
1、修改主dns服务器中的主配置文件
vim /etc/named.conf # 修改内容如下: controls { inet 192.168.134.2 port 953 allow { 192.168.134.22; } keys { "rndc-key"; }; };
2、复制主dns服务器中的rndc配置文件至从dns服务器中(主dns服务器中执行)
注意:在复制时需要注意避免文件覆盖问题,这里复制配置文件至/root目录下
scp /etc/rndc.conf 192.168.134.22:/root/
3、在从dns服务器中修改rndc配置文件
vim rndc.conf # 修改默认服务器IP: options { default-key "rndc-key"; default-server 192.168.134.2; default-port 953; };
4、测试远程rndc控制
作者测试结果:
5、往主域中添加子域
说明:当前主域为tb.com.,当前目的是在主域中添加子域fin.tb.com.;
以下内容是基于上述操作实现后的补充内容,基本操作与上述相同,因此部分内容省略
1、修改主域数据文件,为子域授权
vim /var/named/tb.com.zone # 添加授权记录并修改序列号(序列号+1): fin IN NS ns1.fin ns1.fin IN A 192.168.134.8
2、在反向域中添加资源记录
vim 192.168.134.zone # 添加以下记录(序列号+1): IN NS ns1.fin.tb.com.
3、重启主域dns服务器
server named restart
4、启用并配置子域主机,这里设置子域主机IP为:192.168.134.8
vim /etc/named.conf # 此时当前主机域为fin.tb.com,并设置子域访问主域时采用转发域的形式访问 # 主要变动内容如下: zone "fin.tb.com" IN { type master; file "fin.tb.com.zone"; }; zone "tb.com" IN { type forward; forward first; forwarders { 192.168.134.2; }; }; vim /var/named/fin.tb.com.zone # 添加数据文件 # 编辑内容如下: $TTL 600 @ IN SOA ns1.fin.tb.com. admin.fin.tb.com. ( 2016052801 1H 5M 2D 1H ) IN NS ns1 IN MX 10 mail ns1 IN A 192.168.134.8 www IN A 192.168.134.10 mail IN A 192.168.134.9
修改记录文件的属主、属组及权限
cd /var/named/ chown root:named fin.tb.com.zone chmod 640 fin.tb.com.zone service named start
5、子域测试
好了,以上就是bind相关的部分操作,缺漏处还望指出