DNS 服务

DNS域名管理服务

课程目标

  • DNS服务的作用及工作原理
  • DNS服务的正向和反向解析配置
  • DNS服务的主从同步搭建

一、DNS 介绍

DNS(domain name system) 域名管理系统

  • 域名:

    由特定的格式组成,用来表示互联网中某一台计算机或者计算机组的名称,能够使人更方便地访问互联网,而不用记住能够被机器直接读取的IP地址。

1.DNS的作用

  • 域名的正向解析

    将主机域名转换为对应的IP地址,以便网络程序能够通过主机域名访问到对应的服务器主机

    域名--->IP A记录

  • 域名的反向解析

    将主机的IP地址转换为对应的域名,以便网络服务程序能够通过IP地址查询到主机的域名

    IP ---> 域名 PTR记录

2.DNS的结构

. 根域👇

  • 在整个DNS系统的最上方一定是 .(小数点)这个DNS服务器(称为root),也叫“根域”
  • 根域<13台> 全世界有13个,1个为主根服务器,放置在美国。其余12个为辅根服务器,其中9个放置在美国,2个在欧洲(英国和瑞典),1个在日本

一级域名<顶级域|国家域>

com edu gov net org cc io| cn uk us ru ja ko

二级域名

qq.com baidu.com google.com

域名机构

收费 <新网|万网>

老牌免费域名:TK顶级域名、TK域名DNS、TK域名商

<www.freehao123.com>

3.DNS工作原理

如果询问一次得到结果 递归查询 C-S

如果询问多次得到结果 迭代查询 S-S

一次递归

dig +trace www.baidu.com	追踪dns解析过程
dig @server www.baidu.com 	正向解析查询
dig -x 192.168.0.1 @server	反向解析查询
dig +trace www.baidu.com 	追踪一个域名解析过程

二、DNS服务器搭建

  • DNS的域名解析都是udp/53,主从之间的数据传输默认使用tcp/53

  • DNS软件:

    Bind是一款开源的DNS服务器软件,Bind由美国加州大学Berkeley(伯克利)分校开发和维护的,全名是Berkeley Internet Name Domain它是目前世界上使用最为广泛的DNS服务器软件,支持各自UNIX平台和Windows平台。Bind现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。

需求1:

搭建DNS服务器,能够将www.misshou.io解析成192.168.1.254--->正向解析

环境:

DNS-server:10.1.1.2

client:10.1.1.3

思路:

  1. 关闭防火墙和selinux
  2. 配置yum源
  3. 软件三步曲
    • 查看并安装
    • 确认成功安装
    • 查看软件文件列表
  4. 了解配置文件(语法、参数配置)--->man 5 xxx.conf
  5. 根据需求通过修改配置文件完成服务的搭建
  6. 启动服务,开机自启
  7. 测试验证

步骤:

DNS-server上完成:

  1. 关闭防火墙和selinux
service iptables stop
chkconfig iptables off
getenforce
setenforce 0
vim /etc/sysconfig/selinux
  1. 配置yum源 略
  2. 软件三步曲
yum -y install bind
rpm -q bind
/etc/NetworkManager/dispatcher.d/13-named
/etc/logrotate.d/named		//日志轮转文件
/etc/named					//dns服务配置文件主目录
/etc/named.conf				//主配置文件
/etc/named.rfc1912.zones	//zone文件,定义域
/etc/rc.d/init.d/named		//启动脚本

/usr/sbin/named				//二进制命令
/usr/sbin/named-checkconf	//检查配置文件的命令		name.conf	name.rfc1912.zones
/usr/sbin/named-checkzone	//检查区域文件的命令

/usr/share/man/man5/named.conf.5.gz
/usr/share/man/man8/named.8.gz

/var/log/named.log			//日志文件
/var/named					//数据文件的主目录
/var/named/data				
/var/named/dynamic
/var/named/named.ca			//根域服务器
/var/named/named.empty		
/var/named/named.localhost	//正向解析区域文件模板
/var/named/named.loopback	//反向解析区域文件模板
/var/named/slaves			//从服务器  下载文件的默认路径
/var/run/named				//进程文件

主配置文件:

options {
        listen-on port 53 { 127.0.0.1; any; };		监听方式,any表示全网监听
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";				
        dump-file       "/var/named/data/cache_dump.db";	DNS缓存文件
        statistics-file "/var/named/data/named_stats.txt";	统计
        memstatistics-file "/var/named/data/named_mem_stats.txt";	内存统计
        allow-query     { localhost; any; };	允许哪些人可以查询,any任何人
        recursion yes;		是否递归

        dnssec-enable no;	安全扩展机制(签名认证),默认yes
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};
说明:
DNSSEC 域名系统安全,是DNS的安全扩展协议
DLV DNSSEC 后备秘钥
这些安全机制的设定,是为了保护DNS服务器与用户之间的数据安全,避免恶意数据对用户的欺骗

