bind的主配置文件named.conf是业务配置的核心文件,所以本文先对named.conf文件有个基础的介绍。
下面以一份简单的named.conf文件内容为例,bind9的配置文件由语句和注释组成。
//单行注释类型1
/*
多行注释
*/
//声明控制通道
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
//全局选项
options {
version none; //隐藏bind版本,为了安全考虑
directory "/var/named";
pid-file "named.pid";
recursion yes; //全局开启递归
listen-on port 53 { any; }; //监听IPv4的53端口
listen-on-v6 port 53 { any;}; //监听IPv6的53端口
allow-query { any; }; //面向所有源IP提供解析服务
};
//指明日志记录
logging {
channel query_log {
file "/usr/local/bind/log/query.log." versions 5 size 50m;
print-time yes;
severity info;
};
category queries { query_log;};
};
//包含另一个文件的配置
include "acl.conf";
//视图
view "view_test" {
match-clients { test; }; //这个视图匹配的源IP地址
zone "example.com" {
type master; //定义此权威区是主区
file "example.com.zone"; //权威区文件的名称,他应该放在/var/named/下面
};
};
view "view_any" {
match-clients { any; };
zone "test.cn" IN {
type forward; //配置域名转发,当接到test.cn域名查询时bind向forwarders中的IP地址发起递归查询请求。
forward only; //如果转发服务器应答超时或者失败,则不再尝试自己做迭代查询。
forwarders {8.8.8.8; 114.114.114.114; };
};
};
- 注释语法
bind9的配置文件注释可以写成C,C++或者shell的风格。上面的配置中有注释单行//和注释多行/* …*/的例子,可以用井号#注释单行。但要注意在主配置文件中不能像zone文件(后面会详细讲解)一样使用分号(“;”)注释。 - 配置文件语法(语句)
语句和注释是可以出现在花括号之外的元素,而语句中由包含很多的自语句并组成语句块,子语句以分号结束。下面是bind9支持的语句。
语句 | 含义 |
---|---|
acl | 定义IP地址列表, 用于访问控制或者其他用途 |
include | 包含(引入)一个配置文件 |
key | 在使用TSIG的时候用于认证和授权的秘钥信息 |
conctrols | 声明一个控制通道,用于rndc |
options | 控制全局的配置或者其他语句的缺省配置,此配置是我们需要重点关注的,很多DNS的调优都是在这里进行配置,目前它包含的配置自语句数量是211条大家不需要去死记硬背,只需要了解一些常用的语句即可,我们在后面也会详细讲解这些常用的配置语句。 |
logging | 指定bind记录哪些日志以及在哪里输出这些日志 |
view | 定义一个视图,视图在bind中是逻辑的概念,类似将DNS进行隔离,不同的视图之间不互相影响,视图要匹配acl也就是客户端的源IP,是实现智能解析的关键配置。 |
zone | 定义一个权威区 |
server | 可以出现在配置文件的顶级,可以在一个view中,定义对特定的服务器设置参数 |
masters | 定义一个命名的主服务器列表,一般包含在存根区或者辅区的masters或者also-notify列表中。 |
trusted-keys | 定义信任的DNSSEC密钥 |
statistics-channels | 声明通信的通道,用于访问bind的统计信息数据 |
==注意:==logging和options语句在每个配置文件中只能出现一次。