博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DNS
阅读量:6201 次
发布时间:2019-06-21

本文共 4131 字,大约阅读时间需要 13 分钟。

DNS是什么

DNS Domain Name System  域名系统,实现域名与ip地址的相互解析;

不论是ipv4还是ipv6,都可以通过域名访问,对用户而言并不关心复杂的ip地址;

DNS域名结构

红色部分表示根域,全球共有13组,用 . 标识;

蓝色部分是顶级域名,如下表:


名称
含义
com
公司、企业
org
组织、机构
edu
教育单位
gov
政府单位
net
网络、通信
mil
军事单位

橙色部分是二级域名,即顶级域名的子域,以此类推

DNS查询主机名的流程

当我们在浏览器输入http://www.baidu.com时,dns的工作流程是这样的:

1、向主机中配置的DNS服务器查询www.baidu.com对应的ip地址,此DNS服务器称为权威DNS服务器;

2、此DNS服务器缓存中如果有记录则返回给客户端ip地址,如果缓存中没有记录,则服务器向根( )服务器请求,这样才有下述步骤;

3、根DNS服务器收到请求,它也不知道www.baidu.com是哪台主机,只知道com域的地址,于是将com域服务器地址告诉权威DNS服务器,根DNS服务器工作结束;

4、权威DNS服务器向com域服务器请求www.baidu.com对应的ip地址,com域服务器也不知道具体ip,于是将baidu.com域服务器地址告诉给权威DNS服务器;

5、权威DNS服务器找到baidu.com域服务器,而此与www.baidu.com正好是本域内的主机,于是将ip地址告诉给权威DNS服务器;

6、权威DNS服务器将最终找到的ip地址返回给用户,并在本机缓存,整个查询过程结束;


DNS的端口

DNS监听tcp/udp的53端口,可以使用 ss -nutpl 查看DNS监听的端口

如果企业中配置了防火墙,记得将传输层协议的53端口放行


DNS的资源记录

区域数据库是由资源记录(RR,Resource Record)组成,而资源记录包含以下几种类型:

SOA   起始授权记录,一个解析库只有一个,必须置于首部
NS   名称服务器,记录的是DNS服务器
A   地址的意思,记录与域名对应的ip地址,ipv4版本
正向解析
AAAA   ipv6版本的A记录
PTR   记录ip地址对应的域名
反向解析
CNAME   记录别名

DNS的主备架构

试想一下,一台提供DNS服务的机器突然down掉,而且又没有备用机器,会出现什么情况?上不了网对不对,当然如果有人记得要访问的ip地址也是没问题的,就是太麻烦。

主备架构的解决方案就是解决服务器单点故障的,这样当Master故障无法提供服务时Slave依然可以正常工作,从而保证服务端的服务正常提供。请记住,这种避免单点故障的解决方法在很多服务部署中都是类似的;

DNS采用Master/Slave的方式提供DNS解析服务,虽然称为主备模式,但实际工作时还是二者分担工作,而且二者服务器的数据库必须一致;

Slave从Master数据库同步数据;

DNS服务器的详细配置

下面以配置DNS正向解析为例进行说明:

首先安装DNS程序服务包,centos6版本对应的程序包是bind-9.8.2-0.62.rc1.el6.x86_64 ;

开启DNS服务,service named start

配置DNS服务大致有下述三个步骤:

1、修改主配置文件/etc/named.conf

2、修改区域文件/etc/named.rfc1912.zones

3、在/var/named/下编辑数据库文件

以www.kali.com域名为例进行配置

步骤1:

vim /etc/named.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
options {
        
listen-on port 53 { localhost; }; 
        
#监听本机所有ip地址的tcp和udp的53端口,每一行都必须以分号";"结尾
        
directory       
"/var/named"
;
        
#解析数据库存放的路径
        
allow-query     { any; };
        
#允许任何主机以本机为DNS服务器进行查询
        
recursion 
yes
;
        
#允许递归查询,即可以向根DNS发起查询请求
        
dnssec-
enable 
yes
;
        
dnssec-validation 
yes
;
        
#dns安全策略,有时候配置了DNS服务却不生效,此时可以将yes改成no试一试
};
 
zone 
"." 
IN {
        
type 
hint;
        
file 
"named.ca"
;
};
#以上是对根域的定义,13组DNS根的地址近存放在/var/named/named.ca文件中
include 
"/etc/named.rfc1912.zones"
;
#此文件专门存放配置的解析数据库文件,也建议在此文件配置

步骤2、

修改区域文件,此文件存放

vim /etc/named.rfc1912.zones

