一、Unbound服務的安裝與運行管理
1.獲取Unbound軟件包
RHEL7.x自帶了Bind和Unbound兩種DNS服務包,Unbound是紅帽公司推薦使用的DNS服務器。目前,雖然Bind在全球擁有最多的用戶,但這個老牌產品是針對簡單網絡設計的,隨着網絡的迅速發展,Bind系統已經越來越不適應在如今復雜的大規模網絡環境下提供DNS服務了。Unbound是FreeBSD(類Unix)操作系統下的默認DNS服務器軟件,它是一個功能強大、安全性高、跨平台(類Unix、Linux、Windows)、易於配置,以及支持驗證、遞歸(轉發)、緩存等功能的DNS服務軟件,其主要安裝文件有:
(1) unbound-1.4.20-28.el7.x86_64.rpm:DNS的主程序包。
(2) unbound-libs-1.4.20-28.el7.x86_64:進行域名解析必備的庫文件。
2.檢查是否已安裝Unbound軟件包
[root@dyzx ~]# rpm -qa unbound*
unbound-libs-1.4.20-28.el7.x86_64
3. 安裝Unbound軟件包
[root@dyzx ~]# mount /dev/cdrom /mnt
[root@dyzx ~]# rpm -ivh /mnt/Packages/unbound-1.4.20-28.el7.x86_64.rpm
4.Unbound服務的運行管理
(1)Unbound服務的啟動、停止、重啟、重新加載和狀態查詢
systemctl start|stop|restart|reload|status unbound.service
(2) Unbound服務在系統開機時自動啟動或不啟動
systemctl enable|disable unbound.service
(3)檢查Unbound進程
ps -ef | grep unbound
(4)查看Unbound服務啟動后偵聽的端口
ss -tunap | grep unbound
使用Unbound軟件部署DNS服務器時,相關的配置文件及目錄。
位置及名稱 |
作用 |
/etc/unbound/unbound.conf |
主(全局)配置文件 |
/etc/unbound/local.d/ |
子配置文件所在目錄。其中的*.conf文件用於定義正向解析記錄和反向解析記錄以及設置轉發 |
/etc/hosts |
用於指定IP地址與主機名的映射關系 |
/etc/resolv.conf |
為Linux客戶端指定DNS服務器的IP地址的配置文件 |
/etc/nsswitch.conf |
/etc/nsswitch.conf文件的第39行“hosts: files dns”規定了一台主機解析的順序,首先找的是本地文件/etc/hosts,然后再是DNS。 |
二、授權DNS服務器的配置
1、案例需求
為學校搭建一台授權DNS服務器,該服務器能訪問互聯網中其他DNS服務器,能解析校園網內搭建的所有服務器的域名,並通過配置轉發地址使校園網內的用戶使用域名訪問校園網內外的服務器,網絡連接方式及配置參數如圖所示:
服務器 |
完全合格域名 |
IP地址 |
授權DNS服務器 |
dns1.dyzx.edu |
192.168.8.1 |
純緩存DNS服務器 |
dns2.dyzx.edu |
192.168.8.2 |
Web服務器 |
www.dyzx.edu |
192.168.8.3 |
FTP服務器 |
ftp.dyzx.edu |
192.168.8.3 |
郵件服務器 |
mail.dyzx.edu |
192.168.8.4 |
2、授權DNS服務器的配置
步驟1:以root用戶身份登錄RHEL7系統→配置DNS服務器網卡的IP地址為192.168.8.1/24、主機名為dns1.dyzx.edu。
步驟2:安裝.Unbound軟件包→啟動和開機自動啟動Unbound服務。
[root@dns1 ~]# mount /dev/cdrom /mnt [root@dns1 ~]# rpm -ivh /mnt/Packages/unbound-1.4.20-28.el7.x86_64.rpm [root@dns1 ~]# systemctl start unbound [root@dns1 ~]# systemctl enable unbound |
步驟3:使用vim編輯配置文件unbound.conf,對服務器全局參數進行配置
[root@dns1~]# vim /etc/unbound/unbound.conf //配置區域的全局參數: interface: 192.168.8.1 //38行:設置監聽的網絡接口(默認監聽localhost網絡接口) access-control: 192.168.8.0/24 allow //176行:允許allow或拒絕refuse給哪些地址提供解析服務 username: "” //211行:改成空字符串,表示任何用戶均可訪問 domain-insecure: "dyzx.edu" //372行:跳過驗證域“dyzx.edu”,以避免信任鏈驗證失敗 include: /etc/unbound/local.d/*.conf //472行:將指定的其他可能的配置文件包含進當前文件 |
步驟4:配置正向解析記錄和反向解析記錄。可以在全局配置文件中配置,也可以在/etc/unbound/local.d目錄中定義一個以.conf結尾的文件中(如/etc/unbound/local.d/domain.conf)配置(以全局配置文件中的第454行~第470行為格式模板)。在此,繼續在全局配置文件中配置正向和反向解析記錄。
[root@dns1~]# vim /etc/unbound/unbound.conf local-zone: "dyzx.edu." static //455行:設置解析的區域名 //添加以下7行local-data,以定義正向解析記錄 local-data: "dyzx.edu. 86400 IN SOA dns1.dyzx.edu. root.dyzx.edu 1 1D 1H 1W 1H" local-data: "dns1.dyzx.edu. IN A 192.168.8.1" local-data: "dns2.dyzx.edu. IN A 192.168.8.2" local-data: "www.dyzx.edu. IN A 192.168.8.3" local-data: "ftp.dyzx.edu. IN CNAME www.dyzx.edu." local-data: "mail.dyzx.edu. IN A 192.168.8.4" local-data: "dyzx.edu. IN MX 5 mail.dyzx.edu." //添加以下5行local-data-ptr,以定義反向解析記錄 local-data-ptr: "192.168.8.1 dns1.dyzx.edu" local-data-ptr: "192.168.8.2 dns2.dyzx.edu" local-data-ptr: "192.168.8.3 www.dyzx.edu" local-data-ptr: "192.168.8.3 ftp.dyzx.edu" |
步驟5:配置轉發。任何一台DNS服務器能直接提供的解析記錄都是有限的,當用戶請求的解析記錄超出了某台DNS服務器所能解析的范圍時,就需要在該DNS服務器上設置轉發功能,以便把超范圍的用戶解析請求轉發給其他DNS服務器代為解析。若要將本DNS服務器的解析請求轉發給由ISP提供的IP地址為8.8.8.8的公共DNS服務器,則只要在unbound.conf作以下修改便可。
[root@dns1 ~]# vim /etc/unbound/unbound.conf forward-zone: //547行:定義轉發forward name: "." //轉發所有的查詢 forward-addr: 8.8.8.8 //將解析請求轉發到指定IP地址的DNS服務器 |
步驟6:檢測配置文件是否有語法錯誤,沒有錯誤后,重啟服務:
[root@ dns1 ~]# unbound-checkconf unbound-checkconf: no errors in /etc/unbound/unbound.conf [root@ dns1 ~]# systemctl restart unbound |
步驟7:在服務器端的防火牆中開放DNS服務。
[root@ dns1 ~]# firewall-cmd --permanent --add-service=dns //設置防火牆開放DNS服務
[root@ dns1 ~]# firewall-cmd –reload
步驟8:Linux客戶端測試。在客戶端修改/etc/resolv.conf文件,將DNS服務器的IP地址指向上述所配置的授權DNS服務器的IP地址→使用nslookup命令驗證DNS查詢結果。
[root@client ~]# vim /etc/resolv.conf nameserver 192.168.8.1 [root@client ~]# nslookup > www.dyzx.edu //驗證正向解析記錄 Server: 192.168.8.1 Address: 192.168.8.1#53 Name: www.dyzx.edu Address: 192.168.8.3 > 192.168.8.1 //驗證反向解析記錄 Server: 192.168.8.1 Address: 192.168.8.1#53 1.1.168.192.in-addr.arpa name = dns1.dyzx.edu. > set type=cname //驗證別名記錄的解析結果 > ftp.dyzx.edu Server: 192.168.8.1 Address: 192.168.8.1#53 ftp.dyzx.edu canonical name = www.dyzx.edu |
測試2:
> set type=mx //驗證MX記錄的解析結果 > dyzx.edu Server: 192.168.8.1 Address: 192.168.8.1#53 dyzx.edu mail exchanger = 5 mail.dyzx.edu. > www.baidu.com //驗證轉發功能的解析結果 Server: 192.168.8.1 Address: 192.168.8.1#53 Non-authoritative answer: www.baidu.com canonical name = www.a.shifen.com. Name: www.a.shifen.com Address: 58.217.200.112 Name: www.a.shifen.com Address: 58.217.200.113 > exit //退出nslookup命令,結束測試 |
三、純緩存DNS服務器的配置
為了提高校園網內域名解析的效率,減少校園網出口流量,現搭建一台純緩存DNS服務器,配置參數如下圖所示,其中遞歸查詢轉發到校園網內地址為192.168.8.1的授權DNS服務器。
步驟1:以root用戶身份登錄RHEL7系統→配置DNS服務器網卡的IP地址為192.168.8.2/24、主機名為dns2.dyzx.edu。
步驟2:安裝.Unbound軟件包→啟動和開機自動啟動。
[root@ dns2 ~]# systemctl start unbound
[root@ dns2 ~]# systemctl enable unbound
步驟3:使用vim編輯全局配置文件unbound.conf。
[root@dns2~]# vim /etc/unbound/unbound.conf //配置區域的全局參數: interface: 192.168.8.2 //38行:設置DNS服務監聽所有網絡接口 msg-cache-size: 8m //108行:緩存大小 access-control: 0.0.0.0/0 allow //177行:允許所有地址訪問,refuse表示拒絕;allow表示允許 username: "" //211行:改成空字符串,表示任何用戶均可訪問 domain-insecure: "dyzx.edu” //372行:跳過驗證域"dyzx.edu",以避免信任鏈驗證失敗 forward-zone: //547行:除掉行首"#"號,配置轉發 name: ".” //548行:除掉行首"#"號,並將"example.com"改為"." forward-addr: 192.168.8.1 //549行:將所有解析請求轉發給192.168.8.1的授權DNS服務器 |
步驟4:檢測配置文件是否有語法錯誤,確認無誤后重新加載unbound服務:
[root@ dns2 ~]# unbound-checkconf unbound-checkconf: no errors in /etc/unbound/unbound.conf [root@ dns2~]# unbound-control reload |
步驟5:配置防火牆允許DNS流量。
[root@ dns2 ~]# firewall-cmd --permanent --add-service=dns //設置防火牆開放DNS服務 [root@ dns2 ~]# firewall-cmd --reload |
步驟6:驗證純緩存DNS服務器。將客戶端的DNS服務器的IP地址設為純緩存DNS服務器的IP地址,然后使用nslookup命令測試正向解析和反向解析的效果。