1.1 DNS简介 DNS(Domain Name System)域名系统,在TCP/IP网络中有非常重要的地位,能够提供域名与IP地址的解析服务。 1.2 域名空间 DNS是一个分布式数据库,命名系统采用层次的逻辑结构,如同一棵倒置的树,这个逻辑的树形结构称为域名空间,由于DNS划分了域名空间,所以各机构可以使用自己的域名空间创建DNS信息。 注:DNS域名空间中,树的最大深度不得超过127层,树中每个节点最长可以存储63个字符。 1)域和域名 DNS树的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个层次结构。域名空间的每个域的名字,通过域名进行表示。域名通常由一个完全正式域名(FQDN)标识。FQDN能准确表示出其相对于DNS域树根的位置,也就是节点到DNS树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔,对于DNS域google来说,其完全正式域名(FQDN)为google.com。 一个DNS域可以包括主机和其他域(子域),每个机构都拥有名称空间的某一部分的授权,负责该部分名称空间的管理和划分,并用它来命名DNS域和计算机。例如,google为com域的子域,其表示方法为google.com,而www为google域中的Web,可以使用www.google.com表示。
2.1 BIND简介 BIND全称为Berkeley Internet Name Domain(伯克利因特网名称域系统)。BIND主要有三个版本:BIND4、BIND8、BIND9。 BIND8融合了许多提高效率、稳定性和安全性的技术,而BIND9增加了一些超前的理念:IPv6支持、公开密钥加密、多处理器支持、线程安全操作、增量区传送等等。 2.2 DNS所需软件 bind-9.3.3-10.el5.i386.rpm:该包为DNS服务的主程序包。服务器端必须安装该软件包,后面的数字为版本号。 bind-utils-9.3.3-10.el5.i386.rpm:该包为客户端工具,默认安装,用于搜索域名指令。 2.3 DNS的安装 首先我们来看下RHEL5预装了哪些包哈,rpm -qa | grep bind
Master:主DNS服务器:拥有区域数据文件,并对此区域提供管理数据 Slave:辅助DNS服务器:拥有主DNS服务器的区域数据文件的副本,辅助DNS服务器会从主DNS服务器同步所有区域数据。 Stub:stub区域和slave类似,但其只复制主DNS服务器上的NS记录而不像辅助DNS服务器会复制所有区域数据。 Forward:一个forward zone是每个域的配置转发的主要部分。一个zone语句中的type forward可以包括一个forward和/或forwarders子句,它会在区域名称给定的域中查询。如果没有forwarders语句或者forwarders是空表,那么这个域就不会有转发,消除了options语句中有关转发的配置。 Hint:根域名服务器的初始化组指定使用线索区域hint zone,当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表。如果没有指定class IN的线索区域,服务器使用编译时默认的根服务器线索。不是IN的类别没有内置的默认线索服务器。 Delegation-only:用于强制区域的delegation .ly状态。 3.2 配置正向解析区域 授权DNS服务器管理michael.com区域,并把该区域的区域文件命名为michael.com 1)建立主配置文件named.conf vim /etc/named.conf
3.3 配置反向解析区域 1)添加反向解析区域 vim /etc/named.conf
完整主机名(FQDN) IN A IP地址
[root@rhel5 ~]# service named restart 停止 named: [确定] 启动 named: [确定] [root@rhel5 ~]# nslookup dns.tech.org Server: 192.168.0.188 Address: 192.168.0.188#53 Name: dns.tech.org Address: 192.168.0.188 [root@rhel5 ~]# nslookup client1.tech.org Server: 192.168.0.188 Address: 192.168.0.188#53 Name: client1.tech.org Address: 192.168.0.101 [root@rhel5 ~]# nslookup client2.tech.org Server: 192.168.0.188 Address: 192.168.0.188#53 Name: client2.tech.org Address: 192.168.0.102 [root@rhel5 ~]# nslookup client3.tech.org Server: 192.168.0.188 Address: 192.168.0.188#53 Name: client3.tech.org Address: 192.168.0.103 [root@rhel5 ~]# |
[root@rhel5 ~]# more /usr/share/doc/bind-9.3.3/sample/var/named/named.root ; This file holds the information . root name servers needed to ; initialize cache of Internet domain name servers ; (e.g. reference this file in the "cache . <file>" ; configuration file of BIND domain name servers). ; ; This file is made available by InterNIC ; under anonymous FTP as ; file /domain/named.cache ; . server FTP.INTERNIC.NET ; -OR- RS.INTERNIC.NET ; ; last update: Jan 29, 2004 ; related version of root zone: 2004012900 ; ; ; formerly NS.INTERNIC.NET ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 ; ; formerly NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 ; ; formerly C.PSI.NET ; . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ; ; formerly TERP.UMD.EDU ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 ; ; formerly NS.NASA.GOV ; . 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 ; ; formerly NS.ISC.ORG ; . 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 ; ; formerly NS.NIC.DDN.MIL ; . 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 ; ; formerly AOS.ARL.ARMY.MIL ; . 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 ; ; formerly NIC.NORDU.NET ; . 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 ; ; operated by VeriSign, Inc. ; . 3600000 NS J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30 ; ; operated by RIPE NCC ; . 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 ; ; operated by ICANN ; . 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12 ; ; operated by WIDE ; . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 ; End of File [root@rhel5 ~]# |
[root@rhel5 ~]# rndc Usage: rndc [-c config] [-s server] [-p port] [-k key-file ] [-y key] [-V] command command is .e of the following: reload Reload configuration file and zones. reload zone [class [view]] Reload a single zone. refresh zone [class [view]] Schedule immediate maintenance for a zone. retransfer zone [class [view]] Retransfer a single zone without checking serial number. freeze zone [class [view]] Suspend updates to a dynamic zone. thaw zone [class [view]] Enable updates to a frozen dynamic zone and reload it. reconfig Reload configuration file and new zones .ly. stats Write server statistics to the statistics file. querylog Toggle query logging. dumpdb [-all|-cache|-zones] [view ...] Dump cache(s) to the dump file (named_dump.db). stop Save pending updates to master files and stop the server. stop -p Save pending updates to master files and stop the server reporting process id. halt Stop the server without saving pending updates. halt -p Stop the server without saving pending updates reporting process id. trace Increment debugging level by .e. trace level Change the debugging level. notrace Set debugging level to 0. flush Flushes all of the server's caches. flush [view] Flushes the server's cache for a view. flushname name [view] Flush the given name from the server's cache(s) status Display status of the server. recursing Dump the queries that are currently recursing (named.recursing) *restart Restart the server. * == not yet implemented Version: 9.3.3rc2 [root@rhel5 ~]# |
4.1 辅助DNS服务器及区域数据同步 1)辅助域名服务器 DNS划分若干区域进行管理,每个区域由一个或多个域名服务器负责解析。如果采用单独的DNS服务器而该服务器没有响应,那么该区域的域名解析就会失败。因此每个区域建议使用多个DNS服务器,可以提供域名解析容错功能。对于存在多个域名服务器的区域,必须选择一台主域名服务器(master),保存并管理整个区域的信息,其他服务器称为辅助域名服务器(slave)。 管理区域时,使用辅助域名服务器的好处: (1)辅助DNS服务器提供区域冗余,能够在该区域的主服务器停止响应时为客户端解析该区域的DNS名称。 (2)创建辅助DNS服务器可以减少DNS网络通信量。采用分布式结构,在低速广域网链路中添加DNS服务器能有效地管理和减少网络通信量。 (3)辅助服务器可以用于减少区域的主服务器的负载。 2)区域传输 为了保证DNS数据相同,所有服务器必须进行数据同步,辅助域名服务器从主域名服务器获得区域副本,这个过程称为区域传输。区域传输存在两种方式:完全区域传输(AXFR)和增量区域传输(IXFR)。当新的DNS服务器添加到区域中,并且配置为新的辅助服务器时,它会执行完全区域传输(AXFR),从主服务器获取一份完整的资源记录副本。主服务器上区域文件再次变动后,辅助服务器则会执行增量区域传输(IXFR),完整资源记录的更新,始终保持DNS数据同步。 满足发生区域传输的条件时,辅助域名服务器向主服务器发送查询请求,更新其区域文件。
(2)主服务器做出响应,并将此区域完全传输到辅助服务器。
该区域传输时会一并发送SOA资源记录。SOA中“序列号”(serial)字段标示区域数据的版本,“刷新时间”(refresh)指出辅助服务器下一次发送查询请求的时间间隔。
(3)刷新间隔到期时,辅助服务器使用SOA查询来请求从主服务器续订此区域。
(4)主域名服务器应答其SOA记录的查询。
该响应包括主服务器中该区域的当前序列号版本。
(5)辅助服务器检查响应中的SOA记录的序列号,并确定续订该区域的方法,如果辅助服务器确认区域文件已经更改,则它会把IXFR查询发送到主服务器。
若SOA响应中的序列号等于其当前的本地序列号,那么两个服务器区域数据都相同,并且不需要区域传输。然后,辅助服务器根据主服务器SOA响应中的该字段值重新设置其刷新时间,续订该区域。如果SOA响应中的序列号值比其当前本地序列号要高,则可以确定此区域己更新并需要传输。
(6)主服务器通过区域的增量传输或完全传输做出响应。
如果主服务器可以保存修改的资源记录的历史记录,则它可以通过增量区域传输(IXFR)做出应答。如果主服务器不支持增量传输或没有区域变化的历史记录,则它可以通过完全区域传输(AXFR)做出应答。 3)配置辅助域名服务器 (1)配置主域名服务器 修改主配置文件named.conf添加michael.com区域
4.4 缓存服务器(Caching-only Name Server) 对于所有的DNS服务器都会完成指定的查询工作,然后存储已经解析的结果。缓存服务器是一种特殊的域名服务器类型,其本地区并不设置DNS信息。仅执行查询和缓存操作。客户端发送查询请求,缓存服务器如果保存有该查询信息则直接返回结果,提高了DNS的解析速度。 如果你的网络与外部网络连接带宽较低,则可以使用缓存服务器,一旦建立了缓存,通信量便会减少。另外缓存服务器不执行区域传输,这样可以减少网络通信流量。 注意:缓存服务器第一次启动时,没有缓存任何信息。通过执行客户端的查询请求才可以构建缓存数据库,达到减少网络流量及提速的作用。 案例:公司网络中为了提高客户端访问外部WEB站点的速度并减少网络流量需要在内部建立缓存服务器。 分析:因为公司内部没有其他WEB站点,所以不需要DNS服务器建立专门的区域,只需要能够接受用户的请求,然后发送到根服务器,通过迭代查询,获得相应的DNS信息,然后将查询结果保存到缓存,保存的信息TTL值过期后将会清空。 缓存服务器不需要建立独立的区域,可以直接对named.conf文件进行设置,实现缓存的功能。
5.1 RHEL5客户端配置 RHEL5中设置DNS客户端比较简单,直接编辑/etc/resolv.conf文件,然后使用nameserver参数来指定DNS服务器的IP地址。
6.1 企业环境 公司现有多台WEB服务器,分别采用电信和网通线路向外部发布公司的产品信息。 WEB服务器域名:www.redking.com 网通WEB服务器IP地址:60.30.10.3 子网掩码:255.255.0.0 电信WEB服务器IP地址:59.50.23.1 子网掩码:255.255.0.0 随着业务发展,网站访问量大幅增加,很多客户反应登录公司网站时速度较慢,查询信息等待时间过长。为了更好地提高WEB服务器的访问速度,增加客户满意度,现需要对网络访问进行优化。 6.2 需求分析 企业WEB服务器采用两条线路发布信息,电信接入用户浏览网站时可能会访问网通服务器,从而降低网络通信速度,网通用户也会遇到同样问题。如果能够使不同ISP接入用户输入域名www.redking.com后能够直接访问对应的WEB服务器,则可以解决网页访问延迟的问题。 6.3 解决方案 通过DNS服务器的设置,在接收域名解析请求时,域名服务器能够按照客户端的网段为其响应不同的解析信息,从而达到网络优化的目的。
acl "dns-ip-list" { 192.168.0.188; #主DNS服务器IP }; acl CNC { 58.16.0.0/16; 58.17.0.0/17; ...(省略) 222.163.0.0/19; 222.163.32.0/19; }; acl TELECOM { 58.32.0.0/13; 58.42.0.0/15; ...(省略) 222.220.0.0/15; 222.240.36.0/13; }; view "CNC" { match-clients { dns-ip-list; CNC; }; recursion yes; zone "redking.com" { type master; file "redking.com.cnc.zone"; #redking.com网通解析文件 allow-query { any; }; allow-update { none; }; }; zone "." IN { type hint; file "named.root"; }; zone "localhost" IN { type master; file "localhost.zone"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "0.0.127.in-addr.arpa.zone"; allow-update { none; }; }; }; view "TELECOM" IN { match-clients { dns-ip-list; TELECOM; }; server 192.168.5.20; #同步到辅助域名服务器 recursion yes; zone "redking.com" { type master; file "redking.com.telecom.zone"; #redking.com电信解析文件 allow-query { any; }; allow-update { none; }; }; zone "." IN { type hint; file "named.root"; }; zone "localhost" IN { type master; file "localhost.zone"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "0.0.127.in-addr.arpa.zone"; allow-update { none; }; }; }; |
7.1 rndc reload 使用rhdc reload命令重新加载配置文件,如果加载失败,说明配置文件出现错误,这些错误经常是缺少符号“;”或者“}”,当然如果出现“server reload successfull”这样的提示并不代表配置文件没有错误,它自带的检测机制只能检测语法有没错误,对于域或IP地址书写错误或规划时的逻辑错误无法检测。
7.2 查看启动信息 service named restart,如果named服务无法正常启动,可以查看下提示信息。
7.3 查看端口 如果服务正常工作,则会开启TCP和UDP的53端口,可以使用netstat -an命令检测53端口是否正常工作。 netstat -an | grep 53 7.4 权限问题 为了提高安全性,经常使用chroot来改变BIND的根目录,但这时需要注意权限问题,当根目录发生改变时,该目录的权限可能为700,属主是root而不是named。这时当启动named时会遇到权限拒绝的提示。所以在使用chroot的时候需要注意权限不足所带来的问题。 ############################################ PS:为了加快本专题更新速度,从下季开始将只更新各服务案例实战配置,相关原理将不涉及哈(有关原理网上都可以google和baidu,并且偶打字太慢了)。 ############################################
本文出自 “王乾De技术博客” 博客,谢绝转载!