码迷,mamicode.com
首页 > 系统相关 > 详细

linux的DNS服务详解

时间:2018-07-11 15:00:01      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:分类   监听   详解   基本   版本号   路径名   主域名服务器   操作码   通过   

一. DNS理论: DNS:域名服务(domain  nsme  service) 作用:将域名解析成IP(正向解析)或者把IP解析成域名(反向解析) DNS顶级域的分类: 组织域:.com  .net  .org ..... 国家域:.cn   .tw   .jp  ..... 反向域:将ip解析为域名 DNS记录类型: A:正向解析条目 PTR:反向解析条目 NS:代表域内的DNS服务器 MX:代表域内的邮件服务器 CNAME:别名 SOA:用于标识域内的DNS服务器 注意:每添加一条NS记录,就应该为其添加一条相应的A记录 DNS服务器的类型: 主DNS服务器:master 从DNS服务器:slave 根DNS服务器:hint DNS缓存服务器:生活中接触最多的,一般都是作为我们的默认DNS(localDNS). 默认DNS服务器: 一般都是可以为我们进行迭代查询的DNS服务器 在Internet中,顶级域的DNS服务器不会为我们进行迭代查询,所有一般只要DNS缓存服务器会为我们进行迭代 DNS的查询类型: 迭代查询(tcp:53) 递归查询(udp:53) DNS的查询顺序: 1.DNS缓存 2.本地host文件 3.DNS服务器 IP和FQDN的对应关系:(FQDN:完全限定域名) ICANN:名称分配机构,他以及其下辖机构管理Internet上的所有域名 一个IP可以有多个域名(http虚拟主机的实现原理之一) 一个域名可以有多个ip(集群的负载均衡实现的原理之一) 从DNS的作用: 1.实现DNS的负载均衡 2.当主服务器出现故障时可以代替主服务器的工作 子域和委派: 委派:当区域中子域过多时,在一台服务器上不能很好的维护,就可以将一些子域分配给指定服务器进行维护 子域:解析文件存放在父域 委派:有独立的区域文件 检查工具(由bind-utils软件包提供) 检查DNS服务主配置文件是否有错误:named-checkconf  配置文件路径 检查DNS服务正反向文件是否有错误:named-checkzone  域名   与之对应的反向解析文件  二. DNS配置: ###主根DNS服务器配置: 三.配置文件 /etc/named.conf:DNS的主配置文件 /bind/named:此目录下存放DNS的区域数据文件 /bind/named/named.root   存放DNS的区域声明文件 ###配置文件详解: named.conf 主配置文件详解: options    //全局配置区域 directory  //区域数据文件的默认存放位置 pid-file   //pid文件存放位置。向运行的DNS服务器发送信号的程序使用的。 dump-file  //缓存文件存放路径,named的数据文件存放位置。 request-ixfr yes;       //决定本地服务器是否作为辅域名服务器,会向主域名服务器发送域的增量传送请求。 recursion yes;       //允许所有客户机递归(默认) statistics-file   //统计信息的文件路径。 memstatistics-file  //内存使用统计文件的路径名 allow-transfer {none;};       //设定哪台主机允许和本地服务器进行域传输,可设置在zone语句中.默认允许和所有主机进行域传输。 allow-query {any;};  //允许哪些客服机使用本DNS查询信息,可以是IP网段,或any。 listen-on port 53 { any; };   //DNS服务器的ip地址或any, 监听的ipv4和端口,(any:任意,53:udp53和tcp:53) zone区域部分解释: allow-transfer {none;};       //设定哪台主机允许和本地服务器进行域传输,可设置在zone语句中.默认允许和所有主机进行域传输。 allow-update { none; }; //是否允许"从服务器"更新DNS信息(none:拒绝) masterIP: 192.168.1.1 slaveIP: 192.168.1.2 北京localDNS:   192.168.1.4  山西localDNS:   192.168.1.5 GSLB地址:       192.168.1.41 修改主配置named.conf文件: [root@master~]# vim /etc/named.conf  options { directory "/bind/named";    pid-file "/var/run/named/named.pid"; dump-file "/var/named/dump.named"; request-ixfr yes; // save bandwidth recursion yes; // please restrict this allow-transfer {none;}; listen-on { any; }; // listen on all IPv4 interfaces listen-on-v6 { any; }; // listen on all IPv6 interfaces  }; /************* zone info *************/ // main zone zone "." in {          //定义根域。 type master;       //域类型. file "named.root";  //定义根域解析文件。 allow-transfer { 192.168.1.2; }; notify yes;       //根DNS修改一个域后,notify消息会被发送到在域NS记录的上的服务器。 }; ##主根DNS服务器区域声明文件配置: [root@master~]# vim /bind/named/named.root $ORIGIN .           //权威解析DNS服务器 @ 1D IN SOA @ root (   //域名     2018070402     //序列号,每一次修改都往上加,否则从根DNS不同步 1H    //刷新时间,重新下载地址数据的间隔。 15M    //重试间隔时间,下载失败之后的重试间隔。 1W    //失效时间,超过该时间任无法下载则放弃。 5M )    //无法解析记录的生存期.1D也可以,表示1天。 . 518400 IN NS we.yuan.net.jp   //DNS域名(NS域名服务器). we.yuan.net.jp  518400 IN A 192.168.1.1      //主根DNS服务器。 .                   518400 IN A 192.168.1.1 . 518400 IN NS slave.we.yuan.net.jp slave.we.yuan.net.jp 518400 IN A 192.168.1.2        //从根DNS服务器。 .                   518400 IN A 192.168.1.2    //从根DNS服务器。 ;GSLB地址。 ly.we.yuan.net.jp 518400 IN NS  ns1.ly.we.yuan.net.jp ns1.ly.we.yuan.net.jp  518400 IN A  192.168.1.41 ;主根和从根DNS地址。 . 518400 IN NS we. we.  518400 IN A 192.168.1.1 .                          518400 IN A 192.168.1.1 . 518400 IN NS slave.we. slave.we.  518400 IN A 192.168.1.2 .                          518400 IN A 192.168.1.2 ly.we. 518400 IN NS ns3.ly.we. ns3.ly.we.  518400 IN A 192.168.1.41 ;山西 sx.we.yuan.net.jp 518400 IN NS ns5.sx.we.yuan.net.jp ns5.sx.we.yuan.net.jp  518400 IN A 192.168.1.5 ;北京 bj.we.yuan.net.jp 518400 IN NS ns6.bj.we.yuan.net.jp ns6.bj.we.yuan.net.jp  518400 IN A 192.168.1.4 ###从根DNS服务器配置: #vim /etc/named.conf options { directory "/bind/named/slave"; pid-file "/var/run/named/named.pid"; dump-file "/var/named/dump.named"; // cache file request-ixfr yes; // save bandwidth recursion yes; // please restrict this allow-transfer {none;}; allow-query {any;}; listen-on { any; }; // listen on all IPv4 interfaces listen-on-v6 { any; }; // listen on all IPv6 interfaces  }; /************* zone info *************/ zone "." in { type slave; file "slave.root.hint"; masters { 192.168.1.1; };    //主根DNS地址 notify yes; }; ##从根DNS服务器区域声明文件配置: #vim  /bind/named/slave.root.hint  $ORIGIN . $TTL 86400 ; 1 day          //生命周期 @ IN SOA . root. ( 2018070402 ; serial 3600       ; refresh (1 hour) 900        ; retry (15 minutes) 604800     ; expire (1 week) 300        ; minimum (5 minutes) ) $TTL 518400 ; 6 days        //生命周期 NS we. NS we.yuan.net.jp NS slave.we. NS slave.we.yuan.net.jp A 192.168.1.2 A 192.168.1.1 we.yuan.com.cn A 192.168.1.1 $ORIGIN we.yuan.net.jp ly NS ns1.ly $ORIGIN ly.we.yuan.net.jp ns1 A 192.168.1.41 $ORIGIN we.yuan.net.jp slave         A 192.168.1.2 ;山西localDNS sx NS ns3.sx $ORIGIN sx.we.yuan.net.jp ns3 A 192.168.1.5 ;北京localDNS $ORIGIN we.yuan.net.jp bj NS ns4.bj $ORIGIN bj.we.yuan.net.jp ns4 A 192.168.1.4 $ORIGIN . we A 192.168.1.1 $ORIGIN we. ly NS ns3.ly $ORIGIN ly.we. ns3 A 192.168.1.41 $ORIGIN we. slave A 192.168.1.2 ###山西localDNS配置: #vim /etc/named.conf options { directory "/var/named"; allow-query { any; }; listen-on port 53 { any; }; // listen on all IPv4 interfaces recursion yes; #dnssec-enable yes; #dnssec-validation yes;         #dnssec-lookaside auto; }; zone "we.yuan.net.jp" IN {         type forward;         forwarders {192.168.1.2; }; }; zone "sx.we.yuan.net.jp" IN {       type master;        file "sx.we.yuan.net.jpzone"; }; zone "1.168.192-in-addr.arpa" IN {        type master;        file "1.168.192.zone"; }; ## ##vim  /var/named/sx.we.yuan.net.jpzone $TTL 1D @ IN SOA  dns root.tj.we.yuan.net.jp ( 0;serial 1D;refresh  1H;retry  1W;expire  3H);minimum  @              NS ns5 ns5          A                192.168.1.5 test         A                192.168.1.5 #vim /var/named/1.168.192.zone $TTL 1D @ IN SOA  dns root.abc.sx.we.yuan.net.jp ( 0;serial 1D;refresh  1H;retry  1W;expire  3H);minimum   NS  abc.sx.we.yuan.net.jp 5  PTR  abc.sx.we.yuan.net.jp ###北京localdns配置: #vim /etc/named.conf options { listen-on port 53 { any; }; 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; }; recursion yes; #dnssec-enable yes; #dnssec-validation yes;         #dnssec-lookaside auto; }; //DNS日志系统,语法 logging {         channel default_debug {                 file "data/named.run";                 severity dynamic;         }; }; zone "bj.we.yuan.net.jp" IN { type master;   file "bj.we.yuan.net.jpzone"; }; zone "1.168.192-in-addr.arpa" IN { type master; file "1.168.192.zone"; }; zone "we.yuan.net.jp" IN {         type forward;         forwarders { 192.168.1.2; }; }; #vim  bj.we.yuan.net.jpzone $ORIGIN bj.we.yuan.net.jp @ 1D IN SOA @ root ( 2009082604 3H 15M 1W 1D )     1D   IN NS @     IN    A 192.168.1.4 test                IN    A 192.168.1.4  ###调试命令: named -g -u named named -g -u named -t  配置文件(named.conf)目录  -c  指定配置文件路径named.conf 三.转发器配置: 1.在需要做转发的服务器上做转发,一般都是在子域服务去上,将他转发给父域服务器 区域声明文件配置: 1.可以在主配置文件中的全局配置中配置,在全局配置中配置的对整个DNS服务器生效 2.在区域声明文件中声明转发域,这里是第二种方法: zone "we.yuan.net.jp" IN {    //将we.yuan.net.jp的解析请求转发给we.yuan.net.jp         type forward; //服务器类型 forward  first; //指定转发类型         forwarders { 192.168.1.2; }; //转发给指定域 }; 转发域类型: first:转发给指定域,如果指定域没有给出解析则进行迭代查询 only:转发给指定域,如果指定域没有给出解析则返回给客户机无法解析的结果 主配置文件: 全局选项修改: dnssec-enable no;          dnssec-validation no; 删除:dnssec-lookaside auto; 四.ACL ACL的概念:通过将指令编写在ACL中,可以实现同样的指令重复使用,类似于函数的功能(acl一般配合智能DNS使用) dns默认有两个ACL:any和none acl的编写原则:一般都编写在文件的最前面,因为acl必须先声明,再调用的 语法: acl  acl名  { 指令; 指令; ....; };


