首页 > 代码库 > DNS协议原理、安装及主从同步、负载均衡和转发、缓存的详细配置

DNS协议原理、安装及主从同步、负载均衡和转发、缓存的详细配置

DNS(域名系统),用于解析域名和IP地址之间的映射关系

协议使用端口:

        udp 53     正常查询解析情况下使用udp53

        tcp53        当进行主从之间的区域传送时使用tcp53

DNS域的空间划分

技术分享


DNS的查询方式

    递归查询

            当主机A要向DNS服务器发送查询主机D的请求时,服务器返回给A最终结果,这种方式就是递归查询,如果客户端要查找的内容直接在服务器上得到结果,刚给出的答案是一个权威答案,否则就是一个参考答案。

    迭代查询

            NS服务器接收到A的请求后,本地没有D的解析,则会通过以下过程获得

                    1、NS向根域询问D,根域让他去找一级域.com

                    2、NS向一级域.com询问D,.com让他去找二级域.baidu

                    3、NS向二级域.baidu询问D,.baidu返回D的结果,NS获得D的解析

            以上过程则为迭代查询


资源记录

资源记录是DNS数据库中用于答复客户端的条目,资源记录的格式一般如下:

Name     [ttl]    IN    RRtype    Value

RRtype是指资源类型,常见的资源类型有SOA、A、AAAA、CNAME、MX、NS、PTR

资源类型说明
SOA是指定区域的起点,一般包含区域名、区域管理员的电子邮箱以及设置从服务器如何更新区域数据文件的信息
A主机记录,将域名映射为ipv4地址
AAAA主机记录,将域名映射为ipv6地址
CNAME别名记录,可为一个域名其一个别名,达到一个ip地址对应两个域名的效果
MX邮件记录,列出了域中的邮件服务器,需要设置优先级
NS指定负责域中域名解析的服务器
PTR与A记录相反,将IP地址映射成域名

DNS服务器安装和配置

1、安装bind和bind-libs软件包

yum install -y bind        #DNS服务器软件包
yum install -y bind-libs    #bind软件包所使用的库

2、修改配置文件/etc/named/conf

//设置全局配置
options {
        listen-on port 53 { 192.168.10.1; };    //设置DNS服务器监听的ipv4地址和>端口
        listen-on-v6 port 53 { ::1; };          //设置DNS服务器监听的ipv6地址和>端口
        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     { localhost; };         //指定允许进行查询操作的主机
        allow-transfer  {none;};                        //指定允许接受区域传送的从服务器
        allow-recursion {aqlist;};                //指定允许为哪些主机进行递归查询
        
logging {
        channel default_debug {
                file "data/named.run";          //指定日志
                severity dynamic;
        };
};
acl aqlist {                //配置acl
  202.0.0.0/8; 
  221.0.0.0/8; 
};
//设置局部配置内容
zone "." IN {
        type hint;      //指定区域类型
        file "named.ca";        //指定该区域的区域文件名称
};
zone "test.com." IN {
        type master;
        file "test.com.zone";
};
zone "10.168.192.in-addr.arpa" IN {
        type master;
        file "10.168.192.in-addr.local";
};

3、使用named-checkconf命令检查配置文件的语法是否正确         

named-checkconf /etc/named.conf

4、编辑正向区域文件

vim /var/named/test.com.zone

$TTL 38400
@       IN      SOA     ns.test.com.    admin.test.com. (
                        2016082601      #序列号,不能超过10位
                        10800           #指定从服务器每隔多久到主服务器上刷新一次
                        3600            #刷新失败时,多久重试
                        604800          #主服务器down后,从服务器能继续工作多久
                        38400           #否定答案的ttl
)
@       IN      NS      ns.test.com.
ns      IN      A       192.168.10.1
@       IN      MX  90  mail.test.com.
mail    IN      A       192.168.10.3

5、编辑反向区域文件

vim /var/named/10.168.192.in-addr.local

$TTL 38400
@       IN      SOA     ns.test.com.    admin.test.com. (
                        2016082601
                        10800
                        3600
                        604800
                        38400
)
@       IN      NS      ns.test.com.
1       IN      PTR     ns.test.com.
3       IN      PTR     mail.test.com.

6、使用named-checkzone命令对区域文件进行检查

    语法格式:named-checkzone 域名 区域文件

named-checkzone test.com /var/named/test.com.zone

7、启动服务

service named start


DNS实现后端服务器的负载均衡

    在DNS服务器上将一个域名映射成为多个IP地址,客户端请求解析时,DNS服务器会随机选取一个地址回复客户端,从而实现了简单的负载均衡功能


DNS主从同步

    从服务器复制主服务器的区域文件,与主服务器一起提供地址解析功能;从服务器上的资源记录只能读取,不能修改和删除。

    配置过程:

        从服务器端:

vim /etc/named.conf

zone "test.com." IN {
        type slave;
        masters { 192.168.10.1; };
        file "slave/test.com.zone";
};
zone "10.168.192.in-addr.arpa" IN {
        type slave;
        masters { 192.168.10.1; };
        file "slave/10.168.192.in-addr.local";
};

        主服务器端:

   1、 为从服务器添加一条NS记录和对应的A或PTR记录。

    2、编辑/etc/named.conf

    allow-transfer{ 192.168.10.2; };


 转发DNS服务器

服务器收到客户端的解析请求后,将请求转发给其他DNS服务器进行解析,称为转发

转发服务器分为完全转发和条件转发

完全转发:服务器会将全部的请求都转发给其他服务器进行解析

    编辑/etc/named.conf

   forwarders { 192.168.0.30; };    \\转发给192.168.0.30进行解析
   forward only    \\only表示转发前不进行本地查询;first表示转发前先进行本地查询


条件转发:当客户端请求特定域的解析时才进行转发查询

    编辑/etc/named.conf

    zone “lzs.com" IN {            \\对lzs.com域的查询请求进行转发
            type forward;        \\类型为forward
            forwarders { 192.168.0.30; };    \\转发给192.168.0.30进行解析
            };


虚拟子域

    将父域和子域都配置在同一个服务器上

        配置文件不变,修改区域文件即可

vim /var/named/test.com.zone
$TTL 38400
$ORIGIN test.com.
@       IN      SOA     ns.test.com.    admin.test.com. (
                        2016082601      
                        10800           
                        3600            
                        604800          
                        38400           
)
@       IN      NS      ns.test.com.
ns      IN      A       192.168.10.1
@       IN      MX  90  mail.test.com.
mail    IN      A       192.168.10.3

$ORIGIN lzs.test.com.
@        IN    NS        ns.lzs.test.com.
ns        IN    A        192.138.20.2


缓存DNS服务器

本地不设置任何DNS信息,只执行查询和缓存的操作,当客户端查询时,如果有,则直接返回结果,提高dns的解析速度,减少网络流量。

    编辑/etc/named.conf

datasize    100M;    \\启用这个选项即可,局部配置都不用配


注意要点:

    1、配置文件中每个语句都要以;结尾

    2、DNS服务器的地址必须是静态地址

    3、编辑区域文件时,域名最后面要以“.”结尾,而且在SOA记录中管理员电子邮箱和”(“之间有空格

本文出自 “90后” 博客,请务必保留此出处http://lzs66.blog.51cto.com/9607068/1843093

DNS协议原理、安装及主从同步、负载均衡和转发、缓存的详细配置