1
2
3
4
5
6
7
8
zone 
"kali.com" 
IN {
#子域kali.com,IN可以省略,每个子域以花括号隔开,每行以分号结尾
        
type 
master;
        
#主类型
        
file 
"kali.com.zone"
;
        
#解析数据库的文件名称,可以随意定义,建议与服务相关
};
#在named.rfc1912.zones文件中有很多区域,可以参考这些例子进行配置

步骤3、

在/var/named/下编辑数据库文件

cd /var/named

vim kali.com.zone #此文件名称必须与步骤2中的file名称一致

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$TTL 1D
#首部定义缓存周期,其后的资源记录就可以省略TTL
@       IN SOA  dns1 panoangao.163.com. (
                                        
0       ; serial 
#版本号,更新库文件后需要手动更改此版本号
                                        
1D      ; refresh 
#Slave向Master请求更新的时间
                                        
1H      ; retry 
#Slave请求更新失败的重试时间
                                        
1W      ; expire 
#Slave请求失败的保持时间,过了此时间DNS记录失效
                                        
3H )    ; minimum 
#缓存错误DNS记录的时间
                        
NS      dns1
                        
#NS记录,指定DNS服务器名,此名称可以任意,但要有对应的A记录
dns1            A       192.168.1.100
#本DNS服务器的A记录
websrv          A       192.168.1.100
#本DNS服务器又充当最终的目的主机(实验环境)
www             CNAME   websrv
#当访问www.kali.com时其实是访问websrv.kali.com,www只是别名而已

资源记录的语法如下:

名称    TTL    IN    资源记录类型    值

名称:

@表示本域名,如kali.com.,注意com后有个 ,名称处为空表示继承上一条记录名称,若名称不全则会自动补全域名,如dns1实际是dns1.kali.com.

TTL:

DNS服务器缓存时间,默认单位是秒,可以省略

IN:可以省略

资源类型:A、PTR、NS等

值:依据不同资源类型而异

注意:

编辑kali.com.zone文件时,可以参考已有文件,但是要记得修改文件权限为640,其目的是确保named用户能够读此文件

1
-rw-r----- 1 root named 205 Sep 22 21:24 kali.com.zone

步骤4、

重启DNS服务

rndc reload

步骤5、

测试

dig www.kali.com @192.168.1.100 

@是指定DNS服务器,免去手动修改网卡的麻烦;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> www.kali.com @192.168.1.100
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, 
id
: 27537
#NOERROR,解析成功
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.kali.com.                  IN      A
#上述是我们请求的域名
;; ANSWER SECTION:
www.kali.com.           86400   IN      CNAME   websrv.kali.com.
websrv.kali.com.        86400   IN      A       192.168.1.100
#结果找到域名对应的ip地址,还能看到别名的信息
;; AUTHORITY SECTION:
kali.com.               86400   IN      NS      dns1.kali.com.
;; ADDITIONAL SECTION:
dns1.kali.com.          86400   IN      A       192.168.1.100
;; Query 
time
: 1 msec
;; SERVER: 192.168.1.100
#53(192.168.1.100)
;; WHEN: Fri Sep 22 21:23:51 CST 2017
;; MSG SIZE  rcvd: 113

DNS解析成功

接下来就可以开启web服务,编辑html文件,然后通过DNS解析访问,这样一步一步不就是一套完整的服务了嘛。。

本文转自  a_pan  51CTO博客,原文链接:http://blog.51cto.com/panpangao/1968030

转载地址:http://zpxca.baihongyu.com/

你可能感兴趣的文章
枪杀5人 美国路易斯安那州枪击案嫌犯在弗州被捕
查看>>
「每天一道面试题」如何确定JVM堆中哪些对象是可以被回收的
查看>>
巴萨公布国王杯大名单:梅西轮休 新援博阿滕在列
查看>>
探访云南建水紫陶“诞生”过程
查看>>
直击程序员面试现场:百度面试官都问了我些啥?
查看>>
后续:手把手教你 基础 整合最优雅SSM框架:SpringMVC+Spring+MyBatis
查看>>
Struts2【开发Action】知识要点
查看>>
Vue 应用性能优化指南
查看>>
gfx-hal Fence操作源码简析
查看>>
如何从业务代码中提升技术:使用领域特定语言消除重复代码
查看>>
saiku+kettle整合(十一)日志相关
查看>>
弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言
查看>>
10个超赞的jQuery图片滑块动画
查看>>
Android 最简单的自定义视图管理之一
查看>>
【译】机器学习竞赛实际上是一场数据竞赛
查看>>
git branch 相关操作
查看>>
Windows编译PHP7.2拓展
查看>>
0914 - 辛苦良久,只为这一句
查看>>
前端http协议缓存初解
查看>>
Vue教程19:Vue 2.0组件开发模式
查看>>