A-A+

DNS笔记&主从服务器搭建实验

2016年02月16日 电脑网络 暂无评论 阅读 3 views 次

理论部分:

DNS:Domain Name Service协议,属于应用层协议

使用端口53/TCP 53/UDP

作用:提供域名和IP的解析服务,在互联网中属于非常重要的基础服务

. 根域

.com .edu .gov .org 等等 顶级域,用来指示某个国家或地区或组织使用的名称类型

baidu.com qq.com 等等,二级域名,个人或者组织在互联网上使用的的注册名称

正向解析:将域名解析为IP

反向解析:将IP解析为域名

注意:正向解析和反向解析是两个不同的名称空间,两颗不同的解析树

DNS查询类型

迭代查询 interration

一次,客户机把查询请求发送给DNS,剩下的由DNS来去查询,返回最终结果

递归查询 recursion

多次,查询请求发送给DNS,DNS告诉客户机应该找谁谁谁去查询,然后客户机自己一级级的找

DNS服务器类型:

主DNS

从DNS

缓存DNS

转发器

主DNS:维护所负责的域内解析库,由管理员来维护

从DNS:从主DNS服务器那里或者其他的DNS服务器那里“复制”一份(区域传送)解析库文件

序列号:解析库的版本号,解析库内发生变化,手动增加版本号

刷新时间:主、从服务器同步时间间隔

重试时间:请求失败后,再次请求同步的时间间隔

过期时间:从DNS始终联系不到主DNS服务器,多久后放弃服务器角色停止提供服务

“通知”机制:主DNS更新解析库后,主动通知从DNS进行同步更新

区域传送:

全量传送:传送整个解析库

增量传送:传送变化的部分

FQDN:full qualified domain name 完全合格域名

www.luyouqiboke.com.

DNS查询解析过程:

1)客户机提交域名解析请求,并将该请求发送给本地的DNS服务器(提交之前会检查hosts文件)

2)本地DNS会查找本地缓存中有没有,有就返回结果给客户机,没有就把请求发送给根服务器(客户机-->本地DNS :迭代查询)

3)根名称服务器返回给本地DNS服务器一个所查询到的顶级域名服务器的地址(递归查询)

4)本地DNS服务器,再像返回的顶级域名服务器发起请求(递归查询)

5)收到该查询请求的顶级域名服务器查询缓存,有结果则返回,没有结果,则返回下级的域名服务器地址

6)可能要重复上个动作,直至本地DNS查询到结果,最后将结果缓存本地并告知客户机结果

解析答案:

肯定答案:正确解析请求内容

否定答案:请求的条目不存在等原因无法返回结果

权威答案:DNS服务器在自己的区域文件中找到了客户机要查询的记录,返回的就是权威答案

非权威答案:DNS服务器在自己的区域文件中没有找到客户机要的结果,而是通过递归的方法找到结果返回给客户机,这个答案就是非权威答案

区域解析库,由众多RR组成

资源记录 resource record

记录类型 A AAAA CNAME NS SOA MX PTR 等

SOA

Start Of Authority起始授权记录,一个区域解析库中有且只能有一个SOA记录,而且必须出现在解析库的第一条

A

Internet Address,作用将FQDN-->IP

AAAA

ipv6,FQDN-->IP

PTR

PoinTeR IP-->FQDN 反向解析

NS

Name Server,当前区域的DNS服务器

CNAME

Canonical Name 别名记录

MX

Mail eXchanger 邮件交换记录

资源记录定义的格式:

语法:name [TTL] IN RR_TYPE value

注意:TTL可从全局继承,@ 可引用当前区域的名字

SOA记录格式:

name 当前区域的名称,例如"luyouqiboke.com."

value 有多部分组成

1)当前区域的主DNS的FQDN,也可以使用当前区域的名称,简写@

2)当前区域管理员邮箱地址,但地址中不能使用@,一般使用.代替,例如:admin@luyouqiboke.com --> admin.luyouqiboke.com

3)[主从服务协调属性的定义以及否定答案的统一TTL]

例如:

  1. luyouqiboke.com.  IN  SOA  ns1.luyouqiboke.com. mail.luyouqiboke.com. (  
  2.     20151216001; //序列号   
  3.     2H;          //刷新时间  
  4.     10M;         //重试时间  
  5.     1W;          //过期时间  
  6.     1D;          //否定答案的TTL  
  7. )  

