DNS域名解析服务
目录
一、DNS理解及相关配置信息
(1) DNS:Domain Name System 域名系统,这是一项用解析域名与IP地址对应关系的技术,能够接受用户输入IP地址或域名,然后自动查找与之匹配的IP地址或域名,即将域名解析为IP地址(正向解析),获将IP地址解析为域名(反向解析)。
(2)为保证互联网的正常运行,提供了下面三种类型的服务器:
主服务器:在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系。
从服务器:从主服务器中获得域名与IP地址的对应关系并进行维护,以防主服务器宕机等情况。
缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率。
(3)配置文件:
主配置文件:/etc/named.conf 定义bind服务程序的运行。
区域配置文件:/etc/named.rfc1912.zones 对应每个域和相应IP地址所在的具体位置。
数据配置文件目录:/var/named 该目录用来保存域名和IP地址真实对应关系的数据配置文件。
二、安装Bind服务程序
Bind(Berkeley Internet Name Domain,伯克利因特网名称域)服务是全球范围使用最广泛,最安全可靠且高效的域名解析服务程序。在安装Bind服务程序时,最好在安装上bind-chroot,以便有效地限制bind服务程序仅能对自身的配置文件进行操作,以确保整个服务器的安全。
#yum install bind-chroot (本机已安装bind、bind-libs,bind-utils)
三、正向解析实验
注意事项:做实验前,关闭防火墙和selinux
#service iptables stop 临时关闭 or chkconfig iptables off 永久关闭,重启生效
#setenforce 0 临时关闭 or #vim /etc/selinux/config 设置SELINUX=disabled 永久关闭
1、修改主配置文件named.conf
[root@admin2 ~]# vim /etc/named.conf
options{
listen-on port 53 { any; }; 表示服务器上的所有IP地址均可提供DNS域名解析服务
......
allow-query { any; }; 允许所有人对本服务器发送请求
......};
2.编辑区域配置文件named.rfc1912.zones
添加 到结尾处
[root@admin2 ~]# vim /etc/named.rfc1912.zones
zone "zhang.com" IN{
type master; 服务类型
file "zhang.com.zone"; 域名与IP地址解析规则保存的文件位置
allow-update { none; }; 允许哪些客户机动态更新解析信息
};
3.编辑数据配置文件
(1)从/var/named目录中复制一项正向解析的模板文件(named.localhost),然后对文件进行编辑。复制时加上参数-a,可以保留原有文件的属主,属组和文件权限等。
[root@admin2 ~]# cd /var/named/
[root@admin2 named]# cp -a named.localhost zhang.com.zones
[root@admin2 named]# vim zhang.com.zone
$TTL 1D
@ IN SOA zhang.com. root.zhang.com. (
(授权信息开始) (DNS区域地址) (域名管理员邮箱)0 ; serial #跟新序列号
1D ; refresh #更新
1H ; retry #重试延时
1W ; expire #失效时间
3H ) ; minimum #无效解析记录的缓存时间
NS ns.zhang.com. #域名服务器记录
ns IN A 192.168.231.140 #地址记录
www IN A 192.168.231.140 #地址记录
(2)检验解析结果前,需要将DNS地址参数修改成本机IP地址,这样就能由本机提供DNS查询服务了,nslookup命令用于检测能否从DNS服务器中查询到域名与IP地址的解析记录,检测DNS服务器是否能够为用户提供服务。
[root@admin2 ~]# vim /etc/resolv.conf
; generated by /sbin/dhclient-script
nameserver 192.168.231.140[root@admin2 ~]# service named restart
停止 named: [确定]
启动 named: [确定][root@admin2 ~]# nslookup
> www.zhang.com
Server: 192.168.231.140
Address: 192.168.231.140#53Name: www.zhang.com
Address: 192.168.231.140
> ns.zhang.com
Server: 192.168.231.140
Address: 192.168.231.140#53Name: ns.zhang.com
Address: 192.168.231.140
四、反向解析实验
1.编辑区域配置文件
[root@admin2 ~]# vim /etc/named.rfc1912.zones 添加结尾处
zone "231.168.192.in-addr.arpa" IN { #反向解析区域
type master;
file "192.168.231.arpa";
allow-update { none;};
};
2.从/var/named目录中复制一项反向解析的模板文件( named.loopback),然后对文件进行编辑。复制时也需要加-a,同上。
[root@admin2 named]# cp -a named.loopback 192.168.231.arpa
[root@admin2 named]# vim 192.168.231.arpa
$TTL 1D
@ IN SOA zhang.com. root.zhang.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.zhang.com.
ns A 192.168.231.140
140 PTR ns.zhang.com. #PTR为指针记录,只用于反向解析中
140 PTR www.zhang.com.
3.检验分析结果。
[root@admin2 named]# service named restart
停止 named: [确定]
启动 named: [确定][root@admin2 named]# nslookup
> 192.168.231.140
Server: 192.168.231.140
Address: 192.168.231.140#53140.231.168.192.in-addr.arpa name = ns.zhang.com.
140.231.168.192.in-addr.arpa name = www.zhang.com.
>
五、部署从服务器
主服务器admin2,192.168.231.140;
从服务器admin3,192.168.231.132
1.在主服务器中编辑区域配置文件,允许从服务器的更新请求。即修改allow-update{从服务器IP地址;};
[root@admin2 ~]# vim /etc/named.rfc1912.zones
zone "zhang.com" IN{
type master;
file "zhang.com.zone";
allow-update { 192.168.231.132; };
};zone "231.168.192.in-addr.arpa" IN {
type master;
file "192.168.231.arpa";
allow-update { 192.168.231.132;};
};
2.在从服务器中编辑区域配置文件
[root@admin3 ~]# vim /etc/named.rfc1912.zones 添加或重新创建一个named.rfc1912.zones
zone "zhang.com" IN {
type slave;
masters { 192.168.231.140;};
file "slaves/zhang.com.zone"; #域名与IP地址解析规则保存的文件位置,从服务器放在/var/named/slaves下
};
zone "231.168.192.in-addr.arpa" IN{
type slave;
masters {192.168.231.140;};
file "slaves/192.168.231.arpa";
};
3.检验解析结果。把从服务器DNS修改为本机IP地址,这样即可使用从服务器自身提供的DNS域名解析服务,当从服务器重新启动后,主服务器的数据配置文件已经同步到从服务器上,默认在/var/named/slaves下。
[root@admin3 ~]# vim /etc/resolv.conf
nameserver 192.168.231.132
[root@admin3 ~]# service named restart
停止 named: [确定]
启动 named: [确定]
[root@admin3 ~]# ls /var/named/slaves/
192.168.231.arpa zhang.com.zone #数据已经同步到从服务器[root@admin3 ~]# nslookup
> www.zhang.com
Server: 192.168.231.132 #域名服务器,即/etc/reslove.conf中的第一个DNS地址
Address: 192.168.231.132#53Name: www.zhang.com
Address: 192.168.231.140
六、安全的加密传输
互联网中的绝大多数DNS服务器都是基于BIND域名解析服务搭建的,而bind服务程序为了提供安全的解析服务,已经对TSIG(RFC 2845)加密机制提供了支持。TSIG主要是利用了密码编码的方式来保护区域信息的传输(Zone Transfer),即TSIG加密机制保证了DNS服务器之间传输域名区域信息的安全性。
1.在主服务器上生成密钥,并把私钥后面的值记录下来。dnssec-keygen命令用于生成DNS服务密钥
参数 | 作用 |
-a | 指定加密算法,包括RSAMD5(RSA)、RSASHA1、DSA、NSEC3RSASHA1、NSEC3DSA等 |
-b | 密钥长度(HMAC-MD5的密钥长度在1~512位之间) |
-n | 密钥的类型(HOST表示与主机相关) |
[root@admin2 ~]# dnssec-key -a HMAC-MD5 -b 128 -n HOST master-slave
Kmaster-slave.+157+43267
[root@admin2 ~]# ls -al Kmaster-slave.+157+43267.*
-rw-------. 1 root root 56 9月 4 19:48 Kmaster-slave.+157+43267.key
-rw-------. 1 root root 165 9月 4 19:48 Kmaster-slave.+157+43267.private[root@admin2 ~]# cat Kmaster-slave.+157+43267.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: VZ5lF/Kl85tXAD4S+0xyDw==
Bits: AAA=
Created: 20180904114817
Publish: 20180904114817
Activate: 20180904114817
2.在主服务中创建密钥验证文件。进入bind服务程序用于保存配置文件目录,把私钥(Kmaster-slave.+157+43267.private)中的密钥名称,加密算法和私钥机密字符串按照下面格式写入transfer.key传输配置文件中。为了安全起见,把文件数组修改为named,并将文件权限设置得要小一些,然后把该文件做成一个硬链接到/etc目录中。
[root@admin2 ~]# cd /var/named/chroot/etc/
[root@admin2 etc]# vim transfer.key
key "master-slave" {
algorithm hmac-md5;
secret "VZ5lF/Kl85tXAD4S+0xyDw==";
};[root@admin2 etc]# chown root:named transfer.key
[root@admin2 etc]# chmod 640 transfer.key
[root@admin2 etc]# ln transfer.key /etc/transfer.key
3.开启并加载Bind服务的密钥验证功能。在主服务器的主配置文件中加载密钥文件,然后设置,使只允许带有master-slave密钥认证的DNS服务器同步数据配置文件。
include "/etc/transfer.key";
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
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;dnssec-enable yes;
dnssec-validation yes;/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";managed-keys-directory "/var/named/dynamic";
allow-transfer { key master-slave;};
};
此时,DNS主服务器的TSIG密钥加密传输功能配置完成。清空DNS从服务器下/var/named/slaves下的文件,再次重启Bind服务时,已经不能自动获取数据配置文件了。
[root@admin3 ~]# clear
[root@admin3 ~]# cd /var/named/slaves/
[root@admin3 slaves]# rm -f *[root@admin3 slaves]# service named restart
[root@admin3 slaves]# ls
4.配置从服务器,使其支持密钥验证。配置DNS从服务器同DNS主服务器基本相同,到/var/named/chroot/etc目录下,创建transfer.key文件,然后修改属组,修改文件权限,把文件链接到/etc目录下。
[root@admin3 ~]# cd /var/named/chroot/etc/
[root@admin3 etc]# vim transfer.key
key "master-slave"{
algorithm hmac-md5;
secret "VZ5lF/Kl85tXAD4S+0xyDw==";
};[root@admin3 etc]# chown root:named transfer.key
[root@admin3 etc]# chmod 640 transfer.key
[root@admin3 etc]# ls transfer.key /etc/transfer.key
5.开启并加载从服务器的密钥验证功能。编辑/etc/named.conf文件,在第9行位置添加加载密钥配置文件,并且写上主服务器的IP地址和密钥名称。
9 include "/etc/transfer.key";
10 options {
11 listen-on port 53 { any; };
12 listen-on-v6 port 53 { ::1; };
13 directory "/var/named";
14 dump-file "/var/named/data/cache_dump.db";
15 statistics-file "/var/named/data/named_stats.txt";
16 memstatistics-file "/var/named/data/named_mem_stats.txt";
17 allow-query { any; };
18 recursion yes;
19
20 dnssec-enable yes;
21 dnssec-validation yes;
22
23 /* Path to ISC DLV key */
24 bindkeys-file "/etc/named.iscdlv.key";
25
26 managed-keys-directory "/var/named/dynamic";
27 };
28
29 logging {
30 channel default_debug {
31 file "data/named.run";
32 severity dynamic;
33 };
34 };
35 server 192.168.231.140
36 {
37 keys { master-slave };
38 };
6.重启bind服务程序,发现可以同步到数据配置文件了。
[root@admin3 ~]# ls /var/named/slaves/
192.168.231.arpa zhang.com.zone
七、部署DNS缓存服务器
DNS缓存服务器就是把用户经常用到的IP地址和域名的解析记录保存在本地主机,提高下次解析的效率。简答来说就是当我们使用电脑访问某个网址的时候,需要DNS服务器解析,并且把这个网址的ip临时储存起来,这样你下次访问这个网址的时候就可以直接解析,提高了访问速度,这就是DNS缓存。
1.配置双网卡参数。使之更加接近真实的网络环境,实现外网查询,一块网卡设置为NAT模式,一块网卡设置为桥接模式,配置文件根据windows主机IP设置。
windows主机:
IPv4 地址 . . . . . . . . . . . . : 192.168.43.180
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.43.1
虚拟机:
br0 inet addr:192.168.43.191 Bcast:192.168.43.255 Mask:255.255.255.0 桥接网卡
eth0 inet addr:192.168.231.140 Bcast:192.168.231.255 Mask:255.255.255.0
2.在bind服务程序的主配置文件中添加缓存转发参数。在/var/named.conf中添加"forwarders{上级DNS服务器地址;};",上级服务器地址是指获取数据配置文件的服务器,这里使用114.114.114.114,是国内移动、电信和联通通用的DNS。
[root@admin2 ~]# vim /etc/named.conf
....
options{
....
forwarders{ 114.114.114.114; };
......
};
......
3.客户端修改DNS地址为缓存服务器IP地址
[root@admin3 ~]# vim /etc/resolv.conf
nameserver 192.168.231.140
3.测试。
[root@admin3 ~]# nslookup
> www.zhang.com
Server: 192.168.231.140
Address: 192.168.231.140#53Name: www.zhang.com
Address: 192.168.231.140
> www.baidu.com
Server: 192.168.231.140
Address: 192.168.231.140#53Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 111.13.100.91
Name: www.a.shifen.com
Address: 111.13.100.92