首页 > 代码库 > DNS服务器
DNS服务器
1.DNS定义: 它是一个将域名和IP相互映射的分布式数据库。有了DNS服务器,我们只需要记录一个网站的域名即可访问,而再也不需要记忆那一串长长的IP地址了。
协议:DNS
端口: UDP:53 TCP:53
实现:BIND(Berkeley Internet Name Domain), PowerDNS, dnsmasq
FQDN --> IP: 正向解析
IP --> FQDN:反向解析
2.DNS的结构:
3.FQDN(Full Qualified Domain Name)
安全合格域名,按照中国人的习惯是从大到小写,但老外习惯从小往大了写,就像写信一样,自底向上,所以一个FQDN应该是"www.qq.com."
4.DNS查询方式
1.递归查询(recursion)(一步一步往上请求进行查询,)
客户端只发出一次请求,要求对方给出最终结果。如果客户端要查找的内容直接在服务器上得到结果,刚给出的答案是一个权威答案,否则就是一个参考答案。
2. 迭代查询(iteration)(你告诉我下一个要去找的地址,,我去找下一个,,直到找到。)
客户端发出一次请求,服务器替代客户端一次次的去请求以获得最终答案,所以迭代查询是服务器代为其查询,因此,客户端指向的DNS服务器,一定是允许给本地主机做递归的。
一般情况下客户端和local DNS服务是递归查询,DNS和local DNS之间是迭代查询的。
5.资源记录(Resource Record)
SOA:Start Of Authority, 起始授权 一个区域有且只有一个 (划分这块区域是我的)
NS:Name Server, 指定负责给定区域的名称服务器
MX:Mail eXchanger: 邮件交换器
A:Address, FQDN-->IP 列出特定主机名的 IP 地址
PTR: PoiTeR, IP --> FQDN 指针记录
AAAA: Address, FQDN --> IPv6 IPv6 的地址记录
CNAME: Canonical Name, 别名记录
6. DNS服务器类型
主DNS服务器:负责莫区域解析的服务器,对区域的所有更新都有通过此服务器进行。
从DNS服务器: 负责某区域解析,但不负责更新操作。
dns缓存文件
1、区域数据文件有版本号(序列号) : serial number 2、刷新时间(同步检查周期):refresh 3、重试时间(重试周期):retry, 重试时间要小于刷新时间 4、过期时间(失效时长):expire, 如果超过过期时间主服务器仍然没有恢复,则从服务器也停止解析 5、否定应答的TTL值:在查找不到记录的情况下,无法缓存,下次请求还会继续去请求服务器,因此需要设置TTL值来限制客户端的再次无意义请求 协调过程: 从服务器在间隔达到refresh指定的时长后发起同步请求至主服务器;主服务器响应serial。 从服务器与本地的serial进行比较;如果主服务器serial大于本。 意味着主服务器区域数据文件更新了,因此进行同步操作。
8. 资源记录的格式:
Name [ttl] IN RRtype Value
SOA:
name:区域名称,可使用@替代
value:
第一段:
主DNS服务器的FQDN,也可以是当前区域的名称
当前区域的管理员邮箱
@用于表示当前区域的名字,所以邮箱地址不能出现@符号
第二段:
(主从服务器协调属性定义及否定应答的TTL值)
eg:
ibm.com. 60 IN SOA ibm.com. ns.ibm.com. (
2015011601 ;serial number
1H 刷新时间
5M 重试时间
7D 过期时间
1D 否定答案
)
注意:SOA后面ns.ibm.com.中最后面那个.一定不能省略,如果省略,系统会默认给补上你的区域名称。
一个区域数据文件可以有多个NS记录 name: 区域名称,可使用@替代 value:dns服务器的FQDN eg: @ IN NS ns1.ibm.com. @ IN NS ns2.ibm.com. 提示: 1、相邻资源记录的name相同时,后面的可省略 2、任何一个value中指定的FQDN,在其域的正向解析文件中应该有对应的A记录 一个区域数据文件可以有多个MX记录 name: 区域名称,可以使用@替代 value:邮件服务器的FQDN 在value之前需要有优先级的设定(0-99, 数字越小优先级越高) eg: @ IN MX 10 mail1.ibm.org. IN MX 20 mail2.ibm.org. 应用于正向区域文件 name: FQDN value: IP eg: www.ibm.org. IN A 1.1.1.1 泛域名解析: * IN A 1.1.1.1 反向区域文件 负责IP——>FQDN的解析,只能定义在反向区域数据文件中,反向区域名称为逆向网络地址加.in-addr.arpa.后缀组成。 name:IP,逆向的主机地址,如:93.251.16.172.in-addr.arpa. value:FQDN,这里的FQDN不需要有A记录,反向区域中不能出现A记录和MX eg: 1 IN PTR www.ibm.com. name: 别名 value:正式名字 eg: web IN CNAME www.ibm.com.
二、DNS的安装
DNS是同时监听TCP与UDP协议的53号端口的,它的协议是DNS,软件名称是BIND(当然也有其它的)、进程名是named,这里就详细介绍以BIND方式安装DNS服务
1、安装bind,最好提前装好yum源,省得解决依赖关系。
1 | [root@nmshuishui ~] # yum -y install bind |
2、启动服务,检查是否已经监听53号端口
[root@xiaoxiao ~]# service named start
Starting named: [ OK ]
[root@xiaoxiao ~]# ss -antu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:647 *:*
udp UNCONN 0 0 127.0.0.1:53 *:*
udp UNCONN 0 0 *:69 *:*
udp UNCONN 0 0 *:847 *:*
udp UNCONN 0 0 ::1:53 :::*
tcp LISTEN 0 3 ::1:53 :::*
tcp LISTEN 0 3 127.0.0.1:53 *:*
tcp LISTEN 0 128 :::22 :::*
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 128 ::1:953 :::*
tcp LISTEN 0 128 127.0.0.1:953 *:*
tcp LISTEN 0 100 ::1:25 :::*
tcp LISTEN 0 100 127.0.0.1:25 *:*
tcp LISTEN 0 128 127.0.0.1:6010 *:*
tcp LISTEN 0 128 ::1:6010 :::*
tcp ESTAB 0 0 192.168.211.128:22 192.168.211.1:63421
[root@xiaoxiao ~]#
3、配置DNS
1)修改主配置文件
现在DNS虽然已经启动成功,但还不能提供正常的解析服务,因为还没有创建区域数据库文件。
主配置文件:定义区域,在/etc/named.conf
区域数据文件:区域数据文件其实就是区域文件数据库,里面定义资源记录,它是一个纯文本文件,只能包含资源记录或宏定义。
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
// listen-on port 53 { 127.0.0.1; }; 不注释只监听本机
// listen-on-v6 port 53 { ::1; }; ipv6不需要
directory "/var/named"; 定义数据库的默认目录。
// dump-file "/var/named/data/cache_dump.db";
// statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; };
recursion yes; 准许递归。
allow-query { localhost; };
recursion yes;
// dnssec-enable yes;
// dnssec-validation yes; dns安全机制暂且不需要。
// dnssec-lookaside auto;
/* Path to ISC DLV key */
// bindkeys-file "/etc/named.iscdlv.key";
// managed-keys-directory "/var/named/dynamic";
};
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";
修改完主配置文件后,再重启下named,这时它就会监听服务器的22号端口了。
]# service named restart
Stopping named: . [ OK ]
Starting named: [ OK ]
[root@xiaoxiao ~]# ss -antu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:647 *:*
udp UNCONN 0 0 192.168.211.128:53 *:*
udp UNCONN 0 0 127.0.0.1:53 *:*
udp UNCONN 0 0 *:69 *:*
udp UNCONN 0 0 *:847 *:*
tcp LISTEN 0 3 192.168.211.128:53 *:*
tcp LISTEN 0 3 127.0.0.1:53 *:*
tcp LISTEN 0 128 :::22 :::*
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 128 ::1:953 :::*
tcp LISTEN 0 128 127.0.0.1:953 *:*
tcp LISTEN 0 100 ::1:25 :::*
tcp LISTEN 0 100 127.0.0.1:25 *:*
tcp LISTEN 0 128 127.0.0.1:6010 *:*
tcp LISTEN 0 128 ::1:6010 :::*
tcp ESTAB 0 452 192.168.211.128:22 192.168.211.1:63421
tcp TIME-WAIT 0 0 127.0.0.1:48767 127.0.0.1:953
[root@xiaoxiao ~]#
2)创建正向区域
DNS服务器有四种类型:主DNS服务器,从DNS服务器,缓存名称服务器,转发服务器
因为这里新建的是第一台DNS服务器,所以DNS服务器类型为主DNS服务器,使用file指定数据文件,以;号结尾。
在:vim /etc/named.rfc1912.zones 下创建xiaoxiao.com域。
zone"xiaoxiao.com" IN {
type master; 类型为主服务器
file "xiaoxiao.com.zone;" 区域数据的路径,(var/named/xiaoxiao.com.zone )
是在/etc/named.conf中定义的。
};
在/var/named/下创建正向区域文件数据库,命令为shuishui.com.zone,并填写资源记录
$TTL 600
@ IN SOA dns.xiaoxiao.com. dnsadmin.xiaoxiao.com.(
2015011601
1H
5M
3D
12H
)
IN NS dns
IN MX 10 mail
dns IN A 192.168.211.128
mail IN A 192.168.211.10
www IN A 192.168.211.11
ftp IN CNAME www
修改配置文件及区域后需要执行的6个步骤
[root@xiaoxiao named]# chown root:named xiaoxiao.com.zone 1.修改属主属组。
[root@xiaoxiao named]# chmod 640 xiaoxiao.com.zone 2.修改权限
[root@xiaoxiao named]# named-checkconf 3.检查配置文件
[root@xiaoxiao named]# named-checkzone xiaoxiao.com xiaoxiao.com.zone
zone xiaoxiao.com/IN: loaded serial 2015011601 4.检查区域文件
OK
[root@xiaoxiao named]# service named restart 5.重启服务器
Stopping named: . [ OK ]
Starting named: [ OK ]
[root@xiaoxiao named]# tail /var/log/messages 6.查看日志文件
Jan 17 00:47:21 xiaoxiao named[1856]: command channel listening on 127.0.0.1#953
Jan 17 00:47:21 xiaoxiao named[1856]: command channel listening on ::1#953
Jan 17 00:47:21 xiaoxiao named[1856]: zone 0.in-addr.arpa/IN: loaded serial 0
Jan 17 00:47:21 xiaoxiao named[1856]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
Jan 17 00:47:21 xiaoxiao named[1856]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
Jan 17 00:47:21 xiaoxiao named[1856]: zone xiaoxiao.com/IN: loaded serial 2015011601
Jan 17 00:47:21 xiaoxiao named[1856]: zone localhost.localdomain/IN: loaded serial 0
Jan 17 00:47:21 xiaoxiao named[1856]: zone localhost/IN: loaded serial 0
Jan 17 00:47:21 xiaoxiao named[1856]: managed-keys-zone ./IN: loaded serial 18
Jan 17 00:47:21 xiaoxiao named[1856]: running 正常启动
[root@xiaoxiao named]#
测试正向区域解析
使用dig进行测试,-t选项指定类型,@指定使用哪台主机去解释,如果不使用@的话,默认会使用/etc/resolv.conf 下指定的DNS服务器进行解析。
[root@xiaoxiao named]# dig -t A www.xiaoxiao.com @192.168.211.128
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> -t A www.xiaoxiao.com @192.168.211.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3428
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
aa说明是权威答案,说明此主机名在192.168.211.128上有A记录没有经过迭代。
;; QUESTION SECTION:
;www.xiaoxiao.com. IN A
;; ANSWER SECTION:
www.xiaoxiao.com. 600 IN A 192.168.211.11 解析成功得到ip地址。
;; AUTHORITY SECTION:
xiaoxiao.com. 600 IN NS dns.xiaoxiao.com.
;; ADDITIONAL SECTION:
dns.xiaoxiao.com. 600 IN A 192.168.211.128
;; Query time: 1 msec
;; SERVER: 192.168.211.128#53(192.168.211.128)
;; WHEN: Sat Jan 17 00:53:14 2015
;; MSG SIZE rcvd: 84
[root@xiaoxiao named]#
3)创建反向区域
1直接定义在xiaoxiao.com这个区域下就可以了,当然也是主服务器类型,使用file指定区域数据文件,要以;号结尾
vim
/etc/named
.rfc1912.zones
zone"211.168.192.in-addr.arpa" IN {
type master;
file "192.168.211.zone";
}
2在/var/named/下创建反向区域文件数据库,命令为172.16.251.zone,并填写资源记录
$TTL 600
@ IN SOA dns.xiaoxiao.com. dnsadmin.xiaoxiao.com.(
2015011601
1H
5M
3D
12H
)
IN NS dns.xiaoxiao.com.
128 IN PTR dns.xiaoxiao.com.
10 IN PTR mail.xiaoxiao.com.
11 IN PTR www.xiaoxiao.com.
3 修改配置文件及区域后需要执行的6个步骤
和以上六步骤相同,不在累赘。
4 测试反向区域解析
使用dig进行测试,-t选项指定类型,@指定使用哪台主机去解释,如果不使用@的话,默认会使用/etc/resolv.conf 下指定的DNS服务器进行解析。
[root@xiaoxiao named]# dig -x 192.168.211.11 @192.168.211.128
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> -x 192.168.211.11 @192.168.211.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33643
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;11.211.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
11.211.168.192.in-addr.arpa. 600 IN PTR www.xiaoxiao.com. 反解析成功。
;; AUTHORITY SECTION:
211.168.192.in-addr.arpa. 600 IN NS dns.xiaoxiao.com.
;; ADDITIONAL SECTION:
dns.xiaoxiao.com. 600 IN A 192.168.211.128
;; Query time: 0 msec
;; SERVER: 192.168.211.128#53(192.168.211.128)
;; WHEN: Sat Jan 17 01:37:27 2015
;; MSG SIZE rcvd: 109
[root@xiaoxiao named]#
三、DNS主从同步
1、向区域中添加从服务器的关键两步:
1)、在上级获得授权
2)、在区域数据文件中为从服务器添加一条NS记录和对应的A或PTR记录。
2、向从区域中添加区域,但不需要自己创建数据文件,因为要从主DNS服务器上做区域传送,为了安全,要放在/var/named/slaves目录下,这也是系统专门为从服务器准备的存放区域数据文件的路径。
zone"xiaoxiao.com" IN {
type master;
masters{ 192.168.211.12; }; 指定主服务器
file "slaves/xiaoxiao.com.zone"; 指定区域文件路径
};
zone "211.168.192.in-addr.arpa" IN {
type master;
masters{ 192.168.211.128;}; 设定反向区域。
file "192.168.211.zone";
};
DNS服务器