接昨天的DNS与BIND学习笔记 2!
今天看的是和配置相关的东西,有点枯燥,就想睡觉。不过还是挺过来了,不容易,呵呵!
8. resolv.conf文件
unix系统上都会有这样一个文件,如果要使用DNS则必须要设置这个文件。(当然你可能在某些系统上修改/etc/nsswitch.conf,告诉它使用DNS而不是NIS。具体位置是:/etc/resolv.conf,它的格式是:
search 域名
nameserver IP地址
主要讲的就是“search 域名”的作用,在老版本BIND中是使用“domain”这个关键字的。它列出了如果某主机名不完整的时候,自动补上后面所写的域名。如我在文件中加入“search com.”那么重启network,只需要ssh china,就等于ssh china.com这个命令。
而nameserver最多只能列出三个,而且必须要是递归服务器才可以。
9. BIND服务器配置
BIND非常消耗内存。它的数据库都保留在内存中,所以随着named进程的运行,高速缓存会逐渐增大。不过BIND9支持多线程并且可以充分利用多处理器系统,还包括控制named资源使用的配置选项。新版本的BIND启动,停止用了新的命令:ndc start|stop|restart|status 。而不是以前的init.d中的脚本了。
配置文件:named.conf
每条语句以分号结束。格式非常重要少一个空格或者少一个分号就会让你郁闷1小时:( ,每条语句以一个标示语句类型的关键词开始。
option语句:指定全局选项,在BIND8中大约有30个选项,9的选项超过50个。这里只介绍常用的。格式如下:
options{
option;
option;
...
};
version "string"; [服务器的真实版本号] #可以将它真实地版本号隐藏
directory "path"; [启动服务器的目录] #可以让named程序cd到这个目录(绝对路径)中。推荐将所有与BIND相关的配置文件(除了named.conf和resolv.conf)放在/var之下的子目录中。例如/var/named
notify yes | no; [yes] #如果设为yes,并且named是一个或多个区的主服务器,那么每当区数据库有变化时,将自动通知相应区的从服务器。
recursion yes | no; [yes] #指定named是否代表客户机查询其它名字服务器。
allow-recursion {address_match_list}; [所有主机] #可以结合上面的选项设置成对自身的客户机允许递归,但对外查询禁止递归
allow-query {address_match_list}; [所有主机] #指定哪些主机(或网络)可以查询这台名字服务器。
allow-transfer {address_match_listh}; [所有主机] #指定哪些主机(或网络)可以请求区数据的块传输。
blackhole {address_match_list}; [空] #标示出您从不希望与之进行通信的服务器,named将不接受来自这些服务器的查询,也不会向他们询问答案。
acl语句:它必须是named.conf中的顶级语句。
acl acl_name{
address_match_list
};
其中,有4个列表是预先定义的:any,localnets,localhost,none
zone语句:是named.conf中的核心语句。将告诉named它具有权威性的区域。并为管理每个区设置适当的选项。zone语句格式根据named在(主服务器,从服务器)中所扮演的角色不同而不同。
1. 配置一个区的主服务器
zone "domain_name"{
type master;
file "path";
allow-query {address_match_list}; [所有]
allow-transfer {address_match_list}; [所有]
allow-update {address_match_list}; [无]
ixfr-base "pat"; [domain_name.ixfr(仅版本8)]
};
2. 配置一个区的从服务器:正常情况下,从服务器会保留区数据库的一个完整的副本。不过,如果服务器的类型设置为stub,而不是slave,那么将只传送NS记录。
zone "domain_name"{
type slave | stub;
file "path";
ixfr-base "path"; [仅版本8]
masters {ip_addr; ip_addr; ...}; [无默认值]
allow-query {address_match_list}; [所有]
allow-transfer {address_match_list}; [所有]
};
3. 设置一个转发区:如果您的组织和其它组织或公司有战略合作关系,并且希望绕过标准的查询路径,直接把流量汇聚到该公司的名字服务器上,则可以使用forward区,您可以使用这样的安排来访问对外界不可见的名字服务器。
zone "domain_name"{
type forward;
forward only | first;
forwarders {ip_addr; ip_addr; ...};
};