搭建自己的DNS服務器是一個很常見的訴求,尤其是在公司內部。linux下架設DNS服務器通常是使用BIND程序來實現,BIND是美國加利福尼亞大學伯克利分校開發的軟件,是一套域名服務器軟件包,該軟件實現了 DNS 解析協議,可以在 Linux 系統上通過這個軟件包來提供域名解析服務。
1、安裝BIND
通常Linux系統會自帶BIND軟件,檢查自己的服務器是否已安裝,可以執行如下命令來檢測:
如果出現如上圖執行結果,則表示當前系統已經安裝了BIND軟件。反之,則沒有。安裝BIND,你可以使用 yum install -y bind* 命令。安裝結果大概如下:
BIND軟件安裝完畢后,你可以通過 systemctl start named.service 命令來啟動BIND軟件。BIND啟動成功后,通過 netstat -npl|grep named 查看運行結果,如下:
從結果中我們可以看到 named 進程是 BIND 軟件的運行進程,它可以同時支持 udp/tcp 兩種協議,默認使用53端口。此外 named 進程同時監聽了953端口,主要用于為遠程管理工具提供控制通道。
2、配置BIND
安裝了BIND后,你還需要配置一下BIND。Bind的主配置文件是etc/name.conf,該文件是文本文件,一般需手動生成。除了主配置文件外,/var/named目錄下的所有文件都是DNS服務器的相關配置文件,這些配置文件共同保證BIND的正常運行。下面詳細講述這些文件的配置。
1)name.conf 文件,用來定義bind服務程序的運行
通常情況下只需要修改 listen-on 和 allow-query 兩項即可,如下:
這里分別表示服務器上的所有IP地址均可提供DNS域名解析服務,以及允許所有人對本服務器發送DNS查詢請求。
2)/etc/named.rfc1912.zones 文件,用來保存域名和IP地址對應關系的所在位置。類似于圖書的目錄,對應著每個域和相應IP地址所在的具體位置,當需要查看或修改時,可根據這個位置找到相關文件。
解析新域名時,就是在此文件中增加新的解析規則。如下:
3)named.ca 文件,這是根域配置文件,根域配置文件設定根域的域名數據庫,包括根域中13臺DNS服務器的信息。幾乎所有系統的這個文件都是一樣的,一般情況下,用戶不需要進行修改。
4)正向域名解析數據庫文件,這里對應第 2)步中 file 字段指定的文件,它的作用是定義域名到ip的對應關系。
5)反向域名解析數據庫文件,這里也是對應第 2)步中 file 字段指定的文件,它的作用是定義ipd到域名的對應關系。
3、域名解析
域名解析分為正向解析和反向解析,正向解析是將域名解析到ip,反向解析是將ip解析到域名。
3.1 正向解析
1)修改區域配置文件 /etc/named.rfc1912.zones,為 example.com 定義一條正向解析規則,如下:
2)修改數據配置文件 example.com.zone
3.2 反向解析
在DNS域名解析服務中,反向解析的作用是將用戶提交的IP地址解析為對應的域名信息,它一般用于對某個IP地址上綁定的所有域名進行整體屏蔽,屏蔽由某些域名發送的垃圾郵件。它也可以針對某個IP地址進行反向解析,大致判斷出有多少個網站運行在上面。當購買虛擬主機時,可以使用這一功能驗證虛擬主機提供商是否有嚴重的超售問題。
1)修改區域配置文件 /etc/named.rfc1912.zones,為 example.com 定義一條反向向解析規則,如下:
注意:反向解析是把IP地址解析成域名格式,因此在定義zone(區域)時應該要把IP地址反寫,比如原來是192.168.10.0,反寫后應該就是10.168.192,而且只需寫出IP地址的網絡位即可。
2)修改數據配置文件 245.168.192.arpa
4、重啟服務
修改了配置文件后,一定要重啟服務器,這樣配置的內容才能生效。