DNS服务原理及bind98的应用
一,简介:DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
因特网的域名系统DNS被设计成为一个联机分布式数据库系统,并采用客户--服务器方式。DNS使大多数名字都在本地进行解析(resolve),仅少量解析需要在因特网上通信,因此DNS系统的效率很高。由于DNS是联机分布式系统,即使单个计算机出现了故障,也不会妨碍整个DNS系统的正常运行。
DNS服务器的两种解析类别:
FQDN(完全限定域名解析)----> IP 正向解析
IP ----> FQDN 反向解析
正向解析:域名到IP地址的解析过程的要点如下:当某一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程序,并成为DNS的一个客户端,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发送给本地域名服务器(使用UDP协议是为了减少开销)。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信。若本地域名服务器不能回答该请求, 则此域名服务器就暂时成为DNS中的另一个客户端,并向其他域名服务器发出的查询请求。
一个服务器所负责管辖的范围叫做区(zone)。各个单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够互通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。总之,DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。区是DNS服务器实际管辖的范围。区可能等于或小于域,但一定不可能大于域(“域”是一个逻辑概念,“区”是一个物理概念)。
DNS服务器的类型:
主DNS服务器
辅助DNS服务器
缓存名称服务器
为了提高域名服务器的可靠性,DNS域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器。当主域名服务器出现故障时,辅助域名服务器可以保证DNS的查询工作不会中断。主域名服务器定期把数据复制到辅助域名服务器中,而更改的数据只能在主域名服务器中进行。这样就保证了数据的一致性。
区域传送:
辅助DNS服务器从主DNS服务器或其他的辅助DNS服务器请求数据传输过程
完全区域传送:传送区域的所有数据,AXFR
增量区域传送:传送区域中改变的数据部分,IXFR
DNS的查询方式:
递归:主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所查询的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户端的身份,向其他根域名服务器继续发出查询请求报文,而不是让该主机自己进行下一步的查询。因此,递归查询返回查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
迭代:本地域名服务器向根域名服务器的查询通常是采用迭代查询。迭代查询的特点是这样的:当根域名服务器收到本地域名服务器发出的迭代查询请求的报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应该向那个域名服务器进行查询”。然后让本地域名服务器进行后续的查询(而不是代替本地域名服务器进行后续的查询)。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询,顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应当向哪一个权限域名服务器进行查询,本地域名服务器就这样进行迭代查询。最后,知道了所要解析域名的IP地址,然后把这个结果返回给发起查询的主机。当然,本地域名服务器 也可以采用递归查询,这取决于最初的查询请求报文的设置是要求使用哪一种查询方式。
PS:根域名服务器是一定不会给任何主机递归的(太占资源了),网络上的DNS服务器只会进行迭代查询,而客户端指向的DNS服务器,一定是允许给本地主机做递归的
区域数据库文件只能包含资源记录或宏定义,每一个条叫一个资源记录(Resource Record),资源记录有类型 ,用于表示资源的功能:
SOA:Start Of Authority, 起始授权
NS:Name Server,域名服务器
MX:mail eXchanger,邮件交换器
A:Address,(FQDN-->IP)正向解析
PTR:PoiTeR,(IP-->FQDN) 反向解析
AAAA:Address,FQDN-->IPv6
CNAME:Canonical Name,正式名称(别名记录)
资源记录的格式:
name [ttl(缓存时间)] IN 资源记录类型(RRtype) Value
SOA:
name:只能是区域名称,通常可以简写为@,例如:luochen.com.
value:有n个数值,最主要的是主DNS服务器的FQDN,点不可省略
注意:SOA必须是区域数据库文件第一条记录
例子:
@ 600 IN SOA na.luochen.com. luochenmail.com.(
序列号(serial number) ;注释内容,十进制数据,不能超过10位,通常使用日期,例如2015061001
刷新时间(refresh time) ;即每隔多久到主服务器检查一次
重试时间(retry time) ;应该小于refresh time
过期时间(expire time)
netgative answer ttl ;否定答案的ttl
)
NS:可以有多条
name:区域名称,通常可以简写为@
value:DNS服务器的FQDN(可以使用相对名称)
例子:
@ 600 IN NS ns
A:只能定义在正向区域数据库文件中
name:FQDN(可以使用相对名称)
value:IP
例子:
www 600(单位s) IN A 192.168.1.111
www 600(单位s) IN A 192.168.1.119
PS:但凡以FQDN做为其值的记录,应该给这个值做一条A记录
MX:可以有多个
name:区域名称,用于标识smtp服务器
value:包含优先级和FQDN
优先级:0-99,数字越小,级别越高,
例子:
@ 600 IN MX 10 mail
@ 600 IN MX 20 mail2
CNAME:
name :FQDN
value :FQDN
例子:
ftp IN CHANE www
PTR:IP --> FQDN,只能定义在反向区域数据文件中,反向区域名称为逆向网络地址加.in-addr.arpa.后缀组成
name:IP,逆向的主机地址,例如192.168.1.111的name为111.1,完全格式为111.1.168.192.in-addr-arpa.
value:FQDN
例子:
111. 600 IN PTR www.luochen.com.
二,bind的应用
1,安装bind
# yum -y install bind
2,bind的配置文件
# rpm -ql bind
主配置文件,用来定义区域 /etc/named.conf
区域数据库文件存放目录 /etc/named/
3,bind服务进程名为named 运行该服务为named用户named组
4,修改/etc/named.conf配置文件后语法检测
# service named configtest 或 named-checkconf
5,启动服务
# service named start
6,在/etc/named.conf主配置文件中定义一个区域
//// named.conf//// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS// server as a caching only nameserver (as a localhost DNS resolver only).//// See /usr/share/doc/bind*/sample/ for example named configuration files.// 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";// allow-query { localhost; }; recursion yes; // dnssec-enable yes;// dnssec-validation yes;// dnssec-lookaside auto; /* Path to ISC DLV key */// bindkeys-file "/etc/named.iscdlv.key"; // managed-keys-directory "/var/named/dynamic";}; logging { channel default_debug { file "data/named.run"; severity dynamic; };}; zone "." IN { type hint; file "named.ca";}; zone "luolinux.com" IN { type master; file "luolinux.com.zone";}; include "/etc/named.rfc1912.zones";//include "/etc/named.root.key";
7,在/var/named/ 目录下创建luochen.com 区域数据库文件
# vim /var/named/luolinux.com.zone
$TTL 600 @ IN SOA dns.luolinux.com. admin.luolinux.com. ( 2016030315 2H 10M 7D 1D)@ IN NS dns@ IN MX 10 maildns IN A 192.168.1.118mail IN A 192.168.1.110www IN A 192.168.1.121ftp IN CNAME www
8,修改区域数据库文件的属主和属组和权限
# chown root:named luolinux.com.zone
# chmod 640 luolinux.com.zone
9,检测区域数据库文件是否有语法错误
# named-checkzone "luolinux.com" /var/named/luolinux.com.zone
10,重读配置文件
# killall -1 named
11,测试是否能正常解析luochen.com
# dig -t A www.luolinux.com @192.168.1.118
# dig -t NS luolinux.com
三,反向区域
1,定义反向区域
zone "1.168.192.in-addr.arpa" IN { type master; file "192.168.1.zone";};
2,提供反向区域数据库文件
# vim /var/named/192.168.1.zone
$TTL 600 @ IN SOA dns.luolinux.com. admin.luolinux.com. ( 2016030315 2H 10M 7D 1D)@ IN NS dns.luolinux.com.118 IN PTR dns.luolinux.com.110 IN PTR www.luolinux.com.121 IN PTR mail.luolinux.com.
3,修改区域数据库文件的属主和属组和权限
# chown root:named 192.168.1.zone
# chmod 640 192.168.1.zone
4,检测区域数据库文件是否有语法错误
# named-checkzone "1.168.192.in-addr.arpa" /var/named/192.168.1.zone
5,重读配置文件
# killall -1 named
6,测试是否能正常反向解析
# dig -x 192.168.1.118
PS:反向区域数据库文件:区域名称为逆向的网络地址,并以 .in-addr.arpa为后缀;第一条资源记录必须是SOA,具有NS记录,但不能出现MX和A记录,常用的是PTR记录,名称为逆向的主机地址。
四,区域数据传送
# dig -t axfr luolinux.com @192.168.1.118
五,主从复制
1,在两台DNS 服务器中安装相同版本的bind,最关键的一步是在主DNS服务器上的区域数据库文件中为从DNS服务器添加一条NS记录和对应的A记录;从DNS服务器上不需要手动配置区域数据库文件。
# vim /var/named/luolinux.com.zone ;主DNS服务器上的区域数据库文件
$TTL 600 @ IN SOA dns.luolinux.com. admin.luolinux.com. ( 2016030315 2H 10M 7D 1D)@ IN NS dns@ IN NS dns2 ;NS记录@ IN MX 10 maildns IN A 192.168.1.118dns2 IN A 192.168.1.119 ;A记录mail IN A 192.168.1.110www IN A 192.168.1.121ftp IN CNAME www
2,在从DNS服务器上修改主配置文件和定义区域
//// named.conf//// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS// server as a caching only nameserver (as a localhost DNS resolver only).//// See /usr/share/doc/bind*/sample/ for example named configuration files.// 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";// allow-query { localhost; }; recursion yes; // dnssec-enable yes;// dnssec-validation yes;// dnssec-lookaside auto; /* Path to ISC DLV key */// bindkeys-file "/etc/named.iscdlv.key"; // managed-keys-directory "/var/named/dynamic";}; logging { channel default_debug { file "data/named.run"; severity dynamic; };}; zone "." IN { type hint; file "named.ca";}; include "/etc/named.rfc1912.zones";//include "/etc/named.root.key";
3,在从DNS服务器上定义区域
# vim /etc/named.rfc1912.zones (添加内容)
zone "luolinux.com" IN { type slave; masters { 192.168.1.118; }; //192.168.1.118 主DNS服务器IP地址 file "slaves/luolinux.com.zone";};
4,直接启动从DNS服务器
# service named start
5,查看日志
# tail /var/log/messages
6,在从DNS服务器上定义反向区域
# vim /etc/named.rfc1912.zones (添加内容)
zone "1.168.192.in-addr.arpa" IN { type slave; masters { 192.168.1.118; }; //192.168.1.118 主DNS服务器IP地址 file "slaves/192.168.1.zone";};
7,在从DNS服务器上检测配置文件是否有语法错误和重启服务
# named-checkconf
# service named reload
PS:如果主DNS服务器上的区域数据库文件修改了,那么必须将区域数据库文件中的SOA记录的序列号加1,并且重新加载配置文件(reload)。
六,区域数据传送安全控制
在主DNS服务器上修改/etc/named.rfc1912.zones 文件,为每个区域添加一个allow-transfer 选项
zone "luolinux.com" IN { type master; file "luolinux.com.zone"; allow-transfer { 127.0.0.1; 192.168.1.119; };};
在从DNS服务器上测试
# dig -t axfr luolinux.com @192.168.1.118
PS:对于从DNS服务器如果不做为其他DNS服务器的主服务器,为了安全,最好为所有区域添加一项 allow-transfer { none; }。
转载于:https://blog.51cto.com/luochen2015/1747324
DNS服务原理及bind98的应用相关推荐
- 第十八天 DNS服务原理及bind详细配置
1.DNS服务原理详解 2.DNS服务原理详解 3.bind基本配置详解 一.DNS 服务 Domain name server 域名服务,工作在53号端口,查询时使用udp协议,传输时使用tcp协议 ...
- Kubernetes 集群 DNS 服务发现原理
简介:本文介绍 Kubernetes 集群中 DNS 服务发现原理. 本文介绍 Kubernetes 集群中 DNS 服务发现原理. 前提需要 拥有一个 Kubernetes 集群(可以通过 ACK ...
- DNS解析原理与Bind部署DNS服务
DNS是什么? DNS(Domain Name System,域名系统)是互联网上最核心的带层级的分布式系统,它负责把域名转换为IP地址.反查IP到域名的反向解析以及宣告邮件路由等信息,使得基于域名提 ...
- DNS服务解析与原理笔记
引言 DNS介绍 DNS原理与解析 DNS查询 DNS服务搭建 DNS劫持和污染 计算机面试 or 真题 DNS应用扩展 参考与推荐 引言 我想很多人遇到过这样一种情况,电脑突然上不了网了,或者说可以 ...
- DNS服务,SSL原理
1.简述常见加密算法及常见加密算法原理,最好使用图例解说 2.搭建apache或者nginx并使用自签证书实现https访问,自签名证书的域名自拟 3.简述DNS服务器原理,并搭建主-辅服务器 4.搭 ...
- 什么是DNS?DNS端口号是多少?什么是DNS服务,DNS服务器?DNS域名解析原理
什么是DNS? DNS全称是domain name service即:域名解析服务. DNS端口号是多少? 53 什么是DNS服务,DNS服务器? DNS服务器就是域名服务器,即提供域名解析的服务器. ...
- Windows server 2008 r2 DNS服务(原理、安装及配置)
DNS(Domain Name System域名系统)基础部分 电脑访问Internet具备的要素:IP.网关.DNS DNS功能:域名解析 实质内容:将完全合格域名(全限定域名)转换为IP 什么是完 ...
- 多区域 DNS 服务,子域授权,缓存 DNS及Split 分离解析的原理和实现
DNS 服务器的功能: 正向解析:根据注册的域名查找其对应的 IP 地址 反向解析:根据 IP 地址查找对应的注册域名(不常用) DNS(域名解析)服务器:解析域名--->将域名解析为 IP 地 ...
- LINUX DNS服务的配置(一)
DNS(Domain Name System)作用管理主机的 "户籍"-主机名:IP 是一个分布式数据库系统,DNS服务器的起源,最早的主机解析,依靠hosts文件,有NIC(Ne ...
最新文章
- DV录像带导出一定要用1394
- JavaScript TreeView
- Codeforces Round #131 (Div. 2)------AB
- python的应用论文_python 论文
- ubuntu16.04无法用网页播放音乐
- Linux服务器集群系统(四)——LVS集群的负载调度
- 硅谷VC想对CIO说这些
- 随想录(用python预测未来中国的GDP)
- linux centos目录结构(二)
- 今年赚钱最多的,居然是个牧羊人
- 一文搞懂X509证书PEM DER CRT CER的区别
- GCMail反垃圾邮件系统让企业远离垃圾邮件的困饶
- java jstat m ccs,jstat命令使用
- 线性单节锂电充电IC
- 1024程序员节,我被喷上了热搜!
- 零基础学习SQL第一节
- 【新书预告】《Adobe Flex大师之路》即将上市,敬请关注!
- 一百二十二、Git——Git上传代码两种方法,一是用IDEA,二是用小乌龟
- js实现复制并能保留原格式粘贴;vue中点击复制粘贴功能;vue复制功能(不需要插件);
- UG12.0实战模具编程 拆电极 模芯钢料编程视频教程