写在前面:
之前研发代码程序中调用的服务器地址都是写的主机名,通过配置/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