NS格式:

name 当前区域的名字

value 当前区域主DNS的FQDN,如"ns1.luyouqiboke.com."

注意:一个区域中可以有多个NS记录

例如:

luyouqiboke.com. IN NS ns1.luyouqiboke.com.

IN NS ns2.luyouqiboke.com. //如果前面不写名字,则是继承前面的名称

注意:

1)相邻的的连个资源记录name相同时,后面的可省略

2)对NS记录而言,任何一个NS记录后面的服务器名字,都应该有一条A记录 (glue record 粘合记录)

MX

name 当前区域的名字

value 当前区域的某邮件服务器(SMTP服务器)的主机名

一个区域内,MX记录可有有多个,但每个value之前都应该有个0-99的数字,表示优先级,数字越小优先级越高

例如:

luyouqiboke.com. IN MX 10 smtp1.luyouqiboke.com.

IN MX 20 smtp2.luyouqiboke.com.

注意:对于MX而言,任何一个MX记录后面的服务器名字,都应该有一条A记录

A

name 某主机的FQDN,如"www.luyouqiboke.com."

value 主机对应的IP地址

例如:

www.luyouqiboke.com. IN A 172.20.1.34

注意:

1)同一个名字可以有多个不同的值,但需要有多条记录来实现(轮询解析)

2)同一个值可以有多个不同的名字,通过多个名字来实现,多条记录

3)可以使用泛域名解析

如: *.luyouqiboke.com. IN A 10.1.1.1

luyouqiboke.com. IN A 10.1.1.1

避免用户写错名称时给出错误答案,可使用泛域名来指向至某特定地址

AAAA

name FQDN

value IPV6

PTR

name IP,有特定的格式,要把IP反过来写,如172.16.100.1要写成1.100.16.172,而且要有特定后缀in-addr.arpa.

value FQDN

例如:

1.100.16.172.in-addr.arpa. IN PTR www.luyouqiboke.com.

可简写,网络地址可省,仅写主机地址,如192.168.1.1/24 192.168.1 可省

1 IN PTR www.luyouqiboke.com.

注意:网络地址及后缀可省,但主机地址依然要反着写

CNAME

name 别名的FQDN

value 正式名字的FQDN

例如;

web.luyouqiboke.com. IN CNAME www.luyouqiboke.com.

bind部分

子域授权:

每个域名称服务器,都是通过上级名称服务器在解析库进行授权

bind的安装配置:

程序包叫bind,程序名叫named,由主包和多个支包组成

bind

bind-utils

bind-lib

bind-chroot 不建议安装

bind

服务脚本:/etc/rc.d/init.d/named

主配置文件:/etc/named.conf /etc/named.rfc1912.zones /etc/rndc.key

解析库文件:/var/named/ZONE_NAME.zone

注意:

1)一台物理服务器可以同时为多个区域提供解析

2)必须要有根区域 named.ca

3)应该有两个(如果使用IPV6,应该更多)实现localhost和本地回环地址的解析库

rndc:remote name domain controller 默认与bind安装在同一主机,且只能通过127.0.0.1来连接named进程,提供辅助性的管理
端口:953/TCP

主配置文件:/etc/named.conf

全局配置options{}

里面定义了监听地址、端口、解析库路径等

日志子系统配置logging{}

根"." type hint file named.ca //named.ca在/var/named/下,是个相对路径

区域定义:本机能够为那哪些zones进行解析,就要定义那些zone
zone "ZONE_NAME" in {}

缓存名称服务器的配置:

编辑/var/named.conf

关闭dnssec: dnssec-enable no

all-query 允许那些主机查询 { any; }

recursion yes ; 允许递归

listen-on port 53 { 监听的IP(本机IP); 127.0.0.1; };

主DNS服务器的配置:

1、在缓存名称服务器的基础上,编辑/etc/named.rfc1912.zones(在/etc/named.conf中有写:include "/etc/named.rfc1912.zones";)添加区域

格式:

  1. zone "ZONE_NAME"  IN {  
  2.     type  { master|slave|hint|forward };  
  3.     file  "ZONE_NAME.zone";   文件名要用引号引起来,否则语法错误  
  4. };  

