【工作】Linux 用于内网主机名和IP解析的DNS主从集群服务部署

写在前面:

之前研发代码程序中调用的服务器地址都是写的主机名,通过配置/etc/hosts来做解析,但是每次新增机器都需要在每台机器中添加主机名和IP的解析,不但效率很低,忘记添加或者写错解析,还会造成一些意想不到的问题。

准备工作:

1.运行环境:

OS: CentOS release 6.5
主DNS:192.168.162.43
从DNS:192.168.162.44

2.临时关闭selinux

# setenforce 0

3.添加防火墙规则

# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 953 -j ACCEPT
# service iptables restart

一.主从Server部署DNS服务

# yum install bind -y

二.配置主DNS

1.主配置文件

# 修改之前先备份一遍
# cp /etc/named.conf /etc/named.conf.bak
# vim /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
 
options {
  #监听在主机的53端口上。any代表监听所有的主机
    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";
  #谁可以对我的DNS服务器提出查询请求。any代表任何人
    allow-query     { any; }; 
    recursion yes;
    dnssec-enable yes;
    dnssec-validation yes;
 
    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";
 
    managed-keys-directory "/var/named/dynamic";
};
 
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
 
zone "." IN {
    type hint;
    file "named.ca";
};
 
zone "100credit.cn" IN {
    #设置为主DNS服务器模式
      type master;
    #该域名的配置文件位置
      file "/var/named/100credit.cn.zone";
    #从DNS服务器访问权限
      allow-transfer { 192.168.162.44; };
    #谁可以对这个域名提出查询请求
      allow-query { any; };
    #允许自动更新
      allow-update { none; };
};
 
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

2.域名的配置文件

# vim /var/named/100credit.cn.zone
$TTL 600
@       IN SOA          100credit.cn. root (
                                        1       ; serial
                                        2M      ; refresh
                                        2M      ; retry
                                        1D      ; expire
                                        1D )     ; minimum 
 
@         IN  NS  dns.100credit.cn.
dns        IN  A   192.168.162.43
m162p43    IN  A   192.168.162.43
m162p44    IN  A   192.168.162.44
分析:
$TTL:  指正向解析的结果在缓存保存的周期(服务器决定客户端得到的解析结束在缓存保存的周期)
@:代表当前区域(100credit.cn)
SOA:  初始的设置记录
100credit.cn.:  代表DNS服务器的完整域名;
Root:  这里可写管理员的邮箱
Serial:  序列号,这个值是为了主辅区域文件同步的一个比较值,当主的serial值大于辅的时候这时就要进行主辅间的同步了。
refresh:  刷新;主服务器告诉辅服务器每2分钟来找我同步数据。
Retry:  当上面的serial refresh同步方法都无效的时候辅助服务器会每隔2分钟向主发出同步请求;
Expiry:  期限;(连续每隔15分钟发送请求如果一天后没有响应则不在请求,)
Minimum:  TTL值;
NS:  域名服务器记录又称为NS记录,在区域文件中用于设置当前域的DNS服务器名称
A:  地址记录又称为A记录,用于设置主机名到IP地址的对应记录;

3.启动主DNS并加入自启动

# /etc/init.d/named start
# chkconfig named on

三.配置从DNS:

1.主配置文件

# vim /etc/named.conf
基本上同主服务器的named.conf,不同的配置如下:
zone "100credit.cn" IN {
    #设置为从DNS服务器模式
      type slave;
    #不需要创建,直接是从主DNS服务器上同步过来
      file "slaves/100credit.cn.zone";
    #指定主DNS服务器
      masters { 192.168.162.43; };
      allow-query { any; };
      allow-update { none; };
};

2.启动从DNS并加入自启动

# /etc/init.d/named start
# chkconfig named on

三、客户端配置验证

# cat /etc/resolv.conf
domain 100credit.cn
search 100credit.cn
nameserver 192.168.162.43
nameserver 192.168.162.44 
# ping m162p44
PING m162p44.100credit.cn (192.168.162.44) 56(84) bytes of data.
64 bytes from 192.168.162.44 (192.168.162.44): icmp_seq=1 ttl=64 time=0.695 ms
64 bytes from 192.168.162.44 (192.168.162.44): icmp_seq=2 ttl=64 time=0.724 ms
64 bytes from 192.168.162.44 (192.168.162.44): icmp_seq=3 ttl=64 time=0.726 ms

四、添加新的主机名解析:

主DNS上操作如下:
# vim /var/named/100credit.cn.zone
$TTL 600
@       IN SOA          100credit.cn. root (
                                        2       ; serial
                                        2M      ; refresh
                                        2M      ; retry
                                        1D      ; expire
                                        1D )     ; minimum 
 
@         IN  NS  dns.100credit.cn.
dns        IN  A   192.168.162.43
m162p43    IN  A   192.168.162.43
m162p44    IN  A   192.168.162.44
m162p45    IN  A   192.168.162.45
重点:主要是更改serial的值,每次添加新的解析都需要更改此值,务必确保此值比从DNS上的值大,这样从DNS才会自动更新文件,同时refresh表示从DNS多长时间更新,此处我设置的是2分钟后自动同步。
 
# service named reload
如上操作后,从DNS两分钟后会自动从主DNS上同步新的正反向解析文件,同时无论主从DNS哪个宕机都不会影响客户端正常解析,此处不再贴代码,自己搭建验证即可。
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享