实验:学习DNS服务

一、正向域名test.com解析
  • 安装DNS服务的软件包
yum install bind bind-utils
  • 修改配置文件
# 修改下面两处地方
vim /etc/named.conf
listen-on port 53 { localhost; };  # 这里设置监听哪些主机的哪个端口,localhost表示本机的所有IP地址
allow-query     { any; };    # 这里设置哪些主机能够请求查询,any表示任何主机

# 添加区域
vim /etc/named.rfc1912.zones 
zone "test.com" IN {
   type master;
   file "test.com.zone";                                                                                                                                                               
};  
  • 创建相应的资源记录数据库文件
vim /var/named/test.com.zone
$TTL 1D
@    IN  SOA  ns1.test.com.  admin.test.com. ( 1000 1D 1H 1W 3H )
         NS   ns1.test.com.
ns1      A    192.168.30.7
web      A    192.168.20.45
www  IN  CNAME web

# 修改文件的权限,所属主为named 访问权限为640
ll test.com.zone 
-rw-r----- 1 root named 176 Apr 19 14:52 test.com.zone
  • 区域解析库文件的组成
它是由许多不同类型的RR(资源记录)组成,RR定义格式如下:
name [TTL] IN rr_type value
rr_type的值:
- SOA
- A
- AAAA
- PTR
- NS
- CNAME
- MX
TTL可从全局继承

Examples:
→SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
	magedu.com. 86400 IN SOA ns.magedu.com. nsadmin.magedu.com. 
	(
	2015042201 ;序列号
	2H ;刷新时间
	10M ;重试时间
	1W ;过期时间
	1D ;否定答案的TTL值
	)

→NS:Name Server,专用于标明当前区域的DNS服务器
	magedu.com. IN NS ns1.magedu.com.
	
→A:internet Address,作用,FQDN --> IP
	www.magedu.com. IN A 1.1.1.1
	www.magedu.com. IN A 2.2.2.2

→MX:Mail eXchanger,邮件交换器
	magedu.com. IN MX 10 mx1.magedu.com.

→PTR:PoinTeR。有特定格式,把IP地址反过来写;有特定后缀:in-addr.arpa.
	4.3.2.1.in-addr.arpa. IN PTR www.magedu.com.

→CNAME:Canonical Name,别名记录
	www.magedu.com. IN CNAME websrv.magedu.com.
  • 启动服务并测试
# 检查配置文件是否有问题
named-checkconf
# 启动服务
systemctl start named
# 查看服务日志
journalctl -u named
# 使用 dig 命令测试
dig www.test.com @192.168.30.7
; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> www.test.com @192.168.30.7
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29355
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.test.com.                  IN      A

;; ANSWER SECTION:
www.test.com.           86400   IN      CNAME   web.test.com.
web.test.com.           86400   IN      A       192.168.20.45

;; AUTHORITY SECTION:
test.com.               86400   IN      NS      ns1.test.com.

;; ADDITIONAL SECTION:
ns1.test.com.           86400   IN      A       192.168.30.7

;; Query time: 2 msec
;; SERVER: 192.168.30.7#53(192.168.30.7)
;; WHEN: Fri Apr 19 15:15:29 CST 2019
;; MSG SIZE  rcvd: 109
二、反向解析 192.168.20.0
  • 接上假定已经安装好DNS服务
  • 添加反向解析区域配置
vim /etc/named.rfc1912.zones
zone "20.168.192.in-addr.arpa" IN {
  type master;
  file "192.168.20.zone";                                                                                                                                                                  
};
  • 创建反向解析数据库文件
vim /var/named/192.168.20.zone
$TTL 1D
@    IN  SOA  ns1.test.com.  admin.test.com.  (1000 1D 3H 1W 3H)
         NS   ns1.test.com.
ns1      A    192.168.30.7
45   IN  PTR  ns1.test.com.
  • 修改添加的解析库文件的属主和访问权限
