本篇博客主要介紹如何在linux上構建簡易dns服務器,內容涵蓋本地dns解析,主從dns服務器區域傳送、rndc的使用以及如何在主域中添加子域
說明:
本實驗操作均在VMware10上實現,需要準備三臺虛擬機(Redhat Enterprise Linux 5.8),一臺作爲主dns服務器,一臺作爲從dns服務器使用,另一臺作爲子域dns服務器,當然也可以通過克隆的方式克隆主dns服務器虛擬機並重新配置IP即可。作者將主dns服務器端IP設爲:192.168.134.2,從dns服務器端的IP設爲:192.168.134.22,子域dns服務器的IP設爲:192.168.134.8。根據個人設定不同,需要修改相應配置文件中的設置。
實現:
1、安裝bind97(主從dns服務器都需要安裝)
說明:系統上已經安裝了bind,需先卸載相關軟件包
bind97安裝後的部分文件介紹:
/etc/named.conf: 主配置文件(權限640)
options: 全局選項,定義bind軟件的工作屬性:監聽設置 (選項:“值”)
directory: 指明數據文件目錄
logging: 定義如何生成和保存日誌
zone: 定義區域
include: 包含其它路徑下的配置文件
/usr/sbin/
named-checkconf: 檢查配置文件是否有語法錯誤
named-checkzone:區域配置文件是否有語法錯誤
named-compilezone:編譯zone
/var/named/:區域數據文件存放路徑
named.ca:13個根節點服務器的地址(A-M),可使用bind97-utils手動生成
named.localhost: 主機名正向解析數據文件
named.loopback: 主機名反向解析數據文件
bind list all bind* yum remove bind yum remove bind-libs yum -y install bind97-utils yum -y install bind97-libs yum -y install bind97 rpm -ql bind97 # 查看bind97安裝後生成的文件列表 cp /etc/named.conf /etc/named.conf.orig # 備份主配置文件
2、配置主dns服務器
1、修改主配置文件
說明:
directory "/var/named":數據文件存放路徑
allow-recursion:定義允許遞歸查詢的IP範圍
type hint:指明域類型
file "named.ca":指定域數據文件存放路徑(使用的是相對路徑 == /etc/named/named.ca)
allow-transfer { none; }:定義允許指定IP的服務器進行區域傳送,一般指定爲從服務器IP
vim /etc/named.conf # 修改主配置文件爲: options { directory "/var/named"; allow-recursion { 192.168.134.0/24; }; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "named.localhost"; allow-transfer { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-transfer { none; }; }; zone "tb.com" IN { type master; file "tb.com.zone"; allow-transfer { 192.168.134.22; }; }; zone "134.168.192.in-addr.arpa" IN { type master; file "192.168.134.zone"; allow-transfer { 192.168.134.22; }; };
2、新建對應的區域數據文件
說明:
@:在DNS文件中表示域名
SOA: 起始授權記錄
NS:dns服務器記錄
MX:郵件記錄
A: IPv4地址正向解析記錄
CNAME: 別名記錄
PTR: 反向域名解析記錄
cd /var/named vim tb.com.zone # 編輯資源記錄如下 $TTL 600 @ IN SOA ns1.tb.com. admin.tb.com. ( 2016052801 1H 5M 2D 1H ) IN NS ns1 IN NS ns2 IN MX 10 mail ns1 IN A 192.168.134.2 ns2 IN A 192.168.134.22 www IN A 192.168.134.3 mail IN A 192.168.134.4 ftp IN CNAME www tb.com IN A 192.168.134.3 vim 192.168.134.zone # 編輯資源記錄如下 $TTL 600 @ IN SOA ns1.tb.com. admin.tb.com. ( 2016052801 1H 5M 2D 1H ) IN NS ns1.tb.com. IN NS ns2.tb.com. 3 IN PTR www.tb.com. 4 IN PTR mail.tb.com. # 修改數據文件的屬主、屬組以及權限 chown root:named tb.com.zone chmod 640 tb.com.zone chown root:named 192.168.134.zone chmod root:named 192.168.134.zone
3、修改dns配置
vim /etc/resolv.conf # 添加如下記錄並將其它nameserver記錄暫時註釋 nameserver 192.168.134.2
4、啓用服務
service named start
5、至此,主dns服務器的配置就完成了,先使用dig測試
dig簡要說明:
dig -t NS tb.com @192.168.134.2
-t: 指定資源記錄類型
tb.com:查詢對象
@IP:指定使用指定的dns服務器進行查詢
作者測試結果:
3、配置從dns服務器
1、編輯主配置文件
vim /etc/named.conf # 編輯配置文件如下,與主dns服務器的區別在於type slave options { directory "/var/named"; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "named.localhost"; allow-transfer { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-transfer { none; }; }; zone "tb.com" IN { type slave; file "slaves/tb.com.zone"; masters { 192.168.134.2; }; allow-transfer { none; }; }; zone "134.168.192.in-addr.arpa" IN { type slave; file "slaves/192.168.134.zone"; masters { 192.168.134.2; }; allow-transfer { none; }; };
2、至此,從dns服務器配置已完成,啓用服務
service named start
3、測試主從dns服務器完全區域傳送
作者測試結果
4、給dns服務器添加遠程域名服務器控制器(rndc)
1)、實現本地rndc控制,本操作在主dns服務器中完成
1、生成rndc配置文件
rndc-confgen > /etc/rndc.conf vim /etc/rndc.conf # 複製所需內容追加至/etc/named.conf文件中 # 所需複製內容如下: # Use with the following in named.conf, adjusting the allow list as needed: # key "rndc-key" { # algorithm hmac-md5; # secret "qMdLUBIveV7aEDn87esq5g=="; # }; # # controls { # inet 127.0.0.1 port 953 # allow { 127.0.0.1; } keys { "rndc-key"; }; # }; # End of named.conf >.,$-1w >> /etc/named.conf
2、編輯主配置文件
vim /etc/named.conf # 去除rndc文件註釋 # 即修改追加內容爲: # Use with the following in named.conf, adjusting the allow list as needed: key "rndc-key" { algorithm hmac-md5; secret "qMdLUBIveV7aEDn87esq5g=="; }; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; };
3、測試本地rndc控制
說明:rndc -c /etc/rndc.conf status
-c: 指定rndc的配置文件
status: 查看狀態信息
(rndc命令的使用可使用rndc -h查看)
rm -f /etc/rndc.key # 刪除bind啓用後自動生成的rndc.key
service named restart
rndc -c /etc/rndc.conf status
作者測試結果:
1)、實現遠程rndc控制
1、修改主dns服務器中的主配置文件
vim /etc/named.conf # 修改內容如下: controls { inet 192.168.134.2 port 953 allow { 192.168.134.22; } keys { "rndc-key"; }; };
2、複製主dns服務器中的rndc配置文件至從dns服務器中(主dns服務器中執行)
注意:在複製時需要注意避免文件覆蓋問題,這裏複製配置文件至/root目錄下
scp /etc/rndc.conf 192.168.134.22:/root/
3、在從dns服務器中修改rndc配置文件
vim rndc.conf # 修改默認服務器IP: options { default-key "rndc-key"; default-server 192.168.134.2; default-port 953; };
4、測試遠程rndc控制
作者測試結果:
5、往主域中添加子域
說明:當前主域爲tb.com.,當前目的是在主域中添加子域fin.tb.com.;
以下內容是基於上述操作實現後的補充內容,基本操作與上述相同,因此部分內容省略
1、修改主域數據文件,爲子域授權
vim /var/named/tb.com.zone # 添加授權記錄並修改序列號(序列號+1): fin IN NS ns1.fin ns1.fin IN A 192.168.134.8
2、在反向域中添加資源記錄
vim 192.168.134.zone # 添加以下記錄(序列號+1): IN NS ns1.fin.tb.com.
3、重啓主域dns服務器
server named restart
4、啓用並配置子域主機,這裏設置子域主機IP爲:192.168.134.8
vim /etc/named.conf # 此時當前主機域爲fin.tb.com,並設置子域訪問主域時採用轉發域的形式訪問 # 主要變動內容如下: zone "fin.tb.com" IN { type master; file "fin.tb.com.zone"; }; zone "tb.com" IN { type forward; forward first; forwarders { 192.168.134.2; }; }; vim /var/named/fin.tb.com.zone # 添加數據文件 # 編輯內容如下: $TTL 600 @ IN SOA ns1.fin.tb.com. admin.fin.tb.com. ( 2016052801 1H 5M 2D 1H ) IN NS ns1 IN MX 10 mail ns1 IN A 192.168.134.8 www IN A 192.168.134.10 mail IN A 192.168.134.9
修改記錄文件的屬主、屬組及權限
cd /var/named/ chown root:named fin.tb.com.zone chmod 640 fin.tb.com.zone service named start
5、子域測試
好了,以上就是bind相關的部分操作,缺漏處還望指出