DNS服务器
DNS(Domain Name System)域名系统,在 TCP/IP 网络中有非常重要的地位,能够提供域名与IP 地址的解析服务。 DNS是一个分布式数据库,命名系统采用层次的逻辑结构,如同一棵倒置的树,这个逻辑的树形结构称为域名空间,由于DNS 划分了域名空间,所以各机构可以使用自己的域名空间创建 DNS信息。 DNS是一个工作是应用层协议,工作的TCP/UDP的53端口。 全球有13台根服务器,dns解析的时候下级DNS服务器不知道对应上级DNS服务器的地址,而知道根服务器。上级DNS服务器知道下级DNS服务器。 DNS:一级域名可分为国家域,组织域和反向域。 DNS的资源记录 SOA资源记录为起始授权机构记录,是最重要、最常用的一种资源记录。当DNS服务器配置成加载区域时,其使用SOA和NS两种资源记录来确定区域的授权属性。 SOA资源记录语法格式: 区域名(当前) 记录类型 SOA 主域名服务器(FQDN) 管理员邮件地址 (序列号 刷新间隔 重试间隔 过期间隔 TTL) NS记录 用于指定一个区域的权威DNS服务器,通过在NS资源记录中列出服务器的名字,其他主机就认为它是该区域的权威服务器。这意味着在NS资源记录中指定的任何服务器都被其他服务器当作权威的来源并且能应答区域内所含名称的查询。 NS资源记录语法格式: 区域名 IN NS 完整主机名(FQDN) A资源记录是使用最为频繁的一种,通常用于将指定的主机名称解析为它们对应的IP地址。 A资源记录语法格式:
完整主机名(FQDN) IN A IP地址 CNAME资源记录语法格式: 别名 IN CNAME 主机名 MX资源记录 MX(邮件交换器)资源记录提供邮件传递信息。该记录会指定区域内的邮件服务器名称。 PTR资源记录 指针(PTR)资源记录。该记录与A记录相反,用于查询IP地址与主机名的对应关系。 PTR资源记录语法格式: IP地址 IN PTR 主机名(FQDN) 区域文件实际上就是DNS的数据库,而资源记录就是数据库中的数据。 DNS解析分为:正向解析,反向解析。 DNS的解析的过程: <1> 客户机提交域名解析请求,并将该请求发送给本地的域名服务器。 <2> 当本地的域名服务器收到请求后,就先查询本地的缓存。如果有查询的DNS 信息记录,则直接返回查询的结果。如果没有该记录,本地域名服务器就把请求发给根域名服务器。 <3> 根域名服务器再返回给本地域名服务器一个所查询域的顶级域名服务器的地址。 <4> 本地服务器再向返回的域名服务器发送请求。 <5> 接收到该查询请求的域名服务器查询其缓存和记录,如果有相关信息则返回客户机查询结果,否则通知客户机下级的域名服务器的地址。 <6> 本地域名服务器将查询请求发送给返回的DNS服务器。 <7> 域名服务器返回本地服务器查询结果(如果该域名服务器不包含查询的DNS 信息,查询过程 将重复<6>、<7>步骤,直到返回解析信息或解析失败的回应)。 <8> 本地域名服务器将返回的结果保存到缓存,并且将结果返回给客户机。 DNS服务器的类型:主DNS服务器和辅助DNS服务器,修改和删除只能在主服务器中进行,辅助服务器同步主服务器;缓存服务器(加速和节约带宽);转发器(内外防火墙隔开的DNS服务器) DNS和辅助DNS服务器的同步:主服务器修改后立即给辅助服务器发送同步,辅助服务器在特定的时间间隔同步主服务器。 DNS服务安装包: bind.i386该包为DNS服务的主程序包。 bind-libs.i386 提供bind库文件 bind-utils.i386 该包为客户端工具(如dig,nslookup,), bind-sdb.i386 将bind的解析数据放在mysql的数据表中。 bind-chroot.i386 改变配置文件的路径 caching-nameserver.i386 DNS的辅助配置文件。 dns配置文件/etc/named.conf 属组必须为named,这个文件可以自己手动建,要对应数据文件。 如:options { directory "/var/named"; }; zone "." IN { 定义根节点 type hint; file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; }; 如果在/var/named/下创建对应的数据文件则这就是个缓存dns。 我们在加上需要解析的域就是dns服务器了如: zone "" IN { type master; allow-transfer { 172.16.8.1; }; file ".zone"; }; zone "16.172.in-addr.arpa" IN { type master; allow-transfer { 172.16.8.1; }; file "172.16.zone"; }; 建立对应的数据文件就能解析域。 如果想配置辅助DNS,需要一台主机把解析的域配置成 zone "" IN { type slave; file "slaves/.zone"; allow-transfer { none; }; masters { 172.16.8.2; }; }; zone "16.172.in-addr.arpa" IN { type slave; file "slaves/172.16.zone"; allow-transfer { none; }; masters { 172.16.8.2; }; }; 那么就是辅助DNS服务器。辅助服务器能同步主服务器。 如果想配置子域DNS,只需要把数据配置文件.zone加上: $TTL 36400 @ 600 IN SOA ns1.. admin.. ( 2011112306 1H 10M 7D 1D) @ IN NS ns1.. @ IN NS ns2.. @ IN MX 10 mail.. ns1.. IN A 172.16.8.2 ns2.. IN A 172.16.8.1 www.. IN A 192.168.0.168 ftp.. IN A 172.16.8.2 mail.. IN A 172.16.8.2 tech.. IN NS ns.tech.. ns1.tech.. IN A 172.16.8.3 然后在另外一台主机上建立配置文件如: options { directory "/var/named"; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; }; zone "tech." IN { type master; file "tech..zone"; }; 转发服务器Forward: 一个 forward zone 是每个域的配置转发的主要部分。 一个 zone 语句中的type forward可以包括一个 forward 和/或forwarders 子句,它会在区域名称给定的域中查询。如果没有forwarders 语句或者 forwarders 是空表,那么这个域就不会有转发,消除了options 语句中有关转发的配置 如在上个子域服务器配置文件中加上: zone "" IN { type forward; forwarders { 172.16.8.2; }; }; 最后一个是智能DNS 服务器:根据客服端的来源IP地址,来为某一个解析请求返回一个设定好的解析结果。 智能DNS需要通过视图view实现,其配置文件如下: options { directory "/var/named"; forwarders { 192.168.0.254; }; }; view local { match-clients { 192.168.0.0/24; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; }; zone "" IN { type master; allow-transfer { 172.16.8.1; }; file ".zone"; }; zone "16.172.in-addr.arpa" IN { type master; allow-transfer { 172.16.8.1; }; file "172.16.zone"; }; }; view extend { match-clients { 172.16.0.0/16; }; zone "" IN { type master; file ".extend"; }; }; view unkownnet { match-clients { any; }; zone "" IN { type master; file ".unkown"; }; }; rndc :DNS进程管理工具 rndc :flush 清空DNS服务器的缓存,ipconfig status 显示服务器的状态 reload 重新生效配置文件和数据文件,只从新读取主配置文件而不读取数据文件要用 stop 停止DNS服务 rndc trace 2 打开调试(2级别) rndc notrace 关闭调试 freeze zone 不让某个区域的动态解析 retransfer zone 重传区域数据文件