如:

  1. zone "luyouqiboke.com" IN {  
  2.     type master;  
  3.     file "luyouqiboke.com.zone";  
  4. };  

2、定义区域解析库文件:/var/named/

/var/named/下手动建立

宏定义:变量定义,自动引用

$TTL 86400 单位是秒,也就是1天 1D

$ORIGIN luyouqiboke.com. 区域名的宏定义

  1. @ IN SOA ns1.luyouqiboke.com.  mail.luyouqiboke.com. (  
  2.             20151216001   序列号  
  3.             1H            刷新时间  
  4.             5M            重试时间  
  5.             7M            过期时间  
  6.             1D              否定答案的TTL  
  7.             )  
  8.             IN  NS  ns1.luyouqiboke.com.   .luyouqiboke.com.  可省略  
  9.             IN  NS  ns2                 省略写法  
  10.             IN  MX  10  mx1  
  11.             IN  MX  20  mx2  
  12.         ns1  IN  A  1.1.1.1  
  13.         ns2  IN  A  1.1.1.2  
  14.         mx1  IN  A  1.1.1.1  
  15.         mx2  IN  A  1.1.1.2  
  16.         www  IN  A  1.1.1.3  
  17.         web  IN  CNAME  www  
  18.         *   IN  A   1.1.1.5  
  19.             IN A 1.1.1.5  

named-checkconf 命令,检查配置文件语法错误

named-checkzone "ZONE_NAME" /var/named/ZONE_NAME.zone 检查区域解析库

named-checkzone "luyouqiboke.com" /var/named/luyouqiboke.com.zone

区域解析库文件创建好以后,记得修改权限和属组

chmode 640 ZONE_NAME.zone

chown :named ZONE_NAME.zone

dig 命令

格式;dig [@server] [-t type] name

注意;dig测试DNS系统,因此不会检查hosts文件

查询选项;

+[no]trace 跟踪解析过程

+[no]recurce 进行递归解析

host命令

格式:host [-t type] name [server]

nslookup命令

交互式

nslookup>

server IP 设置使用那台DNS进行查询

set q=RR_TYPE

NAME 解析名称

反向解析:

区域名称:网络地址反写.in-addr.arpa.

172.16.1 --> 1.16.172.in-addr.arpa.

1、定义区域

  1. zone "ZONE_NAME" IN {  
  2.     type {master|slave|forward};  
  3.     file "网络地址.zone";  
  4. };  

2、提供区域解析文件

注意;不需要MX A AAAA,以PTR记录为主

如:

  1. $TTL 86400  
  2. $ORIGIN 1.16.172.in-addr.arpa.  
  3. @ IN SOA ns1.luyouqiboke.com. mail.luyouqiboke.com. (  
  4.         20151216001  
  5.         1H  
  6.         5M  
  7.         1w  
  8.         1D  
  9.     )  
  10.     IN  NS  ns1.luyouqiboke.com.  需要全写,不能像正向中省略,前面有ORIGIN定义,省略了就变成了ns1.1.16.172.in-addr.arpa.  
  11.     IN  NS  ns2.luyouqiboke.com.  
  12. 33  IN  PTR  ns1.luyouqiboke.com.  
  13. 34  IN  PTR  ns2.luyouqiboke.com.  
  14. 33  IN  PTR  mail.luyouqiboke.com.  

注意:依然记得要修改权限和属组

测试反向解析:

dig -x IP @SERVER

模拟区域传送

dig -t axfr luyouqiboke.com @172.20.1.33 全量查询

dig -t axfr 1.20.172.in-addr.arpa @172.20.1.33 反向的全量查询

主从复制:

定义从区域服务器的方法

  1. zone "ZONE_NAME" IN {  
  2.     type slave;  
  3.     masters { master_ip; };  
  4.     file "slaves/ZONE_NAME.zone";  
  5. };  

正向的从服务器:/etc/named.rfc1912.zones

  1. zone  "luyouqiboke.com" IN {  
  2.     type slave;  
  3.     master { 172.20.1.33; };  
  4.     file "slaves/luyouqiboke.com.zone";  slaves目录也是相对于/var/named/,slaves目前权限预先定义好了  
  5. };  

