最近有粉絲私信我,很多做技術開發的工程師在開發某個程序時,或者測試人員在做程序測試時,經常需要測試DNS域名解析,那麼今天就為大家介紹一下如何搭建自己的DNS域名解析伺服器。

現在我們進入主題,Linux上搭建DNS服務的軟體有bind9、NSD(Name server domain)和unbound,其中bind9是市場佔有率最高的軟體。本文也以此軟體來介紹DNS服務。bind實現DNS的最佳最詳細說明文檔是”DNS & BIND”和”Bind97 Manual”,網上都有中文版本的資源,推薦大家可以去讀一讀。

一、BIND簡介
現在使用最為廣泛的DNS伺服器軟體是BIND(Berkeley Internet Name Domain),最早有伯克利大學的一名學生編寫,現在最新的版本是9,有ISC(Internet Systems Consortium)編寫和維護。
BIND支持先今絕大多數的操作系統(Linux,UNIX,Mac,Windows)。
BIND服務的名稱稱之為named。
DNS默認使用UDP、TCP協議,使用埠為53(domain),953(mdc,遠程控制使用)。

二、BIND安裝
本例使用的環境是CentOS 7.0的Linux操作系統(非CentOS 7.0系統,安裝會有所區別),所以直接採用命令:
yum install -y bind bind-chroot bind-utils其中bind-chroot和bind-utils是bind的相關包。


二、BIND配置
1、BIND配置文件保存在兩個位置:
/etc/named.conf - BIND服務主配置文件
/var/named/ - zone文件(域的dns信息)如果安裝了bind-chroot(其中chroot是 change root 的縮寫),BIND會被封裝到一個偽根目錄內,配置文件的位置變為:
/var/named/chroot/etc/named.conf - BIND服務主配置文件
/var/named/chroot/var/named/ - zone文件 chroot是通過相關文件封裝在一個偽根目錄內,已達到安全防護的目的,一旦程序被攻破,將只能訪問偽根目錄內的內容,而不是真實的根目錄。
2、BIND安裝好之後不會有預製的配置文件,但是在BIND的文檔文件夾內(/usr/share/doc/bind-9.9.4),BIND為我們提供了配置文件模板,我們可以直接拷貝過來:
cp -r /usr/share/doc/bind-9.9.4/sample/etc/* /var/named/chroot/etc/
cp -r /usr/share/doc/bind-9.9.4/sample/var/* /var/named/chroot/var/ 3、配置BIND服務的主配置文件(
/var/named/chroot/etc/named.conf),命令:
vim /var/named/chroot/etc/named.conf;內容很多使用簡單配置,刪除文件中logging以下的全部內容,以及option中的部分內容,得到如下配置:
/*
Sample named.conf BIND DNS server 'named' configuration file
for the Red Hat BIND distribution.
See the BIND Administrator's Reference Manual (ARM) for details about the
configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
*/
options
{
// Put files that named is allowed to write in the data/ directory:
directory "/var/named"; // "Working" directory
//listen-on port 53 { any; };
listen-on port 53 { 127.0.0.1; };
//listen-on-v6 port 53 { any; };
listen-on-v6 port 53 { ::1; };
}; 4、在主配置文件(
/var/named/chroot/etc/named.conf )中加入,zone參數:

5、新建example.net.zone文件,example.net的域名解析文件,zone文件放在
/var/named/chroot/var/named/下,zone文件可以以/var/named/chroot/var/named/named.localhost為模板。
命令:
cp /var/named/chroot/var/named/named.localhost /var/named/chroot/var/named/example.net.zone
文件example.net.zone的內容如下:

6、禁用bind默認方式啟動,改用bind-chroot方式啟動。命令如下:
[root@iZ2806l73p6Z named]# /usr/libexec/setup-named-chroot.sh /var/named/chroot on
[root@iZ2806l73p6Z named]
# systemctl stop named
[root@iZ2806l73p6Z named]
# systemctl disable named
[root@iZ2806l73p6Z named]
# systemctl start named-chroot
[root@iZ2806l73p6Z named]
# systemctl enable named-chroot
[root@iZ2806l73p6Z named]
#
圖:

注意:如果是CentOS 6.5的系統,這個步驟回有所區別,直接使用默認的service named start 啟動服務,bind就直接運行在chroot包中,如下圖:

7、查看是否啟動,命令:
ps -ef|grep named
8、測試DNS服務,本例在本機上測試,也可在其他電腦上測試,修改DNS服務的ip地址即可(命令:vim /etc/resolv.conf ),然後使用命令dig(命令:dig www.example.net)測試。

內容如下:

測試結果:

註:非本機測試需要修改主配置文件named.conf,允許任何ip訪問,然後重啟伺服器。


三、BIND從伺服器
從伺服器就是在bind的主配置文件中添加從域example.net的配置信息即可:
1、配置文件位置
/var/named/chroot/etc/named.conf2、在主配置文件中添加一行域的zone定義:
zone "example.net" {
type slave;
masters { 120.27.99.64;
};
file "slaves/example.net.zone"; 3、由於bind是以named用戶來運行的,所以要給存放zone文件的文件夾(
/var/named/chroot/var/named/slaves)授權。
未授權前:

授權:

4、啟動bind服務,service named start,在存放zone文件夾(
/var/named/chroot/var/named/slaves)中查看,已經把example.net.zone文件下下來了。

5、修改dns伺服器ip地址,測試dig www.example.net。

四、緩存伺服器及轉發伺服器
一個DNS伺服器可以即不是某個域的master伺服器,也不是某個域的slave伺服器,一個伺服器可以不包含任務域的配置信息,它將接手到所有DNS查詢進行遞歸解析,將解析結果返回給查詢客戶端,並且將查詢結果緩存下來,這樣的DNS伺服器稱之為caching name server。
通常一個區域網中配置緩存伺服器是為了加速網路訪問。
也可以為緩存伺服器配置一個上游DNS伺服器地址,緩存伺服器可以給客戶提供一個上游DNS伺服器的地址,我們可以通過 以下設置完成:
在主配置文件中的option中加入:
forwarders { 192.168.0.168;};還可以通過一下選項讓伺服器轉發所有DNS查詢到forwarders伺服器:
在主配置文件中的option中加入:
forward only;
到此DNS域名解析搭建教程結束
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/281196.html
微信掃一掃
支付寶掃一掃