DNS服务器的配置
原创jiajunfeng15 ©著作权
©著作权归作者所有:来自51CTO博客作者jiajunfeng15的原创作品,请联系作者获取转载授权,否则将追究法律责任
实验环境:CentOS6.0
ServerIP:192.168.0.1
ClientIP:192.168.0.2
Port:53 [相关服务端口可以在/etc/service中查看]
#yum install bind bind-chroot -y
示例1:
具有forwarding的Caching only DNS服务器的配置:
#vim /etc/named.conf
***********************************************************************************
options {
listen-on port 53 { any; }; //监听在这台主机系统上的任何一个网络接口
directory "/var/named"; //数据库(zone file)默认放置的目录
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; }; //针对客户端,任何人都能查询DNS
recursion yes; //将自己视为客户端的一种查询模式
forward only; //让DNS服务器仅进行forward
forwarders { //将DNS查询请求转递给哪些上层DNS服务器
168.95.1.1;
139.175.10.20;
};
};
***********************************************************************************
#/etc/init.d/named start
#netstat -tunlp|grep named (查看53端口)
#tail -n 30 /var/log/messages (每次启动查看下拥有重要信息的日志文件)
测试:
将客户端的/etc/reslov.conf内DNS的IP配置成该服务器IP即可,dig解析出来的正确数据中,SERVER的IP是192.168.0.1即可。
示例2:DNS服务器配置:
1.DNS的环境规划
正解区域:Linux.jjf
反解区域:192.168.0.0/24
DNS服务器自己寻找.(root)
故,需要配置的文件如下:
1>named.conf (主配置文件)
2>named.linux.jjf (主要的linux.jjf的正解文件)
3>named.192.168.0 (主要的192.168.0.0/24的反解文件)
4>named.ca (有bind软件提供的.的正解文件)
2.主配置文件/etc/named.conf的设置
#vim /etc/named.conf
******************************************************************************************************************
options {
listen-on port 53 { any; };
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;
allow-transfer { none; }; //不允许Slave DNS对整个领域的数据进行传送
};
zone "." IN {
type hint;
file "named.ca";
};
zone "linux.jjf" IN { //文件名无限制,便于记忆即可
type master;
file "named.linux.jjf";
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.0";
};
******************************************************************************************************************
3.最上层.(root)数据库文件的设置
#vim /var/named/named.ca
该文件基本不用修改,有BIND软件自己提供。当然,也可以在网站下载最新的数据文件ftp://rs.internic.net/domain/named.root
4.正解数据库文件的设置
注:
1>正解文件一定要有的RR标志:
.关于本区域的基础设置方面:缓存记忆时间(TTL)、域名(ORIGN)等;
.关于Master/Slave的认证方面(SOA);
.关于本区域的域名服务器所在主机名与IP对应(NS、A);
.关于其它正反解相关的资源记录(A、MX、CNAME等).
2>配置正解数据库文件时一定要从首行开始、若首行有空格,则代表延续前一个domain的意思。
3>@这个符号代表Zone(域)的意思。点(.)很重要,因为它代表FQDN而不是仅有hostname。
#vim /var/named/named.linux.jjf
******************************************************************************************************************
;对整个域相关性较高的设置包括NS、A、MX、SOA等标志的设置
$TTL 600
@ IN SOA master.linux.jjf. 287523394.qq.com. (2013010101 3H 15M 1W 1D);
@ IN NS master.linux.jjf. ;DNS服务器名称
master.linux.jjf. IN A 192.168.0.1 ;DNS服务器IP
@ IN MX 10 www.linux.jjf. ;领域名的邮件服务器
;针对192.168.0.1这部主机的所有相关正解设置
www.linux.jjf. IN A 192.168.0.1
centos.linux.jjf. IN CNAME www.linux.jjf.
ftp.linux.jjf. IN CNAME www.linux.jjf.
forum.linux.jjf IN CNAME www.linux.jjf.
;其他几部主机的主机名正解设置
slave.linux.jjf. IN A 192.168.0.2
sust.linux.jjf. IN A 192.168.0.2
client1.linux.jjf. IN A 192.168.0.3
client2 IN A 192.168.0.4 ;简化的写法
;加上了.表示这是个完整的主机名(FQDN),即就是“hostname+domain name”,如果没有加点的话,表示仅为hostname而已。
*******************************************************************************************************************
5.反解数据库文件的设置:
#vim /var/named/named.192.168.0
*******************************************************************************************************************
$TTL 600
@ IN SOA master.linux.jjf. 287523394.qq.com. (2013010101 3H 15M 1W 1D)
@ IN NS master.linux.jjf.
1 IN PTR master.linux.jjf.
1 IN PTR www.linux.jjf.
2 IN PTR slave.linux.jjf.
2 IN PTR sust.linux.jjf.
3 IN PTR client1.linux.jjf.
4 IN PTR client2.linux.jjf.
*******************************************************************************************************************
6.DNS的启动、查看与防火墙
#/etc/init.d/named restart
#tail -n 30 /var/log/messages|grep named
#iptables -A INPUT -p UDP -i $EXTIF --dport 53 --spost 1024:65534 -j ACCEPT
#iptables -A INPUT -p TCP -i $EXTIF --dport 53 --spost 1024:65534 -j ACCEPT
7.测试与更新数据
修改客户端/etc/reslov.conf文件:nameserver 192.168.0.1
在客户端用dig进行检测,正解、反解的结果是否是我们所预想的结果。
更新数据的步骤:
.先针对要更改的那个Zone的数据库文件去做更新,就是加入RR的标志;
.在更改该zone file 的序号(Serial),使其变大,该序号会影响Master/Slave判定是否更新;
.重启named即可。
示例3:Master/Slave DNS协同工作
Master 192.168.0.1中以下更改均在示例2的基础上
#vim /etc/named.conf
********************************************************************************************************************
在域文件选项下添加allow-transfer {192.168.0.2}:
如:
zone "linux.jjf" IN {
type master;
file "named.linux.jjf";
allow-transfer { 192.168.0.2; }; //新添加的项
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.0";
allow-transfer { 192.168.0.2; }; //新添加的项
};
********************************************************************************************************************
#vim /var/named/named.linux.jjf
********************************************************************************************************************
修改:
序列号 2013010101——>2013010102
添加:
@ IN NS slave.linux.jjf.
slave.linux.jjf. IN A 192.168.0.2
********************************************************************************************************************
#vim /var/named/named.192.168.0
********************************************************************************************************************
修改:
序列号2013010103——>2013010102
添加:
@ IN NS slave.linux.jjf.
2 IN PTR slave.linux.jjf.
********************************************************************************************************************
#/etc/init.d/named restart
#tail -n 30 /var/log/messages |grep named
Slave DNS的配置192.168.0.2:
#yum install bind bind-chroot -y
#vim /etc/named.conf
*******************************************************************************************************************
options {
listen-on port 53 { any; };
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;
allow-transfer { none; };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "linux.jjf" IN {
type slave;
file "slaves/named.linux.jjf"; //该数据文件由bind程序自动依据master数据建立,存储于/var/named/slaves/下
masters { 192.168.0.1; };
};
zone "0.168.192.in-addr.arpa" IN {
type slave;
file "slaves/named.192.168.0.1";//该数据文件由bind程序自动依据master数据建立,存储于/var/named/slaves/下
masters { 192.168.0.1; };
};
**********************************************************************************************************************
#/etc/init.d/named restart
#tail -n 30 /var/log/messages
查看日志关于bind的详细信息,slave会自动从master中获取zone file,如果日志提示权限问题,可能会是写入全限问题,修改即可。一般而言,bind会自动处理/var/named/slaves的权限,使之有效执行数据的同步传输。
示例4.DNS服务器的子域授权
1.上层master DNS服务器:只需要添加zone file 的NS与A即可
#vim /var/named/named.linux.jjf
*********************************************************************************************************************
修改:
序号2013010102——>2013010103
添加:
key.linux.jjf. IN NS dns.key.linux.jjf. //将域key.linux.jjf授权给dns.key.linux.jjf
dns.key.linux.jjf. IN A 192.168.0.3
**********************************************************************************************************************
Slave DNS无需改动,应为主机重启bind后,Slave会自己同步。
#/etc/init.d/named restart
#tail -n 30 /var/log/messages|grep named
此时dig dns.key.linux.jjf肯定不通,因为已经将key.linux.jjf域授权给dns.key.linux.jjf,而dns.key.linux.jjf并未设置ok。
2.下层DNS服务器:需要有完整的Zone相关设置 (192.168.0.3)
# yum install bind bind-chroot -y
#vim /etc/named.conf
**********************************************************************************************************************
options {
listen-on port 53 { any; };
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;
allow-transfer { none; };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "key.linux.jjf" IN {
type master;
file "named.key.linux.jjf";
};
*********************************************************************************************************************
#vim /var/named/named.key.linux.jjf
*********************************************************************************************************************
$TTL 600
@ IN SOA dns.key.linux.jjf. 287523394.qq.com. (2013010101 3H 15M 1W 1D)
@ IN NS dns.key.linux.jjf.
dns IN A 192.168.0.3
www IN A 192.168.0.3
@ IN MX 10 www.key.linux.jjf.
********************************************************************************************************************
#/etc/init.d/named restart
#tail -n 30 /var/log/messages|grep named
#iptables -A INPUT -p UDP -i $EXTIF --dport 53 --spost 1024:65534 -j ACCEPT
#iptables -A INPUT -p TCP -i $EXTIF --dport 53 --spost 1024:65534 -j ACCEPT
此时,无论客户端的DNS设置的是哪一个,都可以dig通dns.key.linux.jjf
示例5.依据不同接口给予不同的DNS主机名(通过view功能)
建立名为intranet的名字代表客户端为192.168.0.0/24的来源;
建立名为internet的名字代表客户端为非192.168.0.0/24的来源;
intranet使用的zone file 为前面所建立的zone file,internet使用的zone file则在原本的文件名后面累加inter的扩展名,并修订各标志的结果
#vim /etc/named.conf
*******************************************************************************************************************
options {
listen-on port 53 { any; };
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;
allow-transfer { none; }; //不允许Slave DNS对整个领域的数据进行传送
};
acl intranet { 192.168.0.0/24; };
acl internet { ! 192.168.0.0/24; any; }; //!代表反向选择
view "lan" { //只是个名字而已
match-clients { "intranet"; }; //内网来源
zone "." IN {
type hint;
file "named.ca";
};
zone "linux.jjf" IN {
type master;
file "named.linux.jjf";
allow-transfer { 192.168.0.2; };
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.0";
allow-transfer { 192.168.0.2; };
};
};
view "wan" {
match-clients { "internet"; }; //外网来源
zone "." IN {
type hint;
file "named.ca";
};
zone "linux.jjf" IN {
type master;
file "named.linux.jjf.inter"; //文件名字一定不能相同
allow-transfer { 192.168.0.2; };
};
};
****************************************************************************************************************
#vim /var/named/named.linux.jjf.inter
****************************************************************************************************************
;修改序列号
;修改对应的、外网能解析到的DNS IP (即本机主机名所对应的IP地址)
;对整个域相关性较高的设置包括NS、A、MX、SOA等标志的设置
$TTL 600
@ IN SOA master.linux.jjf. 287523394.qq.com. (2013010103 3H 15M 1W 1D);
@ IN NS master.linux.jjf.
master.linux.jjf. IN A 192.168.1.1
@ IN MX 10 www.linux.jjf.
;针对192.168.0.1这部主机的所有相关正解设置
www.linux.jjf. IN A 192.168.1.1
centos.linux.jjf. IN CNAME www.linux.jjf.
ftp.linux.jjf. IN CNAME www.linux.jjf.
forum.linux.jjf IN CNAME www.linux.jjf.
;其他几部主机的主机名正解设置
slave.linux.jjf. IN A 192.168.1.2
sust.linux.jjf. IN A 192.168.1.2
client1.linux.jjf. IN A 192.168.1.3
client2 IN A 192.168.1.4
****************************************************************************************************************
#/etc/init.d/named restart
查看日志信息无误后、就可以使用了。
示例6.利用RNDC控制DNS服务器(利用密钥进行管理控制)
1.先建立密钥的相关数据
#rndc-confgen
注:
*******************************************************************************************************************
执行rndc-confgen没反应,这是由于rndc-confgen 调用 /dev/random,而/dev/random又通过/proc/interrupts 产生随机数不足,导致
rndc-confgen 一直等待
解决方法1:
手动生成一个 randomfile 文件,如test(向test输入若干数据即可)
# rndc-confgen -r test
解决方法2:
#rndc-confgen -r /dev/urandom
********************************************************************************************************************
2.建立rndc.key文件
#vim /etc/rndc.key
*********************************************************************************************************************
key "rndc-key" {
algorithm hmac-md5;
secret "NocOScUIwsE1LNa0gJZUWA==";
};
*********************************************************************************************************************
3.修改named.conf
*********************************************************************************************************************
放于options之外!
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
*********************************************************************************************************************
4.#/etc/init.d/named restart
利用man rndc 查看相关用法即可
例7.搭建DDNS服务器
DDNS提供机制,让客户端能够自己到DDNS服务器上面实现IP与主机名对应的修改。
1.DDNS Server端的设置
#dnssec-keygen -a [算法] -b [密码长度] -n [类型] 名称
#cd /etc/named/
#dnssec-keygen -a HMAC-MD5 -b 512 -n HOST linux
#vim /etc/named.conf
*****************************************************************************************************
key "linux" {
algorithm hmac-md5;
secret "4m/1Fa1aKfbfoJiLtFA+MSEGZ/97EXe5gXw16eJDBz97+gEM1Y/+t48j BdpasaZ5w2gfy6snO1hzcSiCzAt3ag==";
};
zone "linux.jjf" IN {
type master;
file "named.linux.jjf";
allow-transfer { 192.168.0.2; };
allow-update { key linux; };
};
********************************************************************************************************
#chmod g+w /var/named
#chown named /var/named/named.linux.jjf
#/etc/init.d/named restart
#setsebool -P named_write_master_zones=1
2.客户端的更新
将服务器端产生的两个密钥拷贝到客户端目录中
#nsupdate -k Klinux.+157+52335.private
> server 192.168.0.1
> update delete client2.linux.jjf
> update add client10.linux.jjf 600 A 192.168.0.4
> send
这样客户端就可以随时依据情况更改所授权域的主机名修改。
注:
1.通常DNS是以UDP这个传输速度较快的协议查询的,但是万一没有办法查询到完整的信息时,就会再次以TCP这个协议来重新查询;
2.DNS采用阶梯式管理机制;
3.从主机名查询到IP的流程称为:正解(A);
4.从IP反解析到主机名的流程称为:反解(PTR),只有ISP有权力设置反解;
5.SOA:即就是开始验证的缩写;
6:NS:即名称服务器,一般后面记录的数据是DNS服务器;
7.一台简单的正解DNS服务器,基本上要有两个Zone才行:一个是hint(记录.的Zone)、一个是关于自己域的正解Zone;
8.在网络正常的情况下,客户端永远只访问客户端自己设置的第一台DNS服务器;
9.客户端在使用“dhcp”模式获取IP时,dhcp服务器默认会设置客户端/etc/reslov.conf内DNS的IP,可以使用PEERDNS=no参数取消此功能。
10.在RHEL6中,/etc/init.d/named的启动脚本已经通过mount --bind /var/named /var/named/chroot/var/named进行了目录绑定。
11.cache-only DNS Server这是一种没有自己公开的DNS数据库的服务器,只需要.这个zone file,只有缓存搜寻结果的功能,完全由对外的查询来提供它的数据源,查询服务一律从自己的缓存和.找起,在公司中,一般出于安全考虑建立该服务器于防火墙中。
12.forwarding DNS服务器相对于cache-only DNS Server而言,没有.这个zone file,将原本自己要往.查询的任务丢给上层DNS服务器去处理即可。
13.dig命令输出结果格式如下:
[domain] [ttl] IN [[RR type] [RR data]]
[待查数据] [暂存时间(秒)] IN [[资源类型] [资源内容]]
14.正解文件RR相关信息
[domain] IN [[RR type] [RR data]]
主机名. IN A IPV4的IP地址
主机名. IN AAAA IPV6的IP地址
域名. IN NS 管理这个域名的服务器主机名字
域名. IN SOA 管理这个域名的七个重要参数
域名. IN MX 顺序数字 接收邮件的服务器主机名
主机别名. IN CNAME 实际代表这个主机别名的主机名字
15.SOA后面接的七个参数(按顺序):
Master DNS 服务器主机名
管理员的E-mail、但由于@在zone file中有特别含义,故用.代替@
序号——Serial(数据库文件的序号,序号越大代表数据库文件越新)、不能超过2的32次方,即4 294 967 296
更新频率——Refresh>=2*Retry(秒)、
失败重新尝试时间——Retry(秒)、Refresh+Retry<Expire
失效时间(秒),持续失败该时间后,Slave将不更新数据 Expire>=Retry*10 Expire>=7Days
缓存时间(秒)即就是TTL
16.进行反解时,要注意的就是要将IP反转过来写,并且结尾加上.in-addr.arpa.才行;而后面的主机名尽量使用完整的FQDN,即加上小数点(.)
17.一个IP可以对应多个主机名、一个主机名可以对应多个IP;
18.由INTERNIC负责维护.,全世界共有13台管理.的DNS服务器;
19.对于Master和Slave在网络上的地位是相同的,并不是只有当Master宕机后才用Slave。
20.当外部DNS Server设置错误时,本地的DNS Server可能会包“lame server”的提示,可以在option选项中添加选项,取消这种错误提示
如:
logging {
category lame-servers { null; };
};
21.启动时,日志报错“couldn't add command channel 127.0.0.1#953:not found”通常是由于rndc key设置有问题所致。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
DNS服务器配置
大家看看咯..刚刚弄的.搞了好久咯!!!!就是没有静态IP..用虚拟机做的..
职场 DNS 服务器 休闲 -
配置DNS服务器
配置DNS服务器,详细的实验步骤讲解。(下载Word文档附件)
职场 DNS 服务器 休闲 -
配置缓存DNS服务器和主DNS服务器
使用bind搭建一个简单的缓存DNS服务器和主DNS服务器
DNS 服务 域名解析