注意:在主DNS服务器中一定要有ns2.luyouqiboke.com.(即从服务器)而且得有ns2的A记录,否则DNS有更新记录时,不会通知到各个从DNS服务器更新

主从复制时注意事项:

1)应该为一台独立的名称服务器

2)主服务的区域解析库中必须有NS记录指向从服务器

3)从服务器只需要定义区域,而无需提供解析库文件,同步的解析库文件放置在/var/named/slaves/下

4)主DNS服务器允许从服务器作区域传送

5)主从服务器时间应该同步,可使用ntp工具进行

6)bind版本应保持一致,否则应该从高主低

反向的从服务器:/etc/named/named.rfc1912.zones

  1. zone "1.20.172.in-addr.arpa" IN {  
  2.     type slave;  
  3.     masters { 172.20.1.33; };  
  4.     file "slaves/172.20.1.zone";  
  5. };  

rndc命令

953/TCP

格式:rndc COMMAND

COMMAND:

reload 重新加载配置文件和解析库文件

reload zone 重新加载区域解析库文件

retranster zone 手动启动区域传送过程,而无需增加序列号

notify zone 重新对区域传送发通知

reconfig 重新加载配置文件

querylog 开启或关闭查询日志,一般不开启,除非用来定位错误

trace LEVEL 开启程序debug,调试级别越高,记录越详细,0为不开启,正常情况下不应该开启

status 查看运行状态

=========================实验部分========================

规划:

172.20.1.33和172.20.1.34,其中

1.33为正向解析,从服务器为1.34

1.34为反向解析,从服务器为1.33

1.33正向DNS配置:

yum安装bind过程略

#yum install -y bind 即可

编辑配置文件 #vim /etc/named.conf

修改:

  1. options {  
  2.         listen-on port 53 { 172.20.1.33; 127.0.0.1; };  修改,增加监听本机IP  
  3. //      listen-on-v6 port 53 { ::1; };          注释掉IPV6  
  4.         directory       "/var/named";  
  5.         dump-file       "/var/named/data/cache_dump.db";  
  6.         statistics-file "/var/named/data/named_stats.txt";  
  7.         memstatistics-file "/var/named/data/named_mem_stats.txt";  
  8.         allow-query     { any; };   修改,允许所有查询  
  9.         recursion yes;  
  10.   
  11.         dnssec-enable no;       修改,禁止dnssec  
  12. //      dnssec-validation yes;      注释  
  13. //      dnssec-lookaside auto;      注释  
  14.   
  15.         /* Path to ISC DLV key */   注释  
  16. //      bindkeys-file "/etc/named.iscdlv.key";      注释  
  17.   
  18. //      managed-keys-directory "/var/named/dynamic";    注释  
  19. };  

编辑/etc/named.rfc1912.zones

增加:

  1. zone "linuxtest.com" IN {  
  2.     type master;  
  3.     file "linuxtest.com.zone";  
  4. };  

新建linuxtest.com的解析库

vim /var/named/linuxtest.com.zone

内容:

  1. $TTL 86400  
  2. $ORIGIN linuxtest.com.  
  3. @ IN SOA ns1.linuxtest.com.  wkp.linuxtest.com. (  
  4.         20151217001  
  5.         1H  
  6.         5M  
  7.         1W  
  8.         1D  
  9.         )  
  10.         IN NS ns1.linuxtest.com.  
  11.         IN NS ns2.linuxtest.com.  
  12. ns1     IN A 172.20.1.33  
  13. ns2     IN A 172.20.1.34  
  14. www     IN A 172.20.1.33  
  15. web     IN CNAME www  
  16. mail1   IN A 172.20.1.33  
  17. mail2   IN A 172.20.1.34  
  18. @       IN MX 10 mail1        
  19.         IN MX 20 mail2  

修改区域解析库文件权限

[root@localhost named]# chmod 640 linuxtest.com.zone

[root@localhost named]# chown :named linuxtest.com.zone

至此,主DNS正向解析部分已完成,下面是在1.34上做从DNS

