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++ 風格
# 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 文件中。
