扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
DNS是应用层的协议,默认使用UDP的53端口,也会用到TCP的53端口。
成都创新互联公司公司2013年成立,是专业互联网技术服务公司,拥有项目网站制作、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元孟州做网站,已为上家服务,为孟州各地企业和个人服务,联系电话:18982081108
DNS名称解析方式:
名称 --> IP:正向解析
第一段这种方式叫递归查询,只发出去一次请求,就给它返回答案;第二段这种方式就迭代查询,要发出多次请求,需要自己查询不同域名,最后才返回答案;这就是DNS的查询类型。
一般内网递归,外网迭代。
IP --> 名称:反向解析
每一层服务器都有各自的数据库,来存储各自负责的网段,这与正向解析的数据库是两个各自独立的数据库。
一次完整的查询请求经过的流程:
Client --> hosts文件 --> DNS Local Cache --> DNS Server (recursion) --> 分两种情况:
(1)自己负责解析的域:直接查询数据库并返回答案
(2)不是自己负责解析域:Server Cache --> iteration(迭代)
主-辅DNS服务器:
主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行
从DNS服务器:从主DNS服务器那里或其它的从DNS服务器那里“复制”一份解析库;但只能进行读操作
在linux系统上实现DNS服务的程序是bind,安装bind程序,而bind程序安装后运行的进程名为named;
]# yum install bind
主配置文件:/etc/named.conf、/etc/named.rfc1912.zones
解析库文件/var/named/目录下,以区域名字命名:ZONE_NAME.zone
正向解析库文件:/var/named/named.localhost
反向解析库文件:/var/named/named.loopback
注意:根区域解析库文件named.ca、正向解析库文件named.localhost、反向解析库文件named.loopback都不是程序提供的,而是rpm包制作者提供的。
配置主DNS服务器
正向区域:
第一步:定义正向区域zone
]# vim /etc/named.con
修改内容:
listen-on port 53 { 127.0.0.1; 172.18.252.23; };
dnssec-enable no
//allow-query { localhost; };
添加本地主机地址;把dnssec都改为no;关闭仅允许本地查询即加//注释:
]# vim /etc/named.rfc1912.zones
添加内容:
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
};
注意:在区域中定义的这个file指明的magedu.com.zone区域数据库文件还不存在,需要自己创建,如果在上面配置文件的file中定义的是相对路径,默认为在/var/named/目录下创建,且这个目录默认是不存在的。
第二步:建立正向区域解析数据库文件(主要记录为A或AAAA记录)
一般默认在/var/named目录下建立,为magedu.com.zone区域创建编辑一个正向区域数据库文件,创建正向区域数据库文件,自己取名为magedu.com.zone。
区域数据库文件除了宏定义外,都是资源记录,第一条必须为soa记录。
]# vim /var/named/magedu.com.zone
$TTL 3600:单位是秒;
$ORIGIN magedu.com.
@ IN SOA ns1.magedu.com. 403868144.qq.com. (
2016041001
1H
10M
3D
1D )
IN NS ns1
IN NS ns2
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 172.18.11.2
ns2 IN A 172.18.11.3
mx1 IN A 172.18.11.4
mx2 IN A 172.18.11.5
www IN A 172.18.11.2
web IN CNAME www
bbs IN A 172.18.11.2
第三步:修改正向区域数据库文件的权限为其它不可读,属组为named
]# chown :named magedu.com.zone
]# chmod o= magedu.com.zone
第四步:语法检查
]# named-checkconf
]# named-checkzone magedu.com /var/named/magedu.com.zone
查看区域信息
]# rndc status
注意:正向区域名一定要与在/etc/named.rfc1912.zones文件中的zone定义的正向区域名一致;但zone中的区域名后的.可省略。
第五步:让服务器重载配置文件和区域数据文件
]# rndc reload
第六步:测试DNS服务器是否能解析
]# dig -t A www.magedu.com @172.18.250.131
]# host -t A bbs.magedu.com @172.18.11.2
]# dig -t NS magedu.com @172.18.11.2
]# host -t MX magedu.com @172.18.11.2
配置反向区域,配置步骤同配置正向解析区域相同
第一步:定义反向区域
]# vim /etc/named.rfc1912.zones
zone "11.18.172.in-addr.arpa" IN {
type master;
file "172.18.11.zone";
};
第二步:定义反向区域解析库文件(主要记录为PTR)
一般默认在/var/named目录下建立;反向区域解析库文件自己取名为172.18.250.zone。
]# vim 172.18.11.zone
$TTL 3600
$ORIGIN 250.18.172.in-addr.arpa.设置自动补上完整IP的内容;
@ IN SOA ns1.magedu.com. 403868144.qq.com. (
2016041001
1H
10M
3D
12H )
IN NS ns1.magedu.com.
2 IN PTR ns1.magedu.com.
3 IN PTR ns2.magedu.com.
4 IN PTR mx1.magedu.com.
5 IN PTR mx2.magedu.com.
2 IN PTR www.magedu.com.
2 IN PTR bbs.magedu.com.
2 IN PTR bbs.magedu.com.
第三步:修改反向区域数据库文件的权限为其它不可读,属组为named
]# chgrp named 172.18.11.2.zone
]# chmod o= 172.18.11.2.zone
第四步:检查语法
]# named-checkconf
]# named-checkzone 11.18.172.in-addr.arpa /var/named/172.18.11.zone
注意:反向区域名一定要与在/etc/named.rfc1912.zones文件中的zone定义的反向区域名一致;但zone中的区域名后的.可省略。
第五步:让服务器重载配置文件和区域数据文件
]# rndc reload
第六步:测试DNS服务器是否能反向解析
]# dig -x 172.18.11.2
以上配置为主DNS服务器配置过程。
配置从DNS服务器:
首先配置正向区域的从,再配置反向区域的从。
在从服务器上配置:
第一步:定义从区域
]# vim /etc/named.conf
listen-on port 53 { 127.0.0.1; 172.18.252.23; };
dnssec-enable no
//allow-query { localhost; };
第二步:配置从服务器为正向区域的DNS服务器
]# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type slave;
file "slaves/magedu.com.zone";
masters { 172.18.11.2; }
};
第三步:检查语法
]# named-checkconf
第四步:在主服务器上配置
]# vim /var/named/magedu.com.zone
ns2 IN A 172.18.11.3
提示:添加一条ns记录,例如可以为NS2,这个名字和从服务器的自身主机名没关系,但是NS2要有一条A记录,指向从服务器主机即172.18.11.3是从服务器的IP地址;这条记录必须得有。
第五步:检查主服务器区域文件语法
]# named-checkzone magedu.com /var/named/magedu.com.zone
第六步:重载配置文件
]# rndc reload
第七步:在从服务器上操作,重载配置文件
]# rndc reload
测试从DNS服务器正向解析
]# dig -t A www.magedu.com @172.18.11.3
验证从服务器能同步到正向解析数据库文件
在主服务器区域文件中新增一条pop3的记录,并递增序列号;
2016041003:系列号递增;
pop3 IN A 172.18.11.6:添加pop3的A记录;
]# rndc reload
在从服务器上查看是否收到更新的区域数据库文件
]# dig -t A pop3.magedu.com @172.18.11.3
配置从服务器为反向区域的DNS服务器
第一步:在从服务器上主配置文件中添加反向区域
]# vim /etc/named.rfc1912.zones
zone "11.18.172.in-addr.arpa" IN {
type slave;
file "slaves/172.18.11.zone";
masters { 172.18.11.2; };
};
第二步:检查主配置文件语法
]# named-checkconf
第三步:在主服务器的反向区域数据库文件中要确保有一条NS记录必须要有,还可以有ns对应的ptr记录
]# vim /var/named/172.18.11.zone
2016041002
IN NS ns2.magedu.com.
3 IN PTR ns2.magedu.com.
第四步:检查反向区域文件语法
]# named-checkzone 11.18.172.in-addr.arpa /var/named/172.18.11.zone
第五步:重载
]# rndc reload
第六步:从服务器重载
]# rndc reload
查看从服务器是否同步到反向解析数据库文件
]# ls /var/named/slaves
测试从DNS服务器反解析
]# dig -x 172.18.11.2 @172.18.11.3
子域授权方法:
第一步:在父域的主DNS服务器上的正向区域数据库文件/var/named/magedu.com.zone上授权子域
]# vim /var/named/magedu.com.zone
2016041004
ops IN NS ns1.ops
ns1.ops IN A 172.18.11.4
第二步:重载
]# rndc reload
在子域服务器(172.18.11.4)上操作
第一步:编辑主配置文件
]# vim /etc/named.conf
listen-on port 53 { 127.0.0.1; 172.18.11.4; };
dnssec-enable no
//allow-query { localhost; };
第二步:启动named程序
]# systemctl start named.service
第三步:配置172.18.11.4的服务器为ops.magedu.com子域的主服务器
]# vim /etc/named.rfc1912.zones
zone "ops.magedu.com" IN {
type master;
file "ops.magedu.com.zone";
};
第四步:在var/named/目录下创建file中指明的ops.magedu.com.zone正向区域数据库文件
]# vim var/named/ops.magedu.zone
$TTL 3600
$ORIGIN ops.magedu.com.
@ IN SOA ns1.ops.magedu.com. 403868144.qq.com. (
2016041101
1H
10M
1D
2H )
IN NS ns1
ns1 IN A 172.18.11.4
www IN A 172.18.11.4
第五步:修改正向区域数据库文件权限为其它没有写权限,属组为named
]# chmod o= ops.magedu.zone
]# chgrp named ops.magedu.zone
第六步:语法检查
]# named-checkzone ops.magedu.com ops.magedu.com.zone
第七步:重载
]# rndc reload
第八步:测试正向解析
]# dig -t A www.ops.magedu.com @172.18.11.4
在子域服务器上定义转发区域:
第一步:编辑主配置文件
]# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type forward;
forward only;
forwaders { 172.18.11.2; 172.18.11.3; };
};
第二步:检查语法
]# named-checkconf
第三步:重载
]# rndc reload
第四步:测试
在父域服务器上解析子域
]# dig -t A www.ops.magedu.com @172.18.11.2
在子域服务上解析父域
]# dig -t A www.magedu.com @172.18.11.4
在子域服务器上定义全局转发:
第一步:编辑主配置文件
]# vim /etc/named.conf
在options段编辑:
forward only;
forwarders { 172.18.11.2; };
第二步:重载
]# rndc reload
第三步:测试baidu
]# dig -t A www.baidu.com @172.18.11.4
安全相关的配置
在子域服务器上,应该仅设定为允许从服务器区域传送
在主服务器上配置:仅允许从服务器区域传送;访问控制列表allow-transfer
]# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
allow-transfer { slaves; };
};
在主服务器上配置访问控制列表:
编辑/etc/named.conf配置文件,在options段前添加slaves访问控制列表:
]# vim /etc/named.conf
acl slaves {
172.18.11.3;
127.0.0.1;
};
检查语法:
]# named-checkconf
重载:
]# rndc reload
在非从服务器上测试:
]# dig -t axfr magedu.com @172.18.11.2
设置成功。
在从服务器上测试区域传送:
]# dig -t axfr magedu.com @172.18.11.2
在主服务器上测试:
]# dig -t axfr magedu.com @172.18.11.2
]# dig -t axfr magedu.com @127.0.0.1
均显示区域传送失败;因为,使用本机172.18.11.2这个地址,在访问控制列表中没有定义所以不能传送;而127.0.0.1这个地址即使在访问控制列表中定义了,但因为没有在options段定义监听的地址,所以也不能进行区域传送;
修改主服务器配置文件/etc/named.conf,
]# vim /etc/named.conf
添加监听127.0.0.1:
listen-on port 53 { 127.0.0.1; 172.18.11.2; };
重启服务:
]# systemctl restart named.service
即可;
配置访问控制列表中的递归,仅允许为本地客户端做递归
修改主服务器配置文件/etc/named.conf,添加递归访问控制列表;
]# vim /etc/named.conf
添加:
acl mynet {
127.0.0.0/8;
};
仅允许本地127网段做递归查询;
(把recursion yes;改为:)allow-recursion { mynet; };
重载:
]# rndc reload
因此,使用其它主机做递归都拒绝,如使用子域服务器递归查询baidu
]# dig -t A www.baidu.com @172.18.11.4
递归查询失败;
当在主服务器配置文件/etc/named.conf,添加172.18.11.4到递归访问控制列表即可实现递归;
]# vim /etc/named.conf
acl mynet {
172.18.11.4/16;
127.0.0.0/8;
};
重载:
]# rndc reload
此时,使用子域服务器递归查询baidu;
]# dig -t A www.baidu.com @172.18.11.4
成功递归;
对于从服务器,也要修改主配置文件/etc/named.rfc1912.zones,设定区域传送和递归查询的访问控制列表;
]# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type slave;
file "slaves/magedu.com.zone";
masters { 172.18.11.2; };
allow-transfer { none; };
allow-update { none; }; 禁止进程动态更新,跟区域传送没关系;
};
zone "11.18.172.in-addr.arpa" IN {
type slave;
file "slaves/172.18.11.zone";
masters { 172.18.11.2; };
allow-transfer { none; };
allow-update { none; };
};
在子域服务器上测试是否能通过从服务器对magedu.com域进行区域传送;
]# dig -t axfr magedu.com @172.18.11.3
显示失败;
]# dig -t axfr ops.magedu.com @172.18.11.4:子域可以为自己进行传送区域;因为子域没有做访问控制;
正常情况下,每一个域名服务器,只要没有从服务器,allow-transfer都应该是none,有从服务器,allow-transfer应该仅指向从服务器;而且每一个区域都应该是allow-update设为none,除非使用DDNS。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流