zone "." IN {				根服务器
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";


子配置文件:

/etc/named.rfc1912.zones
//正向模板
zone "localhost.localdomain" IN {	
        type master;
        file "named.localhost";		注意下面会对引号内的文件进行修改配置
        allow-update { none; };
};
//反向模板 IP反过来写
zone "1.0.0.127.in-addr.arpa" IN {		
        type master;
        file "named.loopback";
        allow-update { none; };
};

cat /etc/named/named.localhost
$TTL 1D								缓存的生命周期
@	IN SOA	@ rname.invalid. (		
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	NS	@
	A	127.0.0.1
	AAAA	::1

@ = zonename = itcast.com  当前域
IN 互联网
SOA 开始协议
NS dns服务端
A ipv4正向
AAAA ipv6
CNAME 别名
MX 邮件交互记录	5 表示优先级	数字越小越优先

反向
$TTL 1D
@	IN SOA	@ rname.invalid. (
					0	; serial			更新序列号
					1D	; refresh			更新间隔(从服务器下载数据)
					1H	; retry				失败重试
					1W	; expire			区域文件的过期时间
					3H )	; minimum		缓存的最小生命周期
	NS	@
	A	127.0.0.1
	AAAA	::1
	PTR	localhost.
  1. 根据需求通过修改配置文件来完成服务的搭建

    www.misshou.io——>192.168.1.254

1.修改主配置文件/etc/named.conf————>监听方式和允许谁来查询
options {	修改下面四处地方
。。。
        listen-on port 53 { 127.0.0.1;any; };
		allow-query     { localhost; any; };
		dnssec-enable no;
		dnssec-validation no;
}
。。。
2.修改子配置文件/etc/named.rfc1912.zones————>定义管理域 misshou.io
在该文件最后面追加以下内容
zone "misshou.io" IN {
        type master;
        file "misshou.io.zone";  文件名自己定,没有要求
        allow-update { none; };
};
3.在/var/named目录里创建相应的区域文件
[root@server ~]# ll /var/named
total 28
drwxrwx--- 2 named named 4096 Aug 27  2013 data
drwxrwx--- 2 named named 4096 Aug 27  2013 dynamic
-rw-r----- 1 root  named 1892 Feb 18  2008 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost	正向模板
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named 4096 Aug 27  2013 slaves

[root@server ~]# cp -p /var/named/named.localhost /var/named/misshou.io.zone	加-p
[root@server ~]# ll /var/named/misshou.io.zone
-rw-r----- 1 root named 152 Jun 21  2007 /var/named/misshou.io.zone

[root@server ~]# vim /var/named/misshou.io.zone 
$TTL 1D
@       IN SOA  misshou.io.  rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       NS      dns1.misshou.io.   //此处的dns1可以随便指定,abc都行,但是要和后面的A记录保持一致
dns1    A       10.1.1.2			//前两行一定是当前DNS服务器的IP地址
www     A       192.168.1.254
4.使用命令检查配置文件的语法
[root@server ~]# named-checkconf /etc/named.conf
[root@server ~]# named-checkconf /etc/named.rfc1912.zones
[root@server ~]# cd /var/named	进入该目录检查.zone文件
[root@server named]# ls
data     misshou.io.zone  named.empty      named.loopback
dynamic  named.ca         named.localhost  slaves
[root@server named]# named-checkzone misshou.io.zone misshou.io.zone //区域文件名写两遍
zone misshou.io.zone/IN: loaded serial 0
OK

  1. 启动服务,开机自启
[root@server named]# service named start
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                            [  OK  ]
[root@server named]# chkconfig named on
[root@server named]# netstat -nltup|grep 53
tcp        0      0 10.1.1.2:53		0.0.0.0:*                   LISTEN      2162/named          
tcp        0      0 127.0.0.1:53    0.0.0.0:*                   LISTEN      2162/named          
tcp        0      0 127.0.0.1:953   0.0.0.0:*                   LISTEN      2162/named          
tcp        0      0 ::1:53          :::*                        LISTEN      2162/named          
tcp        0      0 ::1:953         :::*                        LISTEN      2162/named          
udp        0      0 10.1.1.2:53        0.0.0.0:*                            2162/named          
udp        0      0 127.0.0.1:53       0.0.0.0:*                            2162/named          
udp        0      0 ::1:53             :::*                                 2162/named 

端口已启动
  1. 测试验证

client:10.1.1.3

www.misshou.io 192.168.1.254

先指定DNS服务器
[root@client ~]# echo nameserver 10.1.1.2 > /etc/resolv.conf 
[root@client ~]# cat /etc/resolv.conf 
nameserver 10.1.1.2

第一个命令nslookup
[root@client ~]# nslookup
> server
Default server: 10.1.1.2
Address: 10.1.1.2#53
> exit

[root@client ~]# which nslookup
/usr/bin/nslookup
[root@client ~]# rpm -qf /usr/bin/nslookup
bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64
[root@client ~]# nslookup www.misshou.io
Server:		10.1.1.2
Address:	10.1.1.2#53

Name:	www.misshou.io
Address: 192.168.1.254

第二个命令dig
[root@client ~]# dig @10.1.1.2 www.misshou.io

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> @10.1.1.2 www.misshou.io
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22390
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.misshou.io.			IN	A

;; ANSWER SECTION:
www.misshou.io.		86400	IN	A	192.168.1.254

;; AUTHORITY SECTION:
misshou.io.		86400	IN	NS	dns1.misshou.io.

;; ADDITIONAL SECTION:
dns1.misshou.io.	86400	IN	A	10.1.1.2

;; Query time: 1 msec
;; SERVER: 10.1.1.2#53(10.1.1.2)
;; WHEN: Wed Apr 24 18:36:41 2019
;; MSG SIZE  rcvd: 83

第三个命令host
[root@client ~]# host www.misshou.io
www.misshou.io has address 192.168.1.254

结果:
1.看到以上信息说明正向解析没问题
2.不能反向解析是因为没有配置
3.如果配置文件没有错误,服务也启动了,还是不能解析,那么检查防火墙、selinux和网络

需求2:

搭建DNS服务器实现正向反向解析192.168.1.254--->www.misshou.io

步骤:

1.修改配置文件
/etc/named.conf		主配置文件 全网监听,任意访问,两个any
/etc/named.rfc1912.zones	定义了一个misshou.io正向域,再定义一个反向域
增加以下内容:
zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.1.zone";
        allow-update { none; };
};
2.创建反向192.168.1.zone文件,放到/var/named/目录里
[root@server ~]# cp -p /var/named/named.loopback /var/named/192.168.1.zone
[root@server ~]# vim /var/named/192.168.1.zone 
[root@server ~]# cat /var/named/192.168.1.zone 
$TTL 1D
@	IN SOA	@ rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@	NS	abc.misshou.io.		//如果abc.misshou.io在正向区域文件存在,就可以不写下面A记录
abc	A	10.1.1.2
254	PTR	www.misshou.io.		//192.168.1.
3.重启服务
[root@server ~]# service named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]
4.客户端测试验证
[root@client ~]# dig -x 192.168.1.254 @10.1.1.2

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -x 192.168.1.254 @10.1.1.2
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61276
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

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

;; ANSWER SECTION:
254.1.168.192.in-addr.arpa. 86400 IN	PTR	www.misshou.io.

;; AUTHORITY SECTION:
1.168.192.in-addr.arpa.	86400	IN	NS	abc.misshou.io.

;; Query time: 1 msec
;; SERVER: 10.1.1.2#53(10.1.1.2)
;; WHEN: Thu Apr 25 08:18:46 2019
;; MSG SIZE  rcvd: 90

如果用nslookup不行的话,需重新指定dns服务器echo nameserver 10.1.1.2 > /etc/resolv.conf
[root@client ~]# echo nameserver 10.1.1.2 >/etc/resolv.conf 
[root@client ~]# cat /etc/resolv.conf 
nameserver 10.1.1.2
[root@client ~]# nslookup www.misshou.io
Server:		10.1.1.2
Address:	10.1.1.2#53

Name:	www.misshou.io
Address: 192.168.1.254
[root@client ~]# nslookup
> server
Default server: 10.1.1.2
Address: 10.1.1.2#53
> 192.168.1.254
Server:		10.1.1.2
Address:	10.1.1.2#53

254.1.168.192.in-addr.arpa	name = www.misshou.io.
[root@client ~]# nslookup 192.168.1.254
Server:		10.1.1.2
Address:	10.1.1.2#53

254.1.168.192.in-addr.arpa	name = www.misshou.io.

posted @ 2019-06-14 10:46  谁与问倚楼人瘦  阅读(721)  评论(0)    收藏  举报