如果不明白,请看图:

技术分享图片


注意:
     需要在防火墙开放DNS,TCP53和UDP53端口。
     如果是山西localDNS服务器,采用的是GSLB负载均衡器,将山西的一部分域名转发给GSLB,那么必须要在主根DNS服务器配置一条A记录指向GSLB地址。
     北京的从根DNS服务器需要与北京localdns和山西localdns互通,可以ping通。
结论:
    在北京localdns服务器可以解析到山西的域名。在山西localdns可以解析到北京localdns的域名。
    用nslookup和dig命令解析。
    nslookup test.sx.we.yuan.net.jp命令返回192.168.1.5的地址。
    nslookup test.bj.we.yuan.net.jp命令返回192.168.1.4的地址。
    
    linux用rndc  flush命令  清空DNS缓存。
    
    

    
dig命令输出详解:

#dig www.baidu.com
下面说明各项意义:
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> baidu.com
;; global options:  printcmd
dig程序的版本号,和要查询的域名
Dig的部分输出告诉我们一些有关于它的版本信息(version 9.2.3)和全局的设置选项,如果+nocmd在命令行下
是第一个参数的话,那么这部分输出可以通过加+nocmd的方式查询出来


;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54864
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
在这里,Dig告诉我们一些从DNS返回的技术信息,这段信息可以用选项 +[no]comments来控制显示,但是小心
,禁止掉comments也可能关闭一些其它的选项。
opcode 操作码,QUERY,代表是查询操作
status 状态,NOERROR,代表没有错误
id 编号,54864,16bit数字,在dns协议中,通过编号匹配返回和查询。
flags 标志,如果出现就表示有标志,如果不出现就未设置标志:
  qr query,查询标志,代表是查询操作
  rd recursion desired, 代表希望进行递归(recursive)查询操作
  ra recursive available 在返回中设置,代表查询的服务器支持递归(recursive)查询操作。
  aa Authoritative Answer 权威回复,如果查询结果由管理域名的域名服务器而不是缓存服务器提供的,则称为权威回复。
 QUERY 查询数,1代表1个查询,对应下面的QUESTION SECTION中的记录数
 ANSWER 结果数,4代表有4项结果,对应下面ANSWER SECTION中的记录数
