DNS服务器
前言
学习完搭建FTP服务器实现文件共享之后,我们讲进一步学习搭建DNS服务器实现域名解析,本节所讲内容主要包括DNS服务器常见概念,安装及相关配置文件,并且实战:为公司内网搭建一个DNS服务器。
一:DNS服务器概述及相关配置
1:DNS服务器是什么
DNS 是一个分布式数据库,命名系统采用层次的逻辑结构,如同一棵倒置的树,这个逻辑的树形结构称为域名空间,由于DNS 划分了域名空间,所以各机构可以使用自己的域名空间创建DNS信息。
注:DNS 域名空间中,树的最大深度不得超过127 层,树中每个节点最长可以存储63 个字符。
其域名系统,在TCP/IP 网络中有非常重要的地位,能够提供域名与IP地址的解析服务。
2:DNS服务概述
2.1:域和域名
DNS 树的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个层次结构。
域名空间的每个域的名字,通过域名进行表示。
域名:通常由一个完全合格域名(FQDN)标识。FQDN能准确表示出其相对于DNS 域树根的位置,也就是节点到DNS 树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔,对于 DNS 域google 来说,其完全正式域名(FQDN)为google.com.
例如:google为com域的子域,其表示方法为google.com,而www为google域中的子域,可以使用www.google.com表示。
注意:通常,FQDN 有严格的命名限制,长度不能超过256 字节,只允许使用字符a-z,0-9,A-Z
和减号(-)。点号(.)只允许在域名标志之间(例如“google.com”)或者FQDN 的结尾使用。
域名不区分大小。由最顶层到下层,可以分成:根域、*域、二级域、子域。
nternet 域名空间的最顶层是根域(root),其记录着Internet 的重要DNS 信息,由Internet域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给连接到Internet 的各个组织。
“.”全球有13个根(root)服务器10台在美国 另外3台分别在英国 瑞士 日本
DNS 根域下面是*域,也由Internet 域名注册授权机构管理。共有3 种类型的*域。
组织域:
采用3 个字符的代号,表示DNS 域中所包含的组织的主要功能或活动。比如com 为商业机构组织,edu 为教育机构组织,gov 为*机构组织,mil 为军事机构组织,net 为网络机构组
织,org 为非营利机构组织,int 为国际机构组织。
地址域:
采用两个字符的国家或地区代号。如cn 为中国,kr 为韩国,us 为美国。
反向域:
这是个特殊域,名字为in-addr.arpa,用于将IP 地址映射到名字(反向查询)。
2.2:(Zone) ,资源记录
区是DNS 名称空间的一部分,其包含了一组存储在DNS 服务器上的资源记录。
使用区的概念,DNS 服务器回答关于自己区中主机的查询,每个区都有自己的授权服务器。
2.3:主域名服务器与辅助域名服务器
当区的辅助服务器启动时,它与该区的主控服务器进行连接并启动一次区传输,区辅助服务器定期与区主控服务器通信,查看区数据是否改变。如果改变了,它就启动一次数据更新传输。
每个区必须有主服务器,另外每个区至少要有一台辅助服务器,否则如果该区的主服务器崩溃了,就无法解析该区的名称。
3:辅助服务器的优点:
3.1:容错能力
配置辅助服务器后,在该区主服务器崩溃的情况下,客户机仍能解析该区的名称。一般把区的主
服务器和区的辅助服务器安装在不同子网上,这样如果到一个子网的连接中断,DNS 客户机还能
查询另一个子网上的名称服务器。
3.2:减少广域链路的通信量
如果某个区在远程有大量客户机,用户就可以在远程添加该区的辅助服务器,并把远程的客户机
配置成先查询这些服务器,这样就能防止远程客户机通过慢速链路通信来进行DNS 查询。
3.3: 减轻主服务器的负载
辅助服务器能回答该区的查询,从而减少该区主服务器必须回答的查询数。
3.4: DNS 服务器
运行DNS 服务器程序的计算机,储存DNS 数据库信息。DNS 服务器会尝试解析客户机的查询请求。
3.5: DNS 缓存
DNS 服务器在解析客户机请求时,如果本地没有该DNS 信息,则可以会询问其他DNS 服务器,当
其他域名服务器返回查询结果时,该DNS 服务器会将结果记录在本地的缓存中,成为DNS 缓存。
当下一次客户机提交相同请求时,DNS 服务器能够直接使用缓存中的DNS 信息进行解析。
4:DNS查询方式-- 递归查询和迭代查询
4.1: 看一个DNS查询过程
通过8个步骤的解析过程就使得客户端可以顺利访问www.163.com 这个域名,但实际应用中,通常这个过程是非常迅速的
4.2: 两种查询方式
4.2.1: 递归查询.一次沟通完。
递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一
个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询
问其他服务器,并将返回的查询结果提交给客户机。
4.2.2: 迭代查询
DNS 服务器另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。
总结:一般情况下,从PC客户端到本地DNS服务器是属于递归查询。而DNS服务器之间就是的交互查询就是迭代查询。
4.3: 两种解析方式
4.3.1:正向解析:
正向解析是指域名到IP 地址的解析过程。
4.3.2:反向解析:
反向解析是从IP 地址到域名的解析过程。反向解析的作用为服务器的身份验证。
5: DNS资源记录
5.1:SOA 资源记录
每个区在区的开始处都包含了一个起始授权记录(Start of Authority Record),简称SOA 记录。
SOA 定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA 记录。
5.2:NS 资源记录
NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。每个区在区根处至少包含一个NS 记录。
5.3:A 资源记录
地址(A)资源记录把FQDN 映射到IP 地址。 因为有此记录,所以DNS服务器能解析FQDN域名对应的IP 地址。
5.4:PTR 资源记录
相对于A 资源记录,指针(PTR)记录把IP地址映射到FQDN。 用于反向查询,通过IP地址,找到域名。
5.5:CNAME 资源记录
别名记录(CNAME)资源记录创建特定FQDN 的别名。用户可以使用CNAME 记录来隐藏用户网络的实现细节,使连接的客户机无法知道真正的域名。
二:DNS服务相关配置
BIND服务相关配置文件
/etc/named.conf 是DNS服务器的主配置文件,BIND软件构建服务器时,其配置文件中主要有两种类型的配置文件:一类是主配置文件,用于设置named服务的全局配置。另一类是区域数据文件,用于存放某个DNS区域的地址解析记录。
1:主配置文件
[[email protected] ~]# vim /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; }; #监听的端口和IP地址
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; }; #允许解析本地DNS服务器的
recursion yes;
上述配置内容中的dump-file,statistics-file,memstatistics-file 等配置项用于指定缓存数据库的文件,状态专题太统计文件的位置。
2:区域配置部分
[[email protected] named]# vim /etc/named.rfc1912.zones
zone "." IN { #区域为根
type hint; #类型为根区域
file "named.ca"; 区域文件所存放的位置,默认地址在 /var/named/named.ca
};
zone "localhost" IN { #正向解析(localhost)区域
type master; #类型为主区域
file "named.localhost"; #主区域配置文件的存放位置
allow-transfer { 173.16.16.2; }; #允许从本地下载的主服务器地址
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN { #反向解析(1.0.0.127)区域
type slave; #类型为从区域
file "named.loopback"; #从区域配置文件的存放位置
allow-update { none; };
};
注释:
1):每个zone区域都是可选的(包括根域,回环域和方向域)
2):方向区域的名称由倒序的网络地址和 “in-addr.arpa”组合而成
3):file 配置项用于指定本区域的区域文件,其区域文件的文件名称由管理员设定
3:区域数据配置文件
在上个主配置文件中,指定其区域数据配置文件默认是放在/var/named/目录下的,因此区域数据配置文件通常都是放在这里的,每一个区域数据文件都对应一个DNS解析区域,
根域“.”的区域配置文件是比较特殊的,网络中所有的DNS服务器都是用同一份根区域数据文件,全球只有13个根域。
3.1:存放区域配置文件目录及内容
[[email protected] ~]# ls /var/named/
chroot dynamic named.empty named.loopback
data named.ca named.localhost slaves
注释:
1):slaves 是从服务器的配置文件
2):named.ca 是根域的配置文件
3):named.empty 是所有与配置文件的模板
4):named.localhost 是正向解析域的配置文件---主服务器通常都用它
5):named.loopback 是反向解析域的配置文件---主服务器通常都用它
3.2:区域配置文件内容
1):[[email protected] named]# vim named.ca
;; ANSWER SECTION:
. 518400 IN NS M.ROOT-SERVERS.NET.
. 518400 IN NS A.ROOT-SERVERS.NET.
……….
………
. 518400 IN NS K.ROOT-SERVERS.NET.
. 518400 IN NS L.ROOT-SERVERS.NET.
2):[[email protected] named]# vim named.localhost
2.1:TTL配置及SOA记录部分
$TTL 1D #有效解析记录的生存周期
@ IN SOA xuegod.cn admin.xuegod.cn. ( # “@”表示解析域的名称,admin.xuegod.cn.:邮箱地址
0 ; serial # 更新的***,服务器更新内容后,要上调需利好
1D ; refresh # 刷新时间
1H ; retry # 下载失败后的重试时间间隔
1W ; expire #失效时间,超过该时间之后则无法重新下载
3H ) ; minimum #无效解析记录的生存周期
2.2:地址解析记录部分
@ NS ns.xuegod.cn
MX 10 mail.xuegod.cn
WWW A 127.0.0.1
mail A 192.168.21.2
ftp CNAME www
注释:
1):NS域名文件服务器(Name Server),记录当前区域的DNS服务器的主机地址
2):MX邮件交换,记录当前邮件服务器的主机地址,数字10(表示当前有多个MX记录)选择邮件服务器的优先级,数字越小优先级越高。
3):A+地址 记录正向解析条目,如:“WWW A 127.0.0.1”表示域名www.xuegod.cn对应的IP地址是 127.0.0.1
4):CNAME别名 ,表示记录正向解析的其他名称,如:“ftp CNAME www”表示域名ftp.xuegod.com是www/xuegod.cn的别名。
5):[[email protected] named]# vim named.loopback
$TTL 1D
@ INSO xuegod. cadmin.xuegod.cn. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
2 PTR www.xuegod.cn
5 PTR ftp.xuegod.cn
其中NS MX记录的首行中的“@”符号是可以省略的(默认继承SOA记录首行的@信息),在方向区域数据文件中,不会用到A地址记录,而是用PTR指针记录。 在使用PTR记录时,第一列中指明对应的IP地址,只需要写部分就可以的了,其中“2 PTR www.xuegod.cn
”就表示,IP地址为192.168.1.2的主机域名为www.xuegod.cn
三:实战案例
1:实验要求
企业要搭建一台简单的DNS服务器,实现公司的域名解析xuegod.cn及利用主从网关实现负载均衡,并且要进行安全认证。
2:实验环境
主服务器:xuegod63 IP地址:192.168.1.63
从服务器:xuegod64 IP地址:192.168.1.64
3:实验拓扑
4:实验步骤
4.1:DNS主服务器
4.1.1:修改主配置文件
[[email protected] ~]#vim/etc/named.conf
options {
listen-on port 53 { any; };
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 { any; };
recursion yes;
……….
managed-keys-directory "/var/named/dynamic";
};
4.1.2:修改区域配置文件
[[email protected] ~]# vim /etc/named.rfc1912.zones
zone "xuegod.cn" IN {
type master;
file "xuegod.cn.zone";
allow-transfer { 192.168.1.0/24; };
};
allow-update { none; }; #删掉
4.1.3:创建区域数据配置文件并修改
[[email protected] named]# cp -p named.localhost xuegod.cn.zone #要加-p 把权限也要复制过来
[[email protected] named]# ll -h xuegod.cn.zone
-rw-r----- 1 root named 275 Dec 3 06:10 xuegod.cn.zone
[[email protected] named]# vim xuegod.cn.zone
$TTL 1D
xuegod.cn.IN SOAdns.xuegod.cn. root.xuegod.cn. (
2; serial
1D; refresh
1H; retry
1W; expire
3H ); minimum
xuegod.cn.NSdns.xuegod.cn.
dns.xuegod.cn.A192.168.1.63
www.xuegod.cn.A192.168.1.63
ftp.xuegod.cn. CNAME www.xuegod.cn.
www.xuegod.cn. 1 A 192.168.1.63
www.xuegod.cn. 1 A 192.168.1.64
www.xuegod.cn. 1 A 192.168.1.1
4.1.4:修改DNS地址
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0c:29:12:f3:74
TYPE=Ethernet
UUID=8f64859c-d43d-4247-9d3e-2d0e6bde9451
ONBOOT=yes
NM_CONTROLLED=yes
IPADDR=192.168.1.63
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.63
[[email protected]3 ~]# service network restart
4.1.5:测试
[[email protected] ~]# service named restart
[[email protected] ~]# ping www.xuegod.cn
PING www.xuegod.cn (192.168.1.63) 56(84) bytes of data.
64 bytes from 192.168.1.63: icmp_seq=1 ttl=64 time=0.013 ms
64 bytes from 192.168.1.63: icmp_seq=2 ttl=64 time=0.048 ms
4.2:DNS从服务器
4.2.1:修改主配置文件
[[email protected] ~]# vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
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 { any; };
recursion yes;;
managed-keys-directory "/var/named/dynamic";
};
4.2.2:修改区域文件
[[email protected] ~]# vim /etc/named.rfc1912.zones
zone "xuegod.cn." IN {
type slave;
file "slaves/xuegod.cn.zone.file";
masters { 192.168.1.63; };
};
4.2.3:修改DNS地址
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0c:29:de:f4:a1
TYPE=Ethernet
UUID=07f953ba-8898-4b94-a68c-1f180bb5030b
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.1.64
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.63
[[email protected] ~]# service network restart
4.2.4:测试DNS负载均衡功能
[[email protected] ~]# service named restart
[[email protected] ~]# ls /var/named/slaves/
xuegod.cn.zone.file
[[email protected] slaves]#vim xuegod.cn.zone.file
$ORIGIN .
$TTL 86400; 1 day
xuegod.cnIN SOAdns.xuegod.cn. root.xuegod.cn. (
4 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NSdns.xuegod.cn.
$ORIGIN xuegod.cn.
dnsA192.168.1.63
ftpCNAMEwww
$TTL 1; 1 second
wwwA192.168.1.63
A192.168.1.64
A192.168.1.1
4.2.5:测试DNS备份功能
[[email protected] ~]# vim /var/named/xuegod.cn.zone #添加以下内容
mail.xuegod.cn. A 192.168.1.63
[[email protected]3 ~]# service named restart
由于设置了1天的时间更新,所以不能立即备份。删除再重启,即可验证效果。
[[email protected] slaves]# rm -rf xuegod.cn.zone.file
[[email protected] ~]# service named restart
4.2.6:DNS主从**认证
1): 确保时间主从同步
[[email protected] named]# date
Fri Dec 4 06:00:40 EST 2015
[[email protected] slaves]# date
Fri Dec 4 06:00:53 EST 2015
2): 主DNS服务器生成秘钥,进行主从认证
[[email protected] ~]# rpm -qf `which dnssec-******`
bind-9.8.2-0.17.rc1.el6_4.6.x86_64
[[email protected] chroot]# pwd
/var/named/chroot
[[email protected] chroot]# dnssec-****** -a hmac-md5 -b 128 -n HOST abc #生成一对 对称钥匙
Kabc.+157+45442
[[email protected] chroot]# ls
dev etc Kabc.+157+45442.key Kabc.+157+45442.private usr var
注释:
-a hmac-md5:采用hmac-md5加密算法。
-b 128:生成的**长度为128位。
-n **类型。我们选择主机类型:HOST 。
-n <nametype>: ZONE | HOST | ENTITY | USER | OTHER
(DNSKEY generation defaults to ZONE)
abc #为生成**的名字
注意:生成时速度有点慢,因为生成**需要一些随机事件,因此我们可以通过移动鼠标或“find /”执行来产生一些随机事件,等待大约2分钟,查看生成的**对:
[[email protected] chroot]# cat Kabc.+157+45442.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: rUNplFvWw811PnwifZYGcg== #这是**
Bits: AAA=
Created: 20151204112514
Publish: 20151204112514
Activate: 20151204112514
[[email protected] chroot]# cat Kabc.+157+45442.key
abc. IN KEY 512 3 157 rUNplFvWw811PnwifZYGcg== #这是**
3): 修改主DNS配置:
[[email protected] ~]# vim /etc/named.rfc1912.zones #添加并修改
key abckey {
algorithm hmac-md5;
secret "rUNplFvWw811PnwifZYGcg==";
};
zone "xuegod.cn." IN {
type master;
file "xuegod.cn.zone";
allow-transfer { key abckey; };
};
4):从DNS 服务器
[[email protected] slaves]# vim /etc/named.rfc1912.zones #添加并修改
key abckey {
algorithm hmac-md5;
secret "rUNplFvWw811PnwifZYGcg=="; #主服务器的秘钥
};
zone "xuegod.cn." IN {
type slave;
file "slaves/xuegod.cn.zone.file";
masters { 192.168.1.63 key abckey; };
};
5):主从重启服务
[[email protected] slaves]# rm -rf xuegod.cn.zone.file
[[email protected] ~]# service named restart
[[email protected] ~]# service named restart
6):测试
[[email protected] slaves]# pwd
/var/named/slaves
[[email protected] slaves]# ls
xuegod.cn.zone.file
[[email protected] slaves]# cat xuegod.cn.zone.file
$ORIGIN .
$TTL 86400; 1 day
xuegod.cnIN SOAdns.xuegod.cn. root.xuegod.cn. (
4 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NSdns.xuegod.cn.
$ORIGIN xuegod.cn.
dnsA192.168.1.63
ftpCNAMEwww
mailA192.168.1.63
$TTL 1; 1 second
wwwA192.168.1.63
A192.168.1.64
A192.168.1.1
5:测试工具:nslookup 测试域名解析
5.1:非交互式模式
语法: nslookup 域名或IP 地址
[[email protected] ~]# nslookup www.xuegod.cn
Server:192.168.1.63
Address:192.168.1.63#53
Name:www.xuegod.cn
Address: 192.168.1.1
Name:www.xuegod.cn
Address: 192.168.1.63
Name:www.xuegod.cn
Address: 192.168.1.64
[[email protected] ~]# nslookup g.cn
Server:192.168.1.63
Address:192.168.1.63#53
Non-authoritative answer:
Name:g.cn
Address: 203.208.40.148
Name:g.cn
Address: 203.208.40.144
Name:g.cn
Address: 203.208.40.147
Name:g.cn
Address: 203.208.40.146
Name:g.cn
Address: 203.208.40.145
5.2:交互模式
[[email protected] ~]# nslookup
> www.xuegod.cn
Server:192.168.1.63
Address:192.168.1.63#53
Name:www.xuegod.cn
Address: 192.168.1.63
Name:www.xuegod.cn
Address: 192.168.1.64
Name:www.xuegod.cn
Address: 192.168.1.1
> g.cn
Server:192.168.1.63
Address:192.168.1.63#53
Non-authoritative answer:
Name:g.cn
Address: 203.208.40.144
Name:g.cn
Address: 203.208.40.147
Name:g.cn
Address: 203.208.40.146
Name:g.cn
Address: 203.208.40.145
Name:g.cn
Address: 203.208.40.148