标签:dns
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
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
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名称一致
$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用户能够读此文件
-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服务器,免去手动修改网卡的麻烦;
; <<>> 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解析访问,这样一步一步不就是一套完整的服务了嘛。。
本文出自 “高攀” 博客,请务必保留此出处http://panpangao.blog.51cto.com/10624093/1968030
标签:dns
原文地址:http://panpangao.blog.51cto.com/10624093/1968030