chgrp named 192.168.20.zone 
chmod 640 192.168.20.zone 
# 确认修改
ll 192.168.20.zone 
-rw-r----- 1 root named 156 Apr 20 08:28 192.168.20.zone
  • 检查语法错误,并重启服务进行测试
named-checkconf
systemctl restart named
dig -x 192.168.20.45 @192.168.30.7 

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> -x 192.168.20.45 @192.168.30.7
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50479
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;45.20.168.192.in-addr.arpa.    IN      PTR

;; ANSWER SECTION:
45.20.168.192.in-addr.arpa. 86400 IN    PTR     www.test.com.

;; AUTHORITY SECTION:
20.168.192.in-addr.arpa. 86400  IN      NS      ns1.test.com.

;; ADDITIONAL SECTION:
ns1.test.com.           86400   IN      A       192.168.30.7

;; Query time: 27 msec
;; SERVER: 192.168.30.7#53(192.168.30.7)
;; WHEN: Fri Apr 12 19:06:51 2019
;; MSG SIZE  rcvd: 104
三、主从DNS
  • 主服务器( 192.168.30.7 )设置
# 设置哪些从服务器能同步主服务器的解析数据库
vim /etc/named.rfc1912.zones
zone "test.com" IN {
  type master;
  file "test.com.zone";
  allow-transfer { 192.168.30.101; };   # 添加这行,控制哪些主机能够拉取服务器的数据。没有这行的话,默认是任何主机都可以拉取。                                                                                                                                                  
};
  • 主服务器的解析库文件中添加从服务器的NS记录
vim /var/named/test.com.zone
$TTL 1D
@    IN  SOA  ns1.test.com.  admin.test.com. ( 1000 1D 1H 1W 3H )
         NS   ns1.test.com.
         NS   slave.test.com.  # 新增
ns1      A    192.168.30.7
slave    A    192.168.30.101   #新增
web      A    192.168.20.45
www  IN  CNAME web
  • 从服务器( 192.168.30.101 )上安装和配置DNS服务
yum -y install bind bind-utils
# 修改下面两处地方
vim /etc/named.conf
listen-on port 53 { localhost; };  # 这里设置监听哪些主机的哪个端口,localhost表示本机的所有IP地址
allow-query     { any; };    # 这里设置哪些主机能够请求查询,any表示任何主机

# 添加区域
vim /etc/named.rfc1912.zones 
zone "test.com" IN {
        type slave;
        file "slaves/test.com.zone";
        masters { 192.168.30.7; };
        allow-transfer { none; };   # 为了安全
};
  • 重启主从服务器的服务,并测试
# 查看解析库文件是否同步
ll /var/named/slaves/
total 4
-rw-r--r-- 1 named named 338 Apr 20 10:12 test.com.zone

dig www.test.com @192.168.30.101

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.test.com @192.168.30.101
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63340
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.test.com.                  IN      A

;; ANSWER SECTION:
www.test.com.           86400   IN      CNAME   web.test.com.
web.test.com.           86400   IN      A       192.168.20.45

;; AUTHORITY SECTION:
test.com.               86400   IN      NS      slave.test.com.
test.com.               86400   IN      NS      ns1.test.com.

;; ADDITIONAL SECTION:
ns1.test.com.           86400   IN      A       192.168.30.7
slave.test.com.         86400   IN      A       192.168.30.101

;; Query time: 0 msec
;; SERVER: 192.168.30.101#53(192.168.30.101)
;; WHEN: Fri Apr 12 19:57:06 2019
;; MSG SIZE  rcvd: 134
四、子域实现委派给另一台主机
  • 上层DNS服务器( 192.168.30.7 )上配置子域对应的NS记录
# 配置 named.conf 安全选项为no
vim /etc/named.conf
dnssec-enable no;
dnssec-validation no;
# 区域文件中添加一条 NS 记录和 A 记录
vim /var/named/test.com.zone
$TTL 1D
@    IN  SOA  ns1.test.com.  admin.test.com. ( 1000 1D 1H 1W 3H )
         NS   ns1.test.com.
         NS   slave.test.com.