AUTHORITY 权威域名服务器记录数,0代表该域名有0个权威域名服务器,可供域名解析用。
ADDITIONAL 格外记录数,0代表有0项格外记录。


;; QUESTION SECTION:
;baidu.com. INA
在这个查询段中,Dig显示出我们查询的输出,默认的查询是查询A记录,你可以显示或者禁止掉这些用+[no]question
查询部分,从左到右各部分意义:
1、要查询的域名,这里是baidu.com.,'.'代表根域名,com顶级域名,baidu二级域名
2、class,要查询信息的类别,IN代表类别为IP协议,即Internet。还有其它类别,比如chaos等,由于现在都是互联网,所以其它基本不用。
3、type,要查询的记录类型,A记录(Address),代表要查询ipv4地址。AAAA记录,代表要查询ipv6地址。


;; ANSWER SECTION:
baidu.com. 600IN A 123.125.114.144
baidu.com. 600IN A 180.149.132.47
baidu.com. 600IN A 111.13.101.208
baidu.com. 600IN A 220.181.57.217
最后,我们得到我们查询的结果。baidu.com的地址是123.125.114.144,但是你可以用+[no]answer来保留或不保留这些选项。
回应部分,回应都是A记录,A记录从左到右各部分意义:
1、对应的域名,这里是baidu.com.,'.'代表根域名,com顶级域名,baidu二级域名
2、TTL,time ro live,缓存时间,单位秒。600,代表缓存域名服务器,可以在缓存中保存76秒该记录。
3、class,要查询信息的类别,IN代表类别为IP协议,即Internet。还有其它类别,比如chaos等,由于现在都是互联网,所以其它基本不用。
4、type,要查询的记录类型,A记录,代表要查询ipv4地址。AAAA记录,代表要查询ipv6地址。
5、域名对应的ip地址。


;; Query time: 2 msec
查询耗时
;; SERVER: 192.168.132.1#53(192.168.132.1)
查询使用的服务器地址和端口
;; WHEN: Mon Jul 18 16:31:03 2016
查询的时间
;; MSG SIZE  rcvd: 91
回应的大小。收到(rcve, recieved)91字节

以上仅为测试使用,具体需要根据生产环境而定。 仅为个人工作经验总结,如有错误之处,希望各位博友可以指正错误之处。谢谢各位博友。




linux的DNS服务详解

标签:分类   监听   详解   基本   版本号   路径名   主域名服务器   操作码   通过   

原文地址:http://blog.51cto.com/liyuanjie/2140340

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!