bind9 配置说明
配置语法
named.conf
acl | 定义访问控制列表 |
controls | 定义rndc命令使用的控制通道,若省略,则只允许经过rndc.key认证的127.0.0.1的rndc控制 |
include | 包含其他文件到配置文件 |
key | 定义用于TSIG的授权密钥 |
logging | 日志记录 |
lwres | 将named同时配置成一个轻量级的解析器 |
options | 定义全局选项 |
trusted-keys | 为服务器定义 DNSSEC 加密密钥 |
server | 设置每个服务器的特有选项 |
view | 定义域名空间的一个视图 |
zone | 定义一个区声明 |
注释
可以使用三种注释风格:
/* C语言风格 */ // C++ 风格 # shell 风格
include
建议使用绝对路径,如果使用相对路径,则是指相对 directory 选项指定的路径。下面是我的debian系统named.conf文件中的一个include使用示例:
root@jianlee:~/lab/koji/koji# tail -1 /etc/bind/named.conf include "/etc/bind/named.conf.local";
options
fedora10上bind的文件一个示例:
[root@dev3-57 demoCA]# sed -n -e '10,19p' /etc/named.conf options { listen-on port 53 { 127.0.0.1; }; 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"; allow-query { localhost; }; recursion yes; };
options 中一般选项的含义:
-
directory “路径”
- 定义服务器区数据库文件的工作目录,配置文件中使用的所有相对路径都是一个这个目录为基目录。 notify yes/no
- 如 named 是主服务器,当区数据库变化时将自动通知相应区的从服务器,默认为yes。 recursion yes/no
- 是否使用递归式 DNS 服务器,默认为yes。 transfer-format one-answer/many-anser
- 设置从主服务器向从服务器复制数据的方式,使用在主域名服务器上,是否允许在一条消息中放入多条应答信息,默认值为 many-answer forwarders {IPaddrs}
- 设置全局转发器,列出要用作转发器的服务器 IP 地址 forward only/first
- 若值为 only,则服务器缓存数据并查询转发器,但从不查询其他的任何服务器,若转发器不能响应查询则查询失败;若值为 first,则在转发查询失败或没有查到结果时,会在本地发起正常查询。默认为 first
zone
root@jianlee:~/lab/koji/koji# sed -n -e '20,23p' /etc/bind/named.conf zone "localhost" { type master; file "/etc/bind/db.local"; };
-
type master/slave/hint/forward
- 说明一个区的类型。master指示此区为主域名服务器;slave指示此区为辅助域名服务器;hint指示此区为根服务器的线索;forward指示此区为转发区。 file “文件名”
- 指出此区的域信息数据库文件名
DNS 数据库
一个域的 DNS 数据库是由这个域的主域名服务器的管理员所维护的文本文件的集合。这些文件经常被称为区文件,区文件定义了一个区的域名信息。每个区文件都是由若干个资源记录(RR,resource records)和分析器指令所组成。
资源记录
标志资源记录格式 :
[name] [ttl] [class] type data
各个字段之间由空格或制表符分割,字段可以包含下面特殊字符:
; | 注释 |
@ | 表示当前域 |
() | 允许数据夸行,通常用于 SOA 记录 |
* | 仅用于 name 字符的通配符 |
name
name 字段说明资源记录引用的对象名,可以是一台单独的主机也可以是个域名。
- 对象名可以是相对域名或全域名,全域名应该以“.”结束
- 若几条连续的 RR 记录涉及同一个对象名,则第一条 RR 记录后的 RR 记录可以省略对象名
- 若出现字段名字段,则必须出现在第一个字段
关于相对域名和全域名:
举例来说,在 ubuntu.org.cn 域中,相对域名 osmond 与全域名 osmond.ubuntu.org.cn. 等效;而 osmond.ubuntu.org.cn 由于没有以“.”结尾,被认为是一个相对域名,与其等效的全域名为 osmond.ubuntu.org.cn.ubuntu.org.cn.。因此在书写对象名时要特别小心。
ttl (time to live)
它以秒为单位定义该资源记录中的信息存放在高速缓存中的时间长度。通常省略该字段,而使用位于文件开始处的 $TTL 语句所指定值。
class
class 字段用于指定网络类型,可选的值有:IN、CH 和 HS,其中 IN (Internet)是广泛使用的一种。虽然 IN 是该字段的默认值,但通常我们会显示地指出。
type
type 字段用于说明 RR 的类型。常用的 RR 类型如下:
1 区记录
SOA (Start Of Authority) | SOA 记录标示一个授权区定义的开始。SOA 记录后的所有信息是控制这个区的 |
NS (Name Server) | 标识区的域名服务器以及授权子域 |
2 基本记录
A (Address) | 用于将主机名转换为 IP 地址,任何一个主机都只能有一个 A记录 |
PTR (PoinTeR) | 将地址转换为主机名 |
MX (Mail eXchanger) | 邮件交换记录。控制邮件的路由 |
3 安全记录
KEY (Public Key) | 储存一个关于DNS 名称的公钥 |
NXT (Next) | 与 DNSSEC 一起使用,用于指出一个特定名称不在域中 |
SIG (Signatrue) | 指出带签名和身份认证的区信息,细节见 RFC 2535 |
4 可选记录
CNAME (Canonical NAME) | 给定主机的别名,主机的规范名在A记录中给出 |
SRV (Services) | 指出知名网络服务的信息 |
TXT (Text) | 注释或非关键的信息 |
RR的顺序:
- SOA RR 应该放在最前面
- 通常 NS RR 紧跟在 SOA RR 之后
- 其他记录的顺序无关紧要
data
取决于RR的类型
常用的资源记录
SOA 开始一个区
基本格式:
zone IN SOA Hostname Contact ( SerialNumber Refresh Retry Expire Minimum )
-
Hostname
- 存放本 Zone 的域名服务器的主机名 Contact
- 管理域的管理员的邮件地址 SerialNumber
- 本区配置数据的序列号,用于从服务器判断何时获取最新的区数据 Refresh
- 辅助域名服务器多长时间更新数据库 Retry
- 若辅助域名服务器更新数据失败,多长时间再试 Expire
- 若辅助域名服务器无法从主服务器上更新数据,原有的数据何时失效 Minimum
- 设置被缓存的否定回答的存活时间
jamond.net. IN SOA ubuntu.jamond.net. root.ubuntu.jamond.net. ( 2006063000 ;序列号 3H ;3小时后刷新 15M ;15分钟后重试 1W ;1星期后过期 1D ) ;否定缓存TTL为1天
- 对 Contact 来说,因为“@”在文件中有特殊含义,所以邮件地址 root@ubuntu.jamond.net 写为 root.ubuntu.jamond.net.
- 对 SerialNumber 来说,它可以是 32 位的任何整数,每当更新区文件时都应该增加此序列号的值,否则 named 将不会把区的更新数据传送到从服务器
- 缓存时间字段 Refresh、Retry、Expire、Minimum 可以使用时间单位字符 m、 h、d、w 分别表示分钟、小时、天、星期。
- 各个缓存时间字段的经验值为
- Refresh — 1 到 6 小时
- Retry — 20 到 60 分钟
- Expire — 1 周 到 1 月
- Minimum — 1 到 3 小时
- Minimum 设置被缓存的否定回答的存活时间,而肯定回答(即真实记录)的默认值是在区文件开始处用 $TTL 语句设置的。
NS 标识一个区的权威服务器
包括主服务器和从服务器,并将子域授权赋予其他服务器,格式:
zone [ttl] IN NS hostname
示例:
jamond.net. IN NS ubuntu.jamond.net. ;指定 jamond.net. 的主服务器 jamond.net. IN NS dapper.jamond.net. ;指定 jamond.net. 的从服务器 osmond.jamond.net. IN NS ubuntu.osmond.jamond.net. ;指定委派域 osmond.jamond.net. 的主服务器 osmond.jamond.net. IN NS dapper.osmond.jamond.net. ;指定委派域 osmond.jamond.net. 的从服务器
若上面的记录紧跟在 SOA 记录后,也可以写成如下的形式:
IN NS ubuntu.jamond.net. ;指定 jamond.net. 的主服务器 IN NS dapper.jamond.net. ;指定 jamond.net. 的从服务器 osmond IN NS ubuntu.osmond.jamond.net. ;指定委派域 osmond.jamond.net. 的主服务器 osmond IN NS dapper.osmond.jamond.net. ;指定委派域 osmond.jamond.net. 的从服务器
A — DNS数据库的核心
提供主机名到IP地址的映射,格式为:
hostname [ttl] IN A IPAddress
举例:
ubuntu IN A 192.168.0.251 dapper IN A 192.168.0.252 ubuntu.osmond IN A 192.168.1.251 dapper.osmond IN A 192.168.1.252
PTR
PTR RR 提供了 IP 地址到主机名的映射。其格式为:
IPAddress [ttl] IN PTR hostname
例如: 在 168.192.in-addr.arpa 区中,前面的 ubuntu.jamond.net. 和 dapper.jamond.net. 所对应的 PTR 记录为
251.0 IN PTR ubuntu.jamond.net. 252.0 IN PTR dapper.jamond.net.
而在 0.168.192.in-addr.arpa 区中,前面的 ubuntu.jamond.net. 和 dapper.jamond.net. 所对应的 PTR 记录为
251 IN PTR ubuntu.jamond.net. 252 IN PTR dapper.jamond.net.
在 1.168.192.in-addr.arpa 区中,前面的 ubuntu.osmond.jamond.net. 和 dapper.osmond.jamond.net. 所对应的 PTR 记录为
251 IN PTR ubuntu.osmond.jamond.net. 252 IN PTR dapper.osmond.jamond.net.
在 PTR RR 中 hostname 应该使用全域名。例如 osmond.jamond.net 域的主机 ubuntu 应该写为 ubuntu.osmond.jamond.net. 。而 ubuntu.osmond.jamond.net 将被解析为 ubuntu.osmond.jamond.net.1.168.192.in-addr.arpa. 。
PTR RR 所提供的反向解析能够为任何对进入网络的请求进行认证的程序所使用,这些程序包括:sshd、tcpd、sendmail、syslogd 等。
MX
MX RR 用于邮件系统实现邮件路由。有关电子邮件的更多介绍请参见 FIXME 。 其格式为:
zone [ttl] IN MX preference host
其中 preference 是优先级字段,数值越小优先级越高。
例如:
jamond.net. IN MX 5 ubuntu.jamond.net. jamond.net. IN MX 10 ubuntu.jamond.net.
CNAME
CNAME RR 用于设置主机的别名。 其格式为:
nikename [ttl] IN CNAME hostname
例如:
ubuntu IN A 192.168.0.251 www IN CNAME ubuntu ftp IN CNAME ubuntu
文件内必须有规范名字的 A RR。
分析器指令
在区文件中还可以使用分析器指令,分析器指令可以为 RR 的输入提供方便。
- $ORIGIN — 设置默认域(或初始域)
- $TTL — 为没有定义精确的生存期的 RR 定义缺省的 TTL 值
实例
为其他机器提供DNS服务
默认bind9安装后都只监听127.0.0.1网络,即只为本机提供DNS服务,如果需要为局域网其他机器提供DNS服务,可以修改 listen-on 语句:
options { listen-on port 53 { 127.0.0.1;172.16.70.30; }; ... };
可以把 listen-on 注释掉,或者加上本机的外网 IP 。bind9在各个linux发行版安装的路径不一样。
debian5.0 /etc/bind/named.conf /etc/bind/named.conf.options fedora10 /etc/named.conf
其中fedora默认安装后,bind9只对本机提供DNS服务。debian5默认安装后可以为其他机器提供DNS服务。debian5的bind9全局选项单独放在 /etc/bind/named.conf.options 文件中。
------------------------------
BIND主要相关配置文件 返回
共有两类文件,一是主配置文件,二是区文件
主配置文件:/etc/named.conf
根域服务器指向文件:/var/named/named.ca
本地正向解析区文件:/var/named/localhost.zone
本地反向解析区文件:/var/named/named.local
域正向解析区文件:/var/named/正向解析区文件名
域反向解析区文件:/var/named/反向解析区文件名
新建域net03.org的步骤 返回
说明:在以下步骤中,请注意红色显示部分,域服务器名称为ns.net03.org,IP地址是192.168.6.10。aaa.net03.org,bbb.net03.org为域内的两台主机,IP地址分别为192.168.6.110,192.168.6.119
1. 在主配置文件/etc/named.conf中添加正向区域、反向区域的说明,如下:
zone “net03.org” {
type master;
file “named.net03.org“;
};zone “6.168.192.in-addr.arpa” {
type master;
file “named.192.168.6“;
};2. 新建域正向解析区文件/var/named/chroot/var/named/正向解析区文件(或从本地正向解析文件localhost.zone复制成新建域正向解析区文件,再进行修改),并添加以下内容:
$TTL 86400
@ IN SOA ns.net03.org. root.ns.net03.org. (
2004051501
28800
14400
3600000
86400 )@ IN NS ns.net03.org.
ns IN A 192.168.6.10
aaa IN A 192.168.6.110mmm IN A 192.168.6.113
net03.org. IN MX 10 mmm.net03.org.
bbb IN A 192.168.6.119
bbb IN A 192.168.6.120
bbb IN A 192.168.6.121然后在/var/named目录下为该文件建立同名链接
3. 新建域反向解析区文件/var/named/chroot/var/named/反向解析区文件(或从本地反向解析文件localhost.zone复制成新建域反向解析区文件named.local,再进行修改),并添加以下内容:
$TTL 86400
@ IN SOA ns.net03.org. root.ns.net03.org. (
2000051501 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum@ IN NS ns.net03.org.
10 IN PTR ns.net03.org.
110 IN PTR aaa.net03.org.
119 IN PTR bbb.net03.org.然后在/var/named目录下为该文件建立同名链接
4. 注意事项: 因为在RHEL中,考虑到安全性,文件/etc/sysconfig/named中有以下参数:
ROOTDIR=/var/named/chroot
如果不注释掉,则所有zone文件均保存在/var/named/chroot/var/named/*,所以需要将区文件保存在/var /named/chroot/var/named下。如果你将该句注释掉,则区文件保存在/var/named/目录下(同Red Hat 9相同)。
同时要注意两个目录拥有者,/var/named/chroot/拥有者为named,/var/named/拥有者为root
客户端设置
1 )windows客户端,设置首选DNS服务器
2 )Linux客户端,在/etc/resolv.conf中添加以下内容:
nameserver 192.168.6.10
测试DNS服务器的配置
使用命令nslookup
辅助DNS服务器的配置 返回
说明:如果要为域net03.org的域服务器ns.net03.org(192.168.6.10)建立辅助(slave)域服务器,bak.net03.org(192.168.6.11),需要做以下操作:
1.针对net03.org的正向区域、反向区域,修改域服务器ns.net03.org的主配置文件/etc/named.conf,修改后内容如下:
zone “net03.org” {
type master;
file “named.net03.org”;
allow-transfer { 192.168.6.11; };
};zone “6.168.192.in-addr.arpa” {
type master;
file “named.192.168.6″;
allow-transfer { 192.168.6.11; };
};2.在计算机192.168.6.11上配置DNS服务,设置其主配置文件/etc/named.conf,修改后应有以下区的说明:
zone “net03.org” {
type slave;
file “slaves/named.net03.org”;
masters {192.168.6.10;};
};zone ‘6.168.192.in-addr.arpa’ {
type slave;
file ’slaves/named.192.168.6′;
masters {192.168.6.10;};
};
3.注意事项:
1)主从服务器中正/反向zone名称必须一致;
2)从服务器中file可指定相对路径,也可指定绝对路径;
3) 需将辅助DNS服务器的首选DNS服务器指向为主DNS服务器.4.测试:
在客户端将首选DNS服务器设置为辅助DNS服务器,也可暂时关闭主DNS服务器。并用nslookup进行测试
注意:主DNS服务器与辅助DNS服务器的数据传输有一定的时间间隔
缓存(Cache-only)DNS服务器的配置 返回
1. 修改named主配置文件
/etc/named.conf
options {
directory “/var/named”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
version “4.9.11″;
forward only;
forwarders {
192.168.6.10;
};
};2.测试:
在客户端将首选DNS服务器设置为缓存DNS服务器。并用nslookup进行测试
DNS子域授权 返回
说明:假定我们是要将net03.org域下建立一个子域xxx.net03.org,并将该子域授权给主机dns.xxx.net03.org(IP地址为192.168.6.114)来管理
特别提示:RHEL 4为了提高系统安全性,默认情况下,大部分常用端口都是关闭的,包括dns服务的53号端口,为使dns服务能被正常使用,我们需要在图形界面下打开该端口,具体操作如下:
桌面–>管理–>安全与防火墙–>其它端口–>添加
1.在net03.org的正向解析区文件中添加以下内容:
xxx.net03.org. IN NS dns.xxx.net03.org.
dns.xxx.net03.org. IN A 192.168.6.1142.参照新建域net03.org的步骤,在IP地址为192.168.6.114的计算机上配置DNS服务,新建区域xxx.net03.org,添加有关记录
3.将客户端的首选DNS服务器设置成net03.org的域服务器(192.168.6.10)或xxx.net03.org的域服务器(192.168.6.114),使用nslookup或ping等命令进行测试。
利用DNS实现负载均衡 返回
原理就是在DNS服务器中为同一个域名配置多个IP地址,如域中FTP服务器的网络负荷很大,需要多台服务器进行负载均衡,可以在DNS服务器上加入以下记录:
ftp IN A 192.168.6.219
ftp IN A 192.168.6.220
ftp IN A 192.168.6.221
实现直接解析域名
直接将域名解析成相应的IP地址,承接上例,如想将域名net03.org解析成域内www服务器的IP地址(192.168.6.2),可以在区域文件中加入以下记录.
net03.org. IN A 192.168.6.2
实现泛域名的解析
泛域名是指一个域名下所有的主机和子域名都被解析到同一个IP上.在区文件中的设置如下:
*.example.com. IN A 192.168.16.9
或
* IN A 192.168.6.9
故障排除 返回
检查主配置文件语法:
#named-checkconf
检查区域文件语法:
#named-checkzone ssti.net /var/named/chroot/var/named/ssti.net.zone
DNS客户查询名称的顺序 返回
DNS客户端发出DNS请求,直到得到结果,可能的过程是怎样的,见下面两图
附:rndc 返回
概念:
rndc(remote name daemon control):是一个系统管理员操作名称服务(DNS服务)的程序,使用rndc命令可以实现重新加载域名服务的配置文件或区文件,停止域名服务,显示域名服务状态等功能。
使用:
执行命令:
#rndc-confgen
该命令的输出结果中前半部分是配置文件/etc/rndc.conf的设置,后半部分给出了如何修改/etc/named.conf中key{…}、controls{…}的内容,这样做的目的是实现操作DNS服务时的数字认证。
或者像下面操作:
#rndc-confgen > /etc/rndc.conf
从rndc.conf文件中提取named.conf用的key
#cd /etc
#tail -10 rndc.conf | head -9 | sed s/#\ //g >> named.conf
rndc的常见用法:
#rndc status
#rndc start | stop | restart
#rndc reload ssti.net
实训 返回
1. 为域it.net配置主域服务器:建立正向搜索区域,为网络各台计算机建立主机记录、别名记录。为网络建立邮件交换记录。建立反向搜索区域,为网络各台计算机建立指针记录。并测试。
2. 为域it.net配置辅助域服务器,并测试。
3. 配置缓存DNS服务器,并测试。
4. 为域it.net配置子域xxx.it.net,并在it.net的主域服务器上为xxx.it.net做子域授权。在客户端将DNS服务器设为it.net的域服务器,查询it.net及其子域中的DNS记录。
5. 通过DNS记录实现负载均衡功能,并测试。
6. 在DNS服务器上实现泛域名解析,并测试。
==================================
转载于:https://blog.51cto.com/ylive/389892