tt.test.com.  IN   NS   ns2.tt.test.com.   #新增
ns1      A    192.168.30.7
ns2.tt.test.com.  IN   A  192.168.30.110   #新增
slave    A    192.168.30.101
web      A    192.168.20.45
www  IN  CNAME web
  • 下层DNS服务器(192.168.30.110 )上对子域配置解析服务
yum -y install bind bind-utils
# 注释那两行配置
vim /etc/named.conf
...
options {
//      listen-on port 53 { 127.0.0.1; };
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
//      allow-query     { localhost; };
...
# 添加子域区域
vim /etc/named.rfc1912.zones
zone "tt.test.com" IN {
        type master;
        file "tt.test.com.zone";
};
# 创建区域文件,并修改权限
vim /var/named/tt.test.com.zone
$TTL 1D
@    IN   SOA  ns1  admin.tt.test.com.  ( 2000 1D 3H 1W 3H )
          NS   ns1
ns1  IN   A    192.168.30.110
web  IN   A    192.168.30.110
www  IN   CNAME web
# 修改权限
chgrp named /var/named/tt.test.com.zone
chmod 640 /var/named/tt.test.com.zone
  • 启动子域服务,并进行测试
named-checkconf
systemctl start named
dig tt.test.com @192.168.30.7
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.tt.test.com @192.168.30.7
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10982
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.tt.test.com.               IN      A

;; ANSWER SECTION:
www.tt.test.com.        86400   IN      CNAME   web.tt.test.com.
web.tt.test.com.        86400   IN      A       192.168.30.110

;; AUTHORITY SECTION:
tt.test.com.            86400   IN      NS      ns1.tt.test.com.

;; ADDITIONAL SECTION:
ns1.tt.test.com.        86400   IN      A       192.168.30.110

;; Query time: 14 msec
;; SERVER: 192.168.30.7#53(192.168.30.7)
;; WHEN: Fri Apr 12 21:56:48 2019
;; MSG SIZE  rcvd: 101
五、DNS转发

转发功能就是我这里解析不了的,统统转发到指定的服务器上解析

  • 配置 named.conf 开启转发功能
vim /etc/named.conf
Options {
...
forward only;
forwarders { 192.168.30.110;};
...
};
  • 转发到的服务器上配置DNS服务
# 添加区域配置
vim /etc/named.rfc1912.zones
zone "test2.com" IN {
        type master;
        file "test2.com.zone";
};
#创建区域文件
vim /var/named/test2.com.zone
$TTL 1D
@    IN   SOA  ns1  admin.test2.com.  ( 2000 1D 3H 1W 3H )
          NS   ns1
ns1  IN   A    192.168.30.110
web  IN   A    192.168.30.110
www  IN   CNAME web
# 修改权限
ll /var/named/test2.com.zone
-rw-r----- 1 root named 166 Apr 20 16:15 /var/named/test2.com.zone
  • 检查错误,并测试
named-checkconf
systemctl restart named

dig www.test2.com @192.168.30.7
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.test2.com @192.168.30.7
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59721
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.test2.com.                 IN      A

;; ANSWER SECTION:
www.test2.com.          85720   IN      CNAME   web.test2.com.
web.test2.com.          85720   IN      A       192.168.30.110

;; AUTHORITY SECTION:
test2.com.              85720   IN      NS      ns1.test2.com.

;; ADDITIONAL SECTION:
ns1.test2.com.          85720   IN      A       192.168.30.110

;; Query time: 2 msec
;; SERVER: 192.168.30.7#53(192.168.30.7)
;; WHEN: Fri Apr 12 22:36:13 2019
;; MSG SIZE  rcvd: 99

六、智能DNS

这里主要的目的是:跨区域企业每一个区域都拥有单独的服务器,不同区域访问企业的服务器,DNS智能的指向对应区域的服务器。

  • 配置 named.conf 文件
vim /etc/named.conf
# 必须在options 前面定义 acl 函数
acl bjnet {
  192.168.30.0/24;
};
acl shnet {
  192.168.31.0/24;
};
acl others {
  any;
};

# 在文档的最后定义view ,注意view 外面不能再有 zone 的定义了,将 . 区域移到rfc1912.zones中
view bjview {
 match-clients { bjnet; };
 include "/etc/named.rfc1912.zones.bj";
};

view shview {
  match-clients { shnet; };
  include "/etc/named.rfc1912.zones.sh";
};

view othersview {
  match-clients { others; };
  include "/etc/named.rfc1912.zones";
};
  • 创建对应的 named.rfc1912.zones 和 test.com.zone 文件
cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bj -p 
cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.sh -p 
cp /var/named/test.com.zone /var/named/test.com.zone.bj -p
cp /var/named/test.com.zone /var/named/test.com.zone.sh -p
  • 修改 named.rfc1912.zones* 的区域配置
vim /etc/named.rfc1912.zones
zone "test.com" IN {
  type master;
  file "test.com.zone";
  allow-transfer { 192.168.30.101; };
};
vim /etc/named.rfc1912.zones.bj
zone "test.com" IN {
  type master;
  file "test.com.zone.bj";
  allow-transfer { 192.168.30.101; };
};
vim /etc/named.rfc1912.zones.sh
zone "test.com" IN {
  type master;
  file "test.com.zone.sh";
  allow-transfer { 192.168.30.101; };
};
  • 修改 test.com.zone* 的配置
grep web test.com.zone*
test.com.zone:web      A    192.168.20.1
test.com.zone:www  IN  CNAME web
test.com.zone.bj:web      A    192.168.20.2
test.com.zone.bj:www  IN  CNAME web
test.com.zone.sh:web      A    192.168.20.3
test.com.zone.sh:www  IN  CNAME web
  • 重启服务,并测试
systemctl restart named


# 测试 bjnet
dig www.test.com @192.168.30.7

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.test.com @192.168.30.7
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55938
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.test.com.                  IN      A

;; ANSWER SECTION:
www.test.com.           86400   IN      CNAME   web.test.com.
web.test.com.           86400   IN      A       192.168.20.2

;; AUTHORITY SECTION:
test.com.               86400   IN      NS      slave.test.com.
test.com.               86400   IN      NS      ns1.test.com.

;; ADDITIONAL SECTION:
ns1.test.com.           86400   IN      A       192.168.30.7
slave.test.com.         86400   IN      A       192.168.30.101

;; Query time: 2 msec
;; SERVER: 192.168.30.7#53(192.168.30.7)
;; WHEN: Sat Apr 20 18:57:04 2019
;; MSG SIZE  rcvd: 134


# 测试 shnet
dig www.test.com @192.168.31.86

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.test.com @192.168.31.86
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39815
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.test.com.                  IN      A

;; ANSWER SECTION:
www.test.com.           86400   IN      CNAME   web.test.com.
web.test.com.           86400   IN      A       192.168.20.3

;; AUTHORITY SECTION:
test.com.               86400   IN      NS      slave.test.com.
test.com.               86400   IN      NS      ns1.test.com.

;; ADDITIONAL SECTION:
ns1.test.com.           86400   IN      A       192.168.30.7
slave.test.com.         86400   IN      A       192.168.30.101

;; Query time: 4 msec
;; SERVER: 192.168.31.86#53(192.168.31.86)
;; WHEN: Sat Apr 20 18:57:34 2019
;; MSG SIZE  rcvd: 134


# 测试 others
dig www.test.com @127.0.0.1

; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> www.test.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32396
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.test.com.                  IN      A

;; ANSWER SECTION:
www.test.com.           86400   IN      CNAME   web.test.com.
web.test.com.           86400   IN      A       192.168.20.1

;; AUTHORITY SECTION:
test.com.               86400   IN      NS      slave.test.com.
test.com.               86400   IN      NS      ns1.test.com.

;; ADDITIONAL SECTION:
ns1.test.com.           86400   IN      A       192.168.30.7
slave.test.com.         86400   IN      A       192.168.30.101

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Apr 21 11:10:02 CST 2019
;; MSG SIZE  rcvd: 145
七、综合互联网的DNS架构

本次实验是模拟 www.test.com 这个网站的访问过程,搭建流程是:准备客户端–>搭建主从WEB服务器–>搭建电信小区的DNS服务器–>搭建 test.com 这个主从DNS服务器 --> 搭建 .com 服务器 -->搭建根服务器。共需要9台主机。

  • 客户机准备 192.168.30.112
  • 搭建主( 192.168.30.106 )从 ( 192.168.30.108 )WEB服务器
yum install httpd
echo welcom to master web server > /var/www/html/index.html
echo welcom to slave web server > /var/www/html/index.html
curl 192.168.30.108
curl 192.168.30.106
  • 搭建 test.com 这个主( 192.168.30.7 ) 从 ( 192.168.30.101 )DNS服务器
# 设置主从
vim /etc/named.conf
listen-on port 53 { localhost; };  
allow-query     { any; };
allow-transfer { 192.168.30.101; }   

vim /var/named/test.com.zone
$TTL 1D
@    IN  SOA  ns1.test.com.  admin.test.com. ( 1002 1D 1H 1W 3H )
         NS   ns1.test.com.
         NS   slave.test.com.
ns1      A    192.168.30.7
slave    A    192.168.30.101
web      A    192.168.30.106
web      A    192.168.30.108
www  IN  CNAME web
# 重启服务
rndc reload
# 在 30.112 客户机上测试
vim /etc/resolv.conf
nameserver 192.168.30.7

ping www.test.com
  • 搭建 .com 服务器( 192.168.30.6 )
yum install bind
# 委派DNS服务器
vim /etc/named
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
        dnssec-enable no;
        dnssec-validation no;

vim /etc/named.rfc1912.zones
zone "com" IN {
        type master;
        file "com.zone";
};

vim /var/named/com.zone
$TTL 1D
@       IN   SOA   dns1.com.    admin.com.  ( 1 1D 3H 3D 3H )
             NS    dns1
test         NS    dns2
test         NS    dns3
dns1         A     192.168.30.6
dns2         A     192.168.30.7
dns3         A     192.168.30.101

# 启动服务
service named start 
# 在客户机上测试
vim /etc/resolv.conf
nameserver 192.168.30.6

ping www.test.com

  • 搭建根服务器 (192.168.30.102)
yum install bind
# 委派DNS服务器,删除 named.conf 中原来的 zone “." 区域
vim /etc/named
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
        dnssec-enable no;
        dnssec-validation no;

vim /etc/named.rfc1912.zones
zone "." IN {
        type master;
        file "root.zone";
};

vim /var/named/root.zone
$TTL 1D
@       IN    SOA    dns1.   admin.  ( 1 1D 3H 1W 3H )
              NS     dns1
com           NS     dns2
dns1          A      192.168.30.102
dns2          A      192.168.30.6

# 启动服务
service named start 
# 在客户机上测试
vim /etc/resolv.conf
nameserver 192.168.30.102

ping www.test.com


  • 搭建电信小区的DNS服务器( 192.168.30.110)
yum install bind
# 委派DNS服务器
vim /etc/named
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
        dnssec-enable no;
        dnssec-validation no;

# 修改根服务的位置,只保留这两条记录,其他删除
vim /var/named/named.ca
.                       518400  IN      NS      a.root-servers.net.
a.root-servers.net.     3600000 IN      A       192.168.30.102

# 启动服务
service named start 
# 在客户机上测试
vim /etc/resolv.conf
nameserver 192.168.30.110

ping www.test.com
PING web.test.com (192.168.30.108) 56(84) bytes of data.
64 bytes from 192.168.30.108 (192.168.30.108): icmp_seq=1 ttl=64 time=0.508 ms
64 bytes from 192.168.30.108 (192.168.30.108): icmp_seq=2 ttl=64 time=1.09 ms
64 bytes from 192.168.30.108 (192.168.30.108): icmp_seq=3 ttl=64 time=0.793 ms
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值