DNS服务介绍 DNS:Domain Name System 应用层协议,工作在C/S,53/udp, 53/tcp,用于实现把域名ip或ip解析成域名的一个服务。 在linux上通常利用BIND:Bekerley Internat Name Domain来实现DNS服务,DIND是ISC (www.isc.org)的一个项目。 我们还可以通常本地名称解析配置文件:hosts,linux上的文件位置:是/etc/hosts,windows的文件位置是:%WINDIR%/system32/drivers/etc/hosts hosts文件内容例: 123.122.10.117.2 www.magedu.com 93.46.8.89 www.google.com

DNS域名: 有根域,一级域名(com,edu,mil,gov,net,org...)有三类、组织域、国家域、反向域,二级域名,最多有127级域名,由ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统 的管理。 DNS查询类型: 递归查询:把查询请求发送出去,只返回查询结果,例如我们设置dns上网一样 迭代查询:例如查询www.baidu.com,先查询根域,再查询com域,再查询com域中的baidu.com域,再返回www.baidu.com对应的ip地址 名称服务器:域内负责解析本域内的名称的主机 根服务器:13组服务器 解析类型: FQDN --> IP IP --> FQDN 注意:正反向解析是两个不同的名称空间,是两棵不同的解析树,FQDN:(Fully Qualified Domain Name)全限定域名

下面我们再来了解一个DNS服务器类型 DNS服务器的类型:主DNS服务器,从DNS服务器,缓存DNS服务器(转发器) 主DNS服务器:管理和维护所负责解析的域内解析库的服务器 从DNS服务器:从主服务器或从服务器“复制”(区域传输)解析库副本 序列号:解析库版本号,主服务器解析库变化时,其序列递增 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔 过期时长:从服务器联系不到主服务器时,多久后停止服务 “通知”机制:主服务器解析库发生变化时,会主动通知从服务器 区域传输:完全传输:传送整个解析库,增量传输:传递解析库变化的那部分内容 一次完整的查询请求经过的流程: Client -->hosts文件 -->DNS Service Local Cache --> DNS Server(recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS… 解析答案: 肯定答案:返回的答案 否定答案:请求的条目不存在等原因导致无法返回结果 权威答案:主域名服务器,负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。 非权威答案:通常由缓存服务器给出的间接信息 资源记录 区域解析库:由众多RR组成: 资源记录:Resource Record, RR 记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个 SOA记录,必须位于解析库的第一条记录 A:internet Address,作用,FQDN --> IP AAAA:FQDN --> IPv6 PTR:PoinTeR,IP --> FQDN NS:Name Server,专用于标明当前区域的DNS服务器 CNAME : Canonical Name,别名记录 MX:Mail eXchanger,邮件交换器 TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如: SPF(反垃圾邮件)记录,https验证等 示例:_dnsauth TXT 2012011200000051qgs69bwoh4h6nht4n1h0lr038x

资源记录定义的格式: 语法:name [TTL] IN rr_type value 注意: (1) TTL可从全局继承 (2) @可用于引用当前区域的名字 (3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询 方式响应 (4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值 进行定义;此仅表示通过多个不同的名字可以找到同一个主机

配置缓存DNS服务器: 安装DNS服务器软件 :bind,可以利用yum安装 BIND程序名:named service named start 查看是否监听53/udp端口 主配置文件/etc/named.conf: 全局配置:options {}; 日志子系统配置:logging {}; 区域定义:本机能够为哪些zone进行解析,就要定义哪些zone zone "ZONE_NAME" IN {}; 注意:任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上 缓存名称服务器的配置:监听外部地址即可 dnssec: 建议关闭dnssec,设为no 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 { any; };//这里修改成any recursion yes; dnssec-enable no; dnssec-validation no; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; };

接下来,我们可以通过named-checkconf rndc reload 这样就是一个缓存DNS服务器了 配置主区域DNS服务器: vim /etc/named.rfc1912.zones vim /var/named/zcs.com.zone 注意:这里面的/var/named/zcs.com.zone权限一定要属主root,属组named,且权限为640 我们还需要通过named-checkzone zcs.com /var/named/zcs.com.zone 来对区域文件进行检验 最后通过dig -t A www.zcs.com @192.168.0.30来进行校验

配置从DNS服务器 在主区域文件中添加DNS服务器 修改/etc/named.conf 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-transfer {none;}; allow-query { any; };//这里修改成any recursion yes; dnssec-enable no; dnssec-validation no; /* Path to ISC DLV key / bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; 主区域文件/etc/namd.conf中options{}添加allow-transfer {192.168.0.40;}; vim /etc/named.rfc1912.zones rndc reload 注意:如果防火墙未关闭,则关闭防火墙,或者添加tcp/53的策略,而且时钟需要与主服务器同步 成功可以看到/var/named下接收到了正向区域的区域文件 ![](https://s1.51cto.com/images/blog/201904/23/493efa024d92d9d1d36e650c0378f273.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk 配置主从反向区域DNS服务器 #vim /etc/named.rfc1912.zones 修改/etc/named.conf 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-transfer {none;}; allow-query { any; };//这里修改成any recursion yes; dnssec-enable no; dnssec-validation no; / Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; #vim /var/named/192.168.0.zone 注意权限: 在从DNS服务器上配置]#vim /etc/named.rfc1912.zones rndc reload 验证#dig -t ptr 50.0.168.192.in-addr.arpa @192.168.0.30或dig -x 192.168.0.50 @192.168.0.30