DNS转发功能
1.
options {
forwarders {
192.168.1.110;
192.168.1.112;
};
forward first;
};
forwarders
forwarders {
DNS_IP_1;
DNS_IP_2;
};
forwarders指令用于设置将DNS请求转发到哪个服务器,可以指定多个服务器的IP地址。
forward
forward first | only;
forward指令用于设置DNS转发的工作方式:
forward first设置优先使用forwarders DNS服务器做域名解析,如果查询不到再使用本地DNS服务器做域名解析。
forward only设置只使用forwarders DNS服务器做域名解析,如果查询不到则返回DNS客户端查询失败。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1、 DNS系统的作用
1.
2.
2、 DNS的解析方式
1.
–
2.
–
3、 DNS服务器的类型(角色)
1.
–
–
–
2.
–
–
3.
–
–
4、 DNS的域名空间
?
5、 DNS服务器基础
1、
–
–
–
–
–
–
2、
–
–
–
3、
–
4、
–
6、 DNS服务器的安装及配置
1、
a)
rpm –ivh bind-9.3.4-10.P1.el5
rpm –ivh bind-chroot-9.3.4-10.P1.el5
rpm –ivh caching-nameserver-9.3.4-10.P1.el5 //将DNS配置文件放到/var/named目录
b)
1、
vi /var/named/chroot/etc/named.conf
options {
};
zone "." IN {
};
zone "zx.com" IN {
};
zone "2.168.192.in-addr.arpa" IN {
};
2、
vi /var/named/chroot/var/named/zx.com.zx
$TTL
@
ns1
www
3、
vi /var/named/chroot/var/named/zx.com.fx
$TTL
@
100
101
4、
service named start
service iptables stop
setenforce 0
2、
vi /var/named/chroot/etc/named.conf
options {
};
zone "." IN {
};
zone "zx.com" IN {
allow-transfer { 192.168.2.101; };
file "zx.com.zx";
};
zone "2.168.192.in-addr.arpa" IN {
allow-transfer { 192.168.2.101; };
};
3)编辑解析记录文件
正向解析记录:
vi /var/named/chroot/var/named/zx.com.zx
$TTL
@
ns1
ns2
www
ftp
mail
反向解析记录:
vi /var/named/chroot/var/named/zx.com.fx
$TTL
@
100
101
101
100
100
2、从域名服务器
1、
vi /var/named/chroot/etc/named.conf
options {
};
zone "." IN {
};
zone "zx.com" IN {
};
zone "2.168.192.in-addr.arpa" IN {
};
2、
vi /var/named/chroot/var/named/slaves/zx.com.zx
$TTL
@
3、
vi /var/named/chroot/var/named/zx.com.fx
$TTL
@
分离解析域名服务器
针对来自局域网客户机的区域数据文件
view “视图1” {
};
针对来自其他任意地址客户机的区域数据文件
view “视图2” {
};
配置实例:
view "LAN" {
};
view "WAN" {
};
DNS转发功能
1.
options {
forwarders {
192.168.1.110;
192.168.1.112;
};
forward first;
};
forwarders
forwarders {
DNS_IP_1;
DNS_IP_2;
};
forwarders指令用于设置将DNS请求转发到哪个服务器,可以指定多个服务器的IP地址。
forward
forward first | only;
forward指令用于设置DNS转发的工作方式:
forward first设置优先使用forwarders DNS服务器做域名解析,如果查询不到再使用本地DNS服务器做域名解析。
forward only设置只使用forwarders DNS服务器做域名解析,如果查询不到则返回DNS客户端查询失败。
7、 检测配置文件命令
1、
–
[root@localhost etc]# named-checkconf named.conf
named-checkzone zx.com zx.com.zone
zone zx.com/IN: loaded serial 2009
OK
2、
Nslookup
DNS:domain name system
递归查询:进行一次查询就能得到最终结果
迭代查询:需要进行多次查询,才能得到最终结果
互联网上的应用方式一般是:本地递归,互联网部分迭代。
所有DNS都不知道其他DNS在哪里,但都知道根在哪里,本地主机向本地DNS递归,本地DNS出去迭代查询后向本地返回最终结果。
DNS常见的记录类型:
A记录: 由主机名解析IP地址
PTR记录:由IP地址解析主机名
NS记录: 用来指定本地的域名服务器(有主,有辅)
MX记录: 用来指定本地的邮件服务器
CNAME: 用来指定一个主机的别名
SOA: 起始授权记录,用来说明本域的主域名服务器
辅助域名服务器每隔一段时间要去主(或者其他辅助)域名服务器上面查询更新,以保证数据的一致性,
这个过程叫做区域传送,这个过程使用TCP协议,53号端口。为了保证数据的一致性,如果主服务器有更
新,也会及时告知从服务器过来同步。
区域传送有两种类型:
增量区域传送
完全区域传送
DNS服务器类型:1.主<-->从 2.缓存服务器 3.转发器
关于查询优先级:查找本地hosts文件->本地DNS缓存->本地DNS缓存->本地DNS区域文件->.....
$TTL 86400
@ IN SOA localhost. root.localhost. (在DNS配置文件中@代表本域有特殊意义,所以这里管理员邮箱以“.”代替并且后面跟一个“.”,固定格式。
1997022700 ; Serial 每次更新后服务器都将此号码更改,从服务器若查询到该号码改变就想服务器请求更新。
28800 ; Refresh 从服务器的更新时间
14400 ; Retry 从服务器若更新失败后的重试时间
3600000 ; Expire 重试多久后就宣告失败不再更新
86400 ) ; Minimum 若主服务器找不到对应的请求,允许客户端再次查询的时间
DNS转发:默认DNS服务器会为1000个client端做递归解析。
在配置文件中声明 recursion no完全关闭递归转发功能
声明为某个网段或者某个IP做递归 allow-recursion {IP/Net;}
在主配置文件中声明版本号 vsersion " ",防止别人通过dig命令来获取bind的版本信息搞破坏
完全转发:当DNS服务器收到查询请求的时候会先看看是不是查询本域的信息,本地缓存是否有数据,如果不能使用本地数据解析DNS会将查询请求发送给转发器,
此时是以递归查询的方式发送给转发器的,而在标准的DNS解析中,DNS服务器将以迭代查询的形式发送给另一个DNS服务器。
options {
forward only|first;
forwardsers {IP;};
}
only:仅仅依靠转发器来递归解析,如果转发器出现问题,就不解析了
first:先请求转发器,让其代为转发(请转发器做递归),如果转发器无响应就自己找根,此时开始标准的DNS解析也就是迭代查询。
部分转发(只转发解析某个域的DNS):假设有两个域,a.com和b.com,a.com这个域是经过授权(向上级注册,也就是.com知道他的存在)的,而b.com这个域没有经过授权,此时如果a.com中的一台主机要访问www.b.com就会出现访问不了,但是如果a.com知道b.com这个域的DNS主机是谁,即便b.com没有经过授权,这时a.com的DNS可以设一个部分转发,将本域所有要求解析b.com域的请求全部都发给b.com这个域的DNS主机就可以了。
部分转发一般用于访问未经授权的DNS域。配置格式
zone “b.com” IN {
type forward;
forwarders {IP;};
}
子域授权:
在父域的区域配置文件中以NS记录声明子域以及管理这个子域的DNS服务器(主和辅都声明了)
这里假设a.com这个域下面有一个子域net.a.com
配置很简单只需要在父域的区域配置文件中添加一条
net.a.com IN NS ns1.net.a.com
ns1.net.a.com IN A 1.1.1.1
设置允许进行DNS查询的主机
1、直接定义
在主配置文件中allow-query { 192.168.1.0/24; }; 定义允许192.168.1.0这个网段的主机进行DNS查询
2、使用acl
在options上面定义一个acl
acl clients {172.16.0.0/16;192.168.1.0/24;};
allow-query { clients; }; 这样就可以了同时允许这两个网段进行查询
智能DNS(DNS View):
我们知道网通和电信之间进行访问速度比较慢,现在架设服务器一般都是双线的,我们经过DNS的设置,让DNS自
动识别客户端IP是网通的还是电信的,网通就访问网通的服务器电信就访问电信的服务器。
这里我们假设网通属于192.168.1.0/24这个网段,电信属于172.16.0.0/16这个网段的
首先定义访问控制
acl telecom { 172.16.0.0/24; };
acl unicom { 192.168.0.0/24; };
接下来针对两种不同的客户IP范围定义两个DNS视图
view TELNET {
match-clients { telecom; };
match-destinations { any; };
recursion no;
include "/etc/named.telecom.zones";
};
view UNINET {
match-clients { unicom; };
match-destinations { any; };
recursion no;
include "/etc/named.unicom.zones";
};
这里假设我的DNS域为test.com,以下配置文件分别为:
vi named.telecom.zones(此文件由named.rfc1912.zones复制而来,以下是在原文件基础之上添加,)
zone "test.com" IN {
type master;
file "test.com.zone.tele";
allow-update { none; };
};
zone "0.16.172.in-addr.arpa" IN {
type master;
file "172.16.0.rev";
allow-update { none; };
};
vi named.unicom.zones(此文件同上,如果手动新建务必保证文件中有根域以及localhost域)
zone "test.com" IN {
type master;
file "test.com.zone.uni";
allow-update { none; };
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "192.168.0.rev";
allow-update { none; };
};
做完之后进行语法检查named-checkconf,named-checkzone
重启测试(我本机配置两个IP 192.168.0.162和172.16.0.162)
dig -t A www.test.com @172.16.0.162使用172.16.0.162作为DNS服务器来解析
dig -t A www.test.com @192.168.0.162使用192.168.0.162作为DNS服务器来解析
---------------------------------------------------------
转发服务器:
转发服务器接受查询请求,但并不直接提供DNS解析,而是将所有查询请求发送至另外的DNS服务器,查询结果返回后保存至缓存。
转发服务器可以分为一下两种类型:
1.完全转发服务器:
DNS服务器配置为完全转发,会将所有区域的DNS查询请求发送至其他DNS服务器。修改named.conf文件的options字段实现其功能。
options {
};
仅仅是本机DNS中不存在的域名才转发!
所谓的 forwarder,就是当某一台 NS 主机遇到非本机负责的 zone ( slave zone 也属于本机负责的范围) 查询请求的时候,将不直接向 "." zone 查询,而把请求转交给指定的 forwarder (一台或多台) 主机代为查询。我们知道,当DNS服务器接到客户端主机的查询请求时,首先会检查这个查询是否属于本机管辖,否则将转向 "." zone 再逐级的查询下去,最后再把查询结果告诉客户端。在这个过程之中,DNS服务器还会将查询到的结果存放到缓存中。只要缓存中的 TTL 没过期,在下次遇到同样查询的时候,就可以直接将结果响应给客户端,而无需再重复上次的查询流程。如果DNS服务器上指定了forwarder,那这个DNS发现缓存中没有记录时,将不向 "." 查询,而是向 forwarder 送出同样的请求(转发),然后等待查询结果,即把逐级往下查询这个耗费精力的动作,交给 forwarder 负责。但无论这个结果是自己直接查询得来的,还是 forwarder 送回来的,DNS服务器都会保存一份数据在缓存中。这样,以后的相同查询就快多了,这对于DNS所服务的客户端而言查询效率会提高很多。
当forwarder没有返回答案时,奔DNS会自己去远端请求。但是如果配置了forward only;
2.条件转发服务器:
该服务器类型只转发指定域的DNS查询请求,修改named.conf文件,添加转发区域的设置实现其功能。
zone "test.com" {
};
注意:
1.转发服务器的查询模式必须允许递归查询,否则无法正确完成转发
2.转发服务器列表如果是多个DNS服务器,则会依次尝试,直到获得查询信息为止
3.配置区域委派时,如果使用转发服务器,有可能会产生区域引用的错误
#作为转发服务器,千万不要出现转发循环。
配置转发服务器技巧:
1).转发列表配置精简
对于配置有转发器的DNS服务器,可将查询发送至多个不同的位置,如果配置转发服务器配置过多,则会增加查询的时间,应根据需要使用转发器,例如:将本地无法解析的DNS信息转发至其他域名服务器。
2).避免链接转发器
如果配置了DNS服务器server1将查询请求转发给DNS服务器server2,则不要在为server2配置其他转发服务器。如果其他转发服务器进行了错误的配置,将查询转发给server1,那么可能导致错误。
3).减少转发器负荷
如果大量的DNS服务器使用这些转发器进行域名信息查询,则会增加转发器的工作量,降低解析的效率,所以建议使用一个以上的转发器实现负载。
4).避免转发器配置错误
DNS服务器会按照转发器配置文件设置的顺序来转发域名,如果国内的域名服务器,错误的将第一个转发器配置为美国的DNS服务器地址,则所有本地无法解析的查询均会发送至指定美国的DNS服务器,这会降低网络上名称解析的效率
缓存服务器:
缓存服务器本地并不设置DNS信息,仅执行查询和缓存操作。客户端发送查询请求,缓存服务器如果有该查询的信息,则直接返回结果。如果没有,则发送至根服务器,通过迭代查询获得相应的DNS信息,然后将结果保存至缓存,保存信息TTL值过期后将会清空。
缓存服务器不需要建立独立的区域,可以直接对named.conf文件进行设置:
options {
};
或:
options {
directory “/var/named”;
forward only;
forwarders {
192.168.1.1;
192.168.1.2;
};
};
解释:datasize(默认不需要设置)
max-cache-size number;
限制服务器可以用于缓存查询答案的内存量。如果缓存增长的太大,就要在记录的TTL到期之前将他们从缓存中删除,从而确保内存的用量保持在稳定的限度内。
recursive-clients number;
限制服务器处理的并发递归查询的数量,内存有限的服务器需要把这个限制降到比默认值还低。如果设置了不运行递归查询(recursion no;),就不需要设置这个了。
zone "." {
};
参考自《linux服务攻略》