环境:CentOS release 6.8 (Final)
安装软件:yum install bind bind-libs bind-utils
说明:本文将简单教学一个DNS服务器的搭建过程,将www.linuxtest.com(该域名实际已被注册)解析成IP192.168.137.133,还包括一个简单的反向解析。最后搭建一个主从DNS服务器。内容较多,解释较少
DNS解析:分为迭代解析和递归解析
迭代解析:客户端发出一次请求,对方如果没有授权回答,它就会返回一个能解答这个查询的其它名称服务器列表,客户端会再向返回的列表中发出请求,直到找到最终负责所查域名的名称服务器,从它得到最终结果。
递归解析:客户端只发一次请求,要求对方给出最终结果。
一般客户端到服务器端属递归查询;
一般DNS服务器之间属迭代查询。
1、正向解析
1.1主配置文件:
vim /etc/named.conf
-------------- 修改匹配的内容如下:
listen-on port 53 { any; }; #DNS服务监听端口
directory "/var/named"; #定义配置文件目录,默认为/var/named
allow-query { any; }; #指定哪些主机(或网络)可以查询这台名字服务器
recursion yes; #允许递归查询,默认为yes(或理解为指定named是否代表客户机查询其他名字服务器)
include "/etc/named.rfc1912.zones"; #包含zone的配置文件。zone语句:是named.conf中的核心语句,将告诉named它具有权威性的区域,并为管理每个区设置适当的选项,zone语句格式根据named在服务器中所扮演的角色不同而不同。
1.2主区域配置文件:
vim /etc/named.rfc1912.zones
-------------- 添加内容如下:
zone "linuxtest.com" IN { #定义区域名
type master; # 制定区域类型{master,slave,stub,forward}
file "linuxtest.com"; #制定区域文件名
};
区域类型为master:配置一个区(zones)的主服务器;配置信息参考上面几行
区域类型为slave或stub:配置一个区的从服务器;正常情况下,设为slave,从服务器会保留数据库的一个完整副本,若服务器类型为stub,那么将只传送NS记录。(可先跳过,后文有配置主从服务器)
zone "domain_name" {
type slave | stub;
file "path"
masters {ip_addr;ip_addr;....};
allow-query {any};
allow-transfer {any};
} //参考博客http://blog.chinaunix.net/uid-14825809-id-333591.html
区域类型为forward:设置一个转发区;如果您的组织和其他组织或公司有战略合作关系,并且希望绕过标准的查询路径,直接把流量汇聚到该公司的名字服务器上,则可以使用forward区,您可以使用这样的安排来访问对外界不可见的名字服务器。
zone "domain_name" {
type forward;
forward only | first;
forwarders {ip_addr;ip_addr;....}
};
1.3区域配置文件:
vim /var/named/linuxtest.com
-------------- 添加内容如下:
$TTL 1D
@ IN SOA ns.linuxtest.com. admin.linuxtest.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
linuxtest.com. IN NS ns.linuxtest.com.
ns.linuxtest.com. IN A 192.168.137.133
www IN A 192.168.137.133
保存退出后修改文件权限:chown root.named /var/named/linuxtest.com
1.4验证配置文件
named-checkconf
named-checkzone "linuxtest.com" /var/named/linuxtest.com
1.5修改DNS服务器/etc/resolv.conf指定DNS服务器为本机
vim /etc/resolv.conf
1.6验证解析
/etc/init.d/named restart
dig -t A www.linuxtest.com
或者 nslookup www.linuxtest.com
2、反向解析:(和正向解析类似)
2.1 vim /etc/named.rfc1912.zones
zone "137.168.192.in-addr.arpa" IN { #137.168.192为IP倒序输入
type master;
file "192.168.137.zone";
};
2.2 vim /var/named/192.168.137.zone
$TTL 600
@ IN SOA ns1.linuxtest.com. admin.linuxtest.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.linuxtest.com.
200 IN PTR www.linuxtest.com.
221 IN PTR ns1.linuxtest.com.
2.3验证解析
/etc/init.d/named restart
dig -x 192.168.137.200
3.别名:vim /var/named/192.168.137.zone,在其中添加以下内容实现别名:
bbs2 IN CNAME bbs
验证:dig -t A bbs2.linuxtest.com ------别名也可以解析
4.泛域名解析:vim /var/named/192.168.137.zone,在其中添加以下内容:
* IN A 172.16.10.1
*.linuxtest.com. IN A 192.168.1.220
验证:dig -t A dsfgs.linuxtest.com -----随便写的包含域名的主机名都可以解析成功
------------------注意事项:
3.和4.为示范,具体应用由需求而定;
注意区域配置文件 /var/named/linuxtest.com的权限root.named;
主区域配置文件中文件名zone最好和zone名字一样;
解析类型:A记录
PTR记录
MX记录
NS记录
NS服务器记录和NS的A记录要成对出现,即
linuxtest.com. IN NS ns.linuxtest.com.
ns.linuxtest.com. IN A 172.16.10.1
附加:递归和迭代解析过程
.1 迭代
dig +norecurse -t A www.sohu.com @172.16.10.1
dig +norecurse -t A www.sohu.com @f.gtld-servers.net
dig +norecurse -t A www.sohu.com @dns.sohu.com
dig +norecurse -t A www.sohu.com @gs.a.sohu.com
.2递归
dig +trace -t A www.sohu.com @172.16.10.1
主从DNS服务器:
1.主DNS服务器配置:
1.1主配置文件/etc/named.conf
listen-on port 53 { any; }; #监听所有地址的53端口
allow-query { any; }; #允许所有地址进行dns查询
1.2主区域配置文件/etc/named.rfc1912.zones
zone "linuxtest.com" IN {
type master;
file "linuxtest.com";
allow-transfer { any; }; #允许dns记录进行传输
};
1.3区域配置文件/var/named/linuxtest.com
$TTL 1D
@ IN SOA ns.linuxtest.com. admin.linuxtest.com. (
2016100909 ; serial #注意此处ID
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.linuxtest.com.
IN NS ns2.linuxtest.com.
ns.linuxtest.com. IN A 192.168.137.133 #主dns服务器ip地址
ns2.linuxtest.com. IN A 192.168.137.134 #从dns服务器ip地址
www IN A 192.168.137.133
2、从DNS服务器配置:
2.1主配置文件/etc/named.conf
和主DNS的主配置文件一样
2.2主区域配置文件
zone "linuxtest.com" IN {
type slave;
file "slaves/linuxtest.com";
masters {192.168.242.128;};
};
2.3重启服务:service named restart
3、主从dns服务器效果:每次主DNS服务器的区域配置文件有修改时(添加解析一定要修改ID),就会传到从DNS服务器的文件/var/named/slaves/linuxtest.com 中。
-------------------------注意事项:
主DNS的主区域配置文件打开allow-transfer {} ;
从DNS的主区域配置文件type slave 写上masters的地址;
主DNS的区域配置文件加上从DNS的NS记录。