修改主配置文件:/etc/named.conf

  1. options {  
  2.         listen-on port 53 { 172.20.1.34; 127.0.0.1; };  
  3. //      listen-on-v6 port 53 { ::1; };  
  4.         directory       "/var/named";  
  5.         dump-file       "/var/named/data/cache_dump.db";  
  6.         statistics-file "/var/named/data/named_stats.txt";  
  7.         memstatistics-file "/var/named/data/named_mem_stats.txt";  
  8.         allow-query     { any; };  
  9.         recursion yes;  
  10.   
  11.         dnssec-enable no;  
  12. //      dnssec-validation yes;  
  13. //      dnssec-lookaside auto;  
  14.   
  15.         /* Path to ISC DLV key */  
  16. //      bindkeys-file "/etc/named.iscdlv.key";  
  17.   
  18. //      managed-keys-directory "/var/named/dynamic";  
  19. };  

修改配置文件/etc/named.rfc1912.zones

添加:

  1. zone "linuxtest.com" IN {  
  2.     type slave;  
  3.     file "slaves/linuxtest.com.zone";  
  4.     master { 172.20.1.33;  };  
  5. };   

注意:实验时可关闭iptables,或者允许53/TCP,时间也要同步,否则可能会出现不能同步的情况

在1.34上做反向解析的主DNS

修改配置文件:vim /etc/named.rfc1912.zones

添加:

  1. zone "1.20.172.in-addr.arpa" IN {  
  2.     type master;  
  3.     file "172.20.1.zone";  
  4. };  

添加解析库文件/var/named/172.20.1.zone

  1. $TTL 86400  
  2.   
  3. $ORIGIN 1.20.172.in-addr.arpa.  
  4.     @ IN SOA ns2.linuxtest.com. wkp.linuxtest.com. (  
  5.             20151218001  
  6.             1H  
  7.             5M  
  8.             1W  
  9.             1D  
  10.             )  
  11.             IN NS ns1.linuxtest.com.  
  12.             IN NS ns2.linuxtest.com.  
  13.     33      IN PTR ns1.linuxtest.com.  
  14.     34      IN PTR ns2.linuxtest.com.  
  15.     33      IN PTR mail1.linuxtest.com.  
  16.     34      IN PTR mail2.linuxtest.com.  

修改权限以及属组

[root@localhost named]# chown :named 172.20.1.zone

[root@localhost named]# chmod 640 172.20.1.zone

[root@localhost named]# rndc reload

重读配置文件和解析库

测试解析:

  1. [root@localhost named]# dig -x 172.20.1.33 @172.20.1.34  
  2.   
  3. <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> -x 172.20.1.33 @172.20.1.34  
  4. ;; global options: +cmd  
  5. ;; Got answer:  
  6. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22105  
  7. ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2  
  8.   
  9. ;; QUESTION SECTION:  
  10. ;33.1.20.172.in-addr.arpa.INPTR  
  11.   
  12. ;; ANSWER SECTION:  
  13. 33.1.20.172.in-addr.arpa. 86400INPTRns1.linuxtest.com.  
  14. 33.1.20.172.in-addr.arpa. 86400INPTRmail1.linuxtest.com.  
  15.   
  16. ;; AUTHORITY SECTION:  
  17. 1.20.172.in-addr.arpa.86400INNSns2.linuxtest.com.  
  18. 1.20.172.in-addr.arpa.86400INNSns1.linuxtest.com.  
  19.   
  20. ;; ADDITIONAL SECTION:  
  21. ns1.linuxtest.com.86400INA172.20.1.33  
  22. ns2.linuxtest.com.86400INA172.20.1.34  
  23.   
  24. ;; Query time: 1 msec  
  25. ;; SERVER: 172.20.1.34#53(172.20.1.34)  
  26. ;; WHEN: Fri Dec 18 15:15:42 2015  
  27. ;; MSG SIZE  rcvd: 157  

在1.33上做反向解析的从服务器

修改主配置文件:vim /etc/named.rfc1912.zones

  1. zone "1.20.172.in-addr.arpa" {  
  2.     type slave;  
  3.     file "slaves/172.20.1.zone";  
  4.     masters { 172.20.1.34; };  
  5. };  
  6.   
  7. [root@localhost named]# rndc reload  
  8. server reload successful  
  9. [root@localhost named]# tail /var/log/messages  

在日中中可以看到同步的日志消息

[root@localhost named]# ll /var/named/slaves/

总用量 4

-rw-r--r-- 1 named named 456 12月 18 15:20 172.20.1.zone

解析库文件已存在,同步成功。

标签:

给我留言