DNS( Domain Name Service) 做爲一個很是讓人耳熟能詳的概念,這種技術能夠把複雜難記的IP地址轉化成爲一個域名供人們去調用,這樣人們只須要記住每個網站的域名而不須要記住很是複雜的IP地址。html
這種技術這裏不作深刻探討,只須要對DNS的過程有一個大概的瞭解便可,將來會有一篇專門探討 DNS 協議及其安全問題的安全博客,在這篇安全博客將會詳細描述安全實驗的步驟。
linux
DNS ZONE:web
DNS Zone,DNS域,被用來劃分DNS主域。傳統的DNS域相似一個樹狀的結構,被分紅不一樣的區域,這些區域可區分一個DNS服務器中命名空間中不一樣的區域。 DNS區域是構成DNS命名空間的一部分,由特定組織或管理員加以管理,其能夠對權威性域名服務器等DNS組件更加精細的控制。 域名空間是一個分層數,其中DNS的根域位於頂部,DNS區域始於該樹中的一個域,而且能夠擴展到下邊的子域。算法
常見的資源記錄類型:shell
A :Address地址, IPv4數據庫
AAAA:Address地址 IPv6ubuntu
NS :Name Server域名服務器windows
SOA:Start of Authority 起始受權機構centos
MX:Mail Exchanger 郵件交換緩存
CNAME:Canonical Name規範名
PTR:Pointer指針
TXT:Text
SRV:Service
CNAME
CNAME-records ( Canonical name for an alias )是域名的別名。一個服務器地址 nyc3.example.com 這個主機域名可能會提供不一樣的服務,好比說一個域名即要去提供 web服務,也要提供 ftp 服務,那麼這個時候就須要一個別名域名來指向原來的域名,這個時候就可使用一個 A 記錄來管理多個域名,爲DNS後期修改配置提供方便。舉個例子:
我想要搭建一個博客網站後臺爲博客網頁提供web服務,我想要節省我服務器搭建的成本開銷,只想租用一個服務器並配置相關域名解析,個人博客網站如今提供的服務有評論,分享,登錄受權,註冊,這個時候我須要同時在這個服務器上開通這些服務,一開始你的博客網站默默無聞,訪問量以及下載量並非那麼大,這個時候你的服務器負載並非那麼嚴重;當你的訪問量暴增的時候,這個時候就須要考慮到你的服務器的流量轉發問題了~原始服務器的流量暴增已經讓你的服務器性能急劇降低,你須要將原來的提供服務的服務器的相關模塊提供一個內容分發模塊 (CDN),這個CDN提供商要求你的域名作一個Pointer來指向他們爲你提供的 DNS地址,這個時候你的 CName 就能夠指向他們提供的域名,作到對DNS流量的分發,從而實現網站的流量負載均衡做用。
NS (Name Server)
域名服務器,NS,用於肯定哪些服務器(注意不是單個服務器)爲一個局域網傳遞DNS信息以及肯定域名由哪一個服務器進行解析。
通常NS配置在 BIND9 中的 db 文件中進行配置,在 SOA 配置以後。NS記錄 和 SOA記錄是任何一個DNS區域都不能或缺的兩條記錄。
SOA( Start of Authority)
SOA 又被稱做 起始受權機構記錄, 被標記成在衆多NS記錄中哪一臺是主服務器。
SOA 記錄表示此域名的權威解析服務器地址,當要查詢的域名在全部遞歸解析服務器沒有域名的解析緩存時,會回源到請求此域名的SOA 記錄,也叫作權威解析記錄。
SOA 做爲全部區域文件的強制性記錄,他必須是 ZONE 文件中的第一個記錄。
SRV (Service)
SRV 記錄是從 RFC2052 中對 SRV資源進行了定義。SRV 被用來記錄服務器提供什麼樣的服務。
FQDN(Fully Qualified Domain Name) 徹底合格域名/全程域名,即域名能夠經過DNS進行解析,其公式 FQDN = HostName + Domain。
這門技術解決了一個多個主機的問題,一個網站或者服務器集羣通常都是有多個主機一塊兒協做的,好比說包括正向代理服務器、反向代理服務器、Web服務器、Email服務器、OA服務器、FTP服務器等等,這個時候就涉及是否是需不須要爲每個主機申請一個域名。 有了這個技術以後每個主機均可以本身申請一個 Hostname
來區別於其餘的主機,這個時候就只須要一個域名就能夠作到管理全部的主機。
好比我申請了一個域名: doheras.com
如今我有兩個服務器須要用到這個域名,一個 FTP服務器,一個Web服務器,這兩個服務器都須要用到 doheras.com
這個域名,根據公式,咱們知道能夠採用 hostname
的方式來訪問不一樣的主機:
Web 服務器: web.doheras.com
FTP 服務器: ftp.doheras.com
所以, FQDN 服務能夠簡化在服務和應用中的配置流程,提升配置文件的可維護性。
在配置DNS的過程當中,由於服務端的工做在UDP協議端口53上,DNS須要FQDN提供正向解析 (FQDN --> IP)以及反向解析 (IP --> FQDN) 的服務。
BIND(Berkeley Internet Name Domain)做爲一款目前市面是最主流的開源DNS軟件,佔據了市面上DNS服務器軟件的九成,目前由 互聯網系統協會 (Internet Systems Consortium) 負責開發和維護。目前,最新的穩定版BIND已經更新到了 BIND 9 版本。
BIND能夠運行的系統和平臺很是得全面,從官網上來看,目前支持的主流的Linux操做系統及其服務器種類有: Ubuntu、Debian、Fedora/CentOS。其中對於Fedora的版本支持已經涵蓋了最新版本:Fedora 33。在Linux平臺上能夠作到對 BIND 源碼的編譯和特殊功能定製的操做,對於該軟件在實際運行過程當中的安全性的探討研究。其基本功能支持在服務器或者是本機上搭建定製的DNS服務並作到域名解析功能。對於將該軟件部署到Linux平臺最具備優點的方面是定製化的DNS服務,由於源碼對於每個開發人員和網絡管理人員都是透明的,所以能夠作到對該軟件的隨意定製。
其次,對於使用較爲普遍的Windows操做系統,BIND也給出了能夠運行的解決方案,可是其定製化的功能由於平臺的緣由收到了限制和Windows 10 操做系統的相關問題,所以我認爲不推薦 BIND 在 Windows上的實驗,可是本文也給出了在 Windows 10 操做系統下的安裝辦法,對於 Windows Server 操做系統要求的管理經驗以及熟練度過高,所以本文沒有給出相關配置步驟。
本文中說起到相關實驗和操做步驟的操做環境具體配置要求,都已經根據每一個不一樣章節的內容給出了說明,請在不一樣章節前自行查找相關的配置信息做爲參考。
下邊給出的圖片列舉了Big Sur下搭建模擬DNS虛擬機網絡的拓撲圖,使用的:
172.16.2.11
做爲主要的 (Master) DNS解析服務器,主要爲客戶端提供域名解析服務,全部客戶端的首要訪問的DNS解析服務器是NS1
;172.16.2.12
做爲一個災備的服務器NS2
,被看成一個災備DNS服務器使用,在主機沒法提供域名解析服務的時候被啓用,其配置流程與NS2基本上同樣,惟一的區別是配置須要分清與NS1的主次關係;172.16.2.5
/ 172.16.2.6
/ 172.16.2.7
作爲模擬請求客戶端的虛擬機,其用來模擬和重現配置DNS解析客戶端的配置流程;172.16.2.0
做爲虛擬機鏈接本機的 NAT 網絡的網關地址,用於與 Mac 主機進行通訊;Caution
在 ISC 官網上的 BIND 9 支持的 Linux 版本包括: Debian 、 CentOS 、 Fedora 、 Ubuntu。從網上的資料來講,大多數的選擇都是 Debian 做爲服務器端的選擇。對於非Linux操做系統,Windows / Windows Server 也支持搭建 BIND 9 DNS 服務。
從互聯網上的大多數英文論壇網友的評論來講,本着穩定、安全、實用並容易管理的原則,對上述的主流操做系統進行分析:
對於 Debian 系列的操做系統對於開源社區的更新和支持力度比較大,版本更新較快,新發行的版本可能會存在不穩定的問題和補丁容易帶來系統的安全性、完整性的問題,但其優勢是ISC提供預編譯的 BIND 9 包在 Debian 操做系統上能夠輕鬆作到運行,Debian Server 版本更新補丁的速度都比較快;
CentOS 做爲一款專業的服務器端,擁有穩定、安全的特性,其發行版本通常較爲穩定並通過許多專業人員在服務器端的大量測試,ISC 也爲其編譯了BIND 9 的安裝包,但其缺點在不容易上手和難以操做,對於 CentOS 7 和 CentOS 8 的社區支持和版本更新會在 2021年和2029年終止,而且之後 CentOS Stream 再也不做爲 RHEL的「免費」的商業版本而成爲介於 Fedora 和 RHEL 之間,其定位與 Fedora 較爲相近;在嘗試配置 CentOS 8 的過程當中出現不少不該該出現的問題,好比說從 yum 安裝BIND9時對應目錄下的文件沒法找到,sudo 的用戶添加過於複雜的問題讓人很是惱火。
Ubuntu 做爲經典的桌面版Linux的操做系統,很是穩定和容易上手,可是選擇其做爲服務器端的人數較少,有可能帶來的問題難以被估計。
綜上,我選擇 Debian9 做爲 測試版 DNS Server 的承載操做系統,選擇的依據依賴於其穩定的更新頻率和良好的開源社區,備用的選擇爲 RHEL 和 Fedora。
在接下來的內容,我將選擇 Windows 預先編譯好的服務文件做爲測試搭建DNS服務並詳細描述在 Debian 的搭建 BIND 9 服務的步驟和配置流程。
寫這篇博客的目的是作一個替代F5核心GTM的BIND服務器,構建這個服務器目標是爲了在局域網內核心F5的GTM設備出現故障時候,配置好的 BIND服務器 能夠馬上取代F5 GTM設備充當整個區域網的域名解析服務器爲訪問終端或服務器提供域名解析服務。
在這裏我必須指出在構建這個BIND域名解析服務器時,遇到的一個很是大的困惑。
從上面的模擬DNS虛擬機網絡的拓撲圖中,NameServer(NS)是與主機在同一個網段下的,但實際上,在生產鏈路中的F5 GTM設備並非和其餘的服務器鏈接在同一個網段下的,這就會帶來一個問題,就是當終端想要訪問外網段的DNS解析服務器時,NameServer 會不會不能爲其提供服務?
問題的重現從這篇詳細闡述F5-GTM運做原理的官方文檔開始:https://techdocs.f5.com/kb/en-us/products/big-ip_gtm/manuals/product/gtm-concepts-11-5-0/4.html
這裏邊詳細介紹了F5 GTM的運做原理,以及出現了下邊的圖片,這個部分引發了個人擔心,當鏈路的GTM失效以後,由於GTM與LTM鏈接的子服務器以及子終端由於不在同一個網段中而沒法進行工做:
舉個例子,GTM做爲整個鏈路的核心設備,用於爲LTM設備提供域名解析服務,在實際的生產網絡中中GTM在網絡中拓撲並非與LTM存在於同一個網段的,畫一個圖來表述這個問題:
上圖中,做爲一個簡單的網絡拓撲的再現,四個網絡中LTM都與中間的GTM不在同一個網段中,由於我在以前畫的模擬拓撲全部的設備無論是DNS服務器仍是host終端都在同一個網段,所以設備與設備之間的訪問以及設備與DNS服務器之間的服務創建並不須要跨越網段,所以訪問以及提供服務是沒有任何問題的。
可是若是不在同一個網段呢? 固然這個部分省略了不少關鍵的網絡設備,這裏不一一闡述。
其實這個問題我是想的有一點偏的,或者來講比較多餘,由於:
若是想要了解 GTM 與 BIND 之間的關係,請詳細瞭解 BIG-IP-GTM 中內嵌的模塊 - ZONERUNNER。
這裏以 Debian9 做爲配置講解的環境。
BIND9 的配置文件在安裝以後配置文件名字: named.config
, 在 Linux下被易名爲 named.conf
文件存儲的位置爲:/etc/bind
,其中文件named.conf
引用了三個文件: named.conf.options
、named.conf.local
、named.conf.default-zone
。
在 Debian9 中查找和重啓當前 BIND9 服務的命令是: sudo systemctl status bind9
和 sudo systemctl restart bind9
。
在完成 BIND9 的變異和安裝以後,BIND9 已經建立了一個默認的配置文件 named.conf.local
和 文件 named.conf.options
用於配置 BIND9 的基礎服務,這兩個文件做爲配置DNS的核心文件,修改這兩個文件須要管理員權限,默認的權限爲: root:named,不要隨便更改這兩個文件的運行權限,DNS 服務會出現問題。
配置文件的註釋符號爲 //
通常來講,ACL模塊用來承擔控制主機能夠訪問域名解析服務器的角色,其設置不會讓控制文件的配置很是冗餘和龐大。採用這個配置能夠有效防範DOS以及Spoofing攻擊。通常來講定義這部分的內容來規定IP是否可以被接入以及Blocklist來阻止某些特定的IP地址介入到域名解析服務器中。
ACL匹配客戶端是否可以接入到域名服務器基於三個基本的特徵:
匹配 acl
定義以及使用規則以下: string
是用來命名IP地址集的一個變量名,能夠隨意地被命名;
acl <string> { <address_match_element>; ... };
舉一個在 named.conf.options
文件中被定義的例子:
acl bogusnets { 0.0.0.0/8; 192.0.2.0/24; 224.0.0.0/3; 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16; }; // 這個部分 // Set up an ACL called our-nets. Replace this with the // real IP numbers. acl our-nets { 172.16.2.11/24; 172.16.2.12/24; }; //子網的名稱
logging
部分的配置爲DNS解析服務器提供了日誌記錄的功能,DNS服務器上的全部日誌記錄被存儲到了指定的文件中。其通用的配置文件爲:
logging { category <string> { <channel_name_string>; ... }; channel <string> { buffered <boolean>; file <quoted_string> [ versions ( unlimited | <integer> ) ] [ size <size> ] [ suffix ( increment | timestamp ) ]; null; print-category <boolean>; print-severity <boolean>; print-time ( iso8601 | iso8601-utc | local | <boolean> ); severity <log_severity>; stderr; syslog [ <syslog_facility> ]; }; };
從上邊的通用配置格式能夠看出來,logging
模塊分爲兩個部分,category
和 channel
,channel的做用是指定輸出的方式、日誌格式的選項和事件的嚴重性,每個channel 能夠指定一個 category 來指定記錄的事件類型。其中 category 用來區分不一樣的事件產生的類別或者場景,好比:客戶端請求-client request
、配置文件解析處理-Configuration file parsing and processing
。
若是在 named.conf.options
文件中沒有指定 logging
模塊系統會給出一個默認的配置
logging { category default { default_syslog; default_debug; }; category unmatched { null; }; };
channel
的配置規則:
全部的日誌輸出都須要 channel 來指定輸出格式,BIND9 對於建立 channel 的數量沒有限制。
每個 channel 都須要爲該通道的日誌信息指定一個 destination clause
- 目的句柄,目的句柄在 channel 階段被配置,這個目的句柄用來區分: 1)輸出到具體的文件的名字 - file
;2)輸出到具體的系統日誌工具中(syslog/syslogd)- syslog
;3)輸出到終端顯示- 標準錯誤流(standard error stream);4)或者該錯誤消息直接被丟棄 - null
。
其次,channel 的配置能夠規定每個錯誤日誌消息的響應級別,默認的響應級別是info
,channel 能夠規定接受錯誤消息的級別;此外,channel 還能夠控制輸出錯誤日誌消息的格式,能夠包含:響應時間戳、category名字、嚴重等級等。
channel
的配置參數:
buffered
: 用來規定是否刷新錯誤日誌的文件,其參數值爲<boolean>
,在 BIND9 中 <boolean>
值的參數值爲 yes
/ no
,若是設置成爲 yes
那麼日誌消息流(通常每個錯誤日誌消息都是一個 Log Entry)就不會刷新,而是被保存在緩衝區中了,不會刷新到文件中。
file
: 相似於Linux的通道概念,file 將日誌輸出流經過通道直接輸出給文件,從上邊的通用配置能夠看出來能夠爲 file 指定文本文件的大小 - size
;指定 log 文件的版本號 - version
;指定用於命名備份版本的格式 - suffix
size
用來限制log文件的大小,若是log文件的大小設置超過了設定的閾值,那麼系統會自動中止輸出內容到文件中;
versions
: 用於指定新建立的 log文件數存儲到本地的上限值,默認的參數值爲unlimited
,當指定的文件的大小超過設定的size
值得時候,若是沒有指定 versions
,那麼系統就不會繼續寫進log;若是制定了versions
,那麼就會繼續寫入;
suffix
:設定用來命名log
文件的方式;好像沒啥用,我添加這個參數沒有什麼反應...;
syslog
:將通道定向到系統的日誌文件流中; 經常使用的支持日誌文件服務爲:dameon
、syslog
、local6
、local7
;
severity
:用來承擔定義日誌嚴重級別的定義角色,至關於 syslog
- priorities
。好比說定義了日誌的嚴重級別爲 Debug
,那麼會輸出日誌事件 Debug
以上的錯誤到文件中。通常經常使用的嚴重等級: debug[level]
、notice
、warning
、dynamic
- 與當前服務器的日誌保持一致;通常的 DNS服務器的日誌等級調成 info
便可;
stderr
:將通道指向服務器的標準錯誤流。這是爲了在服務器做爲前臺進程運行時使用;
print-time
: yes
/ no
/ local
/ iso8601
/ iso8061-utc
能夠設定不一樣的輸出到日誌文件的時間格式;
print-category
:打印日誌消息配置category
的信息;
print-severity
: 打印日誌的嚴重等級
category
詞組配置規則:category <config_string> { <channel_name_string>; ... };
client
: 客戶端請求;cname
:因爲是CNAME而不是a /AAAA記錄 的域名服務器;config
: 配置文件解析和處理過程;database
:與名稱服務器內部用於存儲區域和緩存數據的數據庫相關的消息;general
: 沒有被歸類的 category
類別的其餘種類的日誌文件信息;lame-servers
: 遠程服務器中的錯誤配置,BIND 9在解析期間試圖查詢這些服務器時發現;network
: 網絡操做;notify
: 通知協議;queries
:記錄全部查詢 DNS服務器的 query;query-errors
: 關於致使某些失敗的查詢的信息;xfer-in
:區域傳輸服務器正在接收;xfer-out
:區域傳輸服務器正在發送的信息;zoneload
:加載區域和建立自動空區域;怎麼去配置這個服務?
配置的 logging
服務會建立指定的日誌文件,該日誌文件從服務掛起的時候被建立,用於記錄DNS服務中的相關的配置信息以及交換信息。在 Debian9 的默認存儲目錄爲 /var/cache/bind/*
。你也能夠爲其指定存儲的位置。
若是你想要配置成一個本身的目錄,首先你須要建立一個自定義的目錄,好比說我指定了我想要存放日誌的文件的目錄: /var/log/bind
,若是不爲這個文件使用chown
命令指定權限的話會出現 isc_stdio_open '/var/log/example.log' failed
的報錯。解決方法是: sudo chown bind:root /var/log/bind
如今咱們已經基本上了解了 logging 的工做原理,其工做機制簡單地來講就是,首先你須要建立一個 channel 來規定輸出日誌流的格式還以及日誌文件名、文件版本,每個 channel 能夠被多個 category 調用使用,每個 category 至關於一個 BIND9 內嵌的服務模塊,服務模塊去調用日誌配置模最後輸出格式化日誌。
options
的參數設置會影響整個 BIND9 DNS環境的配置,具體各部分經常使用到的配置參數以下:
listen-on
: 用於配置監聽的端口以及IPv4地址,默認的監聽端口爲:53;listen-on-v6
:用於監聽 IPv6 地址以及端口;directory
: 用於指定讀取DNS數據文件的文件夾,默認的文件夾的路徑爲:/var/cache/bind
;dump-file
:選項用來設置域名緩存數據庫文件的位置,能夠本身定義。默認的存儲文件爲:named_dump.db
;statistics-file
:選項用來設置狀態統計文件的位置,能夠本身定義。;memstatistics-file
:選項用來設置服務器輸出的內存使用統計信息。默認保存在 /var/named/data
目錄下,文件名爲 named.memstats
;allow-query
:選項用來設置容許DNS查詢的客戶端地址,默認值爲localhost
, 能夠設置爲某個網段、任意地址、具體的某臺主機三種狀況。例如,要修改成任意地址,就在括號內的加入 any
,也能夠引用以前建立的 acl
內的全部地址;recursion
:用於設置遞歸查詢,通常客戶機和服務器之間屬於遞歸查詢,即當客戶機向DNS服務器發出查詢請求後,若DNS服務器自己不能解析,則會向另外的DNS服務器發出查詢請求,獲得結果後轉交給客戶機。此選項有yes
和no
兩個值。這個選項用於設置 Failover 很是有用;dnssec-enable
: 選項用來設置是否啓用DNSSEC
支持,DNSSEC
能夠用來驗證DNS數據
的有效性,該選項有yes
和no
兩個值,默認值爲yes
。dnssec-validation
:選項用來設置是否啓用DNSSEC確認,默認值爲yes
,能夠選擇 auto
。bindkeys-file
: 用來設置內置信任的密鑰文件,其默認值爲 /etc/named/iscdlv.key
;managed-keys-directory
: 選項用於指定目錄中的文件存儲位置,跟蹤管理 DNSSEC
密鑰, 這部分的內容在後邊會有介紹;forwarders
:DNS轉發器。用於設定該DNS解析服務器沒法進行當前域名解析的狀況下,進行轉發解析的DNS地址,其中 8.8.8.8
和 8.8.4.4
是谷歌的免費DNS服務器的網絡地址;233.5.5.5
和 233.6.6.6
是阿里雲的免費DNS地址。當設置了 forwarder
的轉發器以後,全部的非本域的和在緩存中沒法查找到的域名查詢都轉發都設置的DNS轉發器,由DNS轉發器 完成轉發操做。所以這臺轉發器的緩存中就記錄了豐富的域名信息。所以若是遇到非本域的查詢,轉發器的緩存就能夠作到查詢,從而減小了向外部的查詢流量。forward
: 選擇默認的IP地址便可;controls語句聲明瞭系統管理員用於管理名稱服務器遠程操做的控制通道。rndc
使用這些控制通道向名稱服務器發送命令,並從名稱服務器檢索非dns結果。
該文件定義了 BIND9 中的 ZONE(區域)文件在named.conf
文件中的定義,用於定義解析的域名的數據庫文件,即域名與IP地址的映射關係以及DNS發送的解析域名數據包的相關參數設置,其定義的格式以下:
zone "<YOUR DNS Domain Name >" { <Configurations> }
固然你也能夠定義你的反向解析域名經過如下的格式進行定義:
zone "<YOUR IP ADDRESS>-addr.arpa" { <Configurations> }
經常使用的參數配置以下:
file
- 和 options
的參數的含義是同樣的,用於指出域名與IP地址解析的數據庫配置文件;allow-transfer
: 這個地方的配置是用來給出 Failover 或者是 遞歸查詢DNS服務器的IP地址,若是以前在 options
裏配置的allow-transfer
若是設置成了參數 yes
, 那麼須要在這裏指出遞歸查詢服務器的IP地址;type
: 用於指定當前DNS解析服務器的位置,是主服務器 - master 仍是從服務器 - slaver?BIND 9 部署到 Windows 環境須要知足如下的環境條件:
Windows 64 bit for win64 built using Microsoft Visual Studio 2012 (.x64.zip)
ISC 要求須要知足運行環境下 Microsoft Visual Studio 2012
及其依賴的安裝, 不能運行在 Microsoft Windows XP
和 Microsoft Windows Server 2003
下。
Windows版本下載的網址請單擊: https://www.isc.org/download/
目前 ISC 給出了三種能夠下載的版本,第一種是測試版本 9.17.9
, 第二種是穩定版本 9.16.11
,我使用的是該版本做爲 Windows下的測試版本,第三種版本是 9.11.27
做爲一種穩定的老舊版本,已經中止了更新維護。
1.下載完成以後,須要安裝的文件是一個壓縮文件 ( BIND9.16.11.x64.zip ),在 Windows下解壓以後便可正常運行。下圖爲解壓以後的文件目錄。
2.使用管理員權限打開 BINDInstall.exe
文件,進入到界面的安裝步驟中。未使用管理員權限打開該文件可能會帶來安裝過程當中的錯誤。
3.在下邊的圖片請選擇:
Keep Config Files After Uninstall
、 Start BIND Service After Install
以及 Automatic Startup
選項,確保可以在設備重啓以後DNS服務能夠正確被運行。Service Account Name
爲默認值不要更改,更改爲其餘的字符串會發生錯誤。4.正確配置以後會提示你安裝 Microsoft Visual C++ 2017
, 若是已經安裝請單擊 修復 保證安裝的環境是正確的,若是系統環境中沒有該運行的環境請按照提示進行安裝。
5.安裝成功以後會提示:
6.將全部的工具加入到Windows環境變量中。
右鍵單擊 「此電腦」,單擊 「屬性」,單擊「高級」,單擊「環境變量」。
找到 Path
的環境變量,雙擊並加入新的路徑: C:\Program Files\ISC BIND 9\bin
驗證:
在命令行界面輸入: dig
C:\Users\DoHeras>dig ; <<>> DiG 9.16.11 <<>> ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34160 ;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 4502 IN NS a.root-servers.net. . 4502 IN NS g.root-servers.net. . 4502 IN NS l.root-servers.net. . 4502 IN NS c.root-servers.net. . 4502 IN NS d.root-servers.net. . 4502 IN NS b.root-servers.net. . 4502 IN NS k.root-servers.net. . 4502 IN NS h.root-servers.net. . 4502 IN NS i.root-servers.net. . 4502 IN NS j.root-servers.net. . 4502 IN NS e.root-servers.net. . 4502 IN NS m.root-servers.net. . 4502 IN NS f.root-servers.net. ;; Query time: 31 msec ;; SERVER: 172.16.2.1#53(172.16.2.1) ;; WHEN: Thu Jan 28 18:34:42 中國標準時間 2021 ;; MSG SIZE rcvd: 239
區別於舊版的 ISC BIND 服務,舊版的軟件安裝在 C:\Windows\System32\dns
中,新版軟件安裝的目錄則在 C:\Program Files\ISC BIND 9
,所以新版軟件的環境配置相比舊版的直接在系統目錄下安裝更加複雜。
1.安裝結束以後,進入到安裝目錄 C:\Program Files\ISC BIND 9\bin
下運行 rndc-config.exe
來生成一個 rndc.key
。這個 key 是 BIND 9.x版本的新功能,是有關DNS更新以及更新時加密處理的,跟咱們我的用戶無太大關係,不過基於兼容性,仍是照作。 這個 key 生成的路徑爲: C:\Program Files\ISC BIND 9\etc
, 同時這個文件夾也是用來存放 BIND 服務的配置文件的。
生成後的 key 顯示以下:
![06](../DNS 解析/DNS:BIND/06.png)
2.配置一個 named.conf
文件, 同時這個文件也是 BIND 的配置文件,目前配置文件的內容先簡單以下:
options { // zone文件的位置 directory "C:\Program Files\ISC BIND 9\etc"; // 沒法解析的域名就去查詢ISP提供的DNS // 在下面的IP地址位置上填寫ISP的DNS地址 forwarders { //這裏是你本機IP或者127.0.0.1 127.0.0.1; }; // 僅容許本機與192.168.0.0網段內的機器查詢 allow-query { 127.0.0.1; 192.168.0.0/16; 10.231.0.0/16; 10.232.0.0/16; }; }; // 根DNS zone "." { type hint; file "root.zone"; }; // localhost zone "localhost" IN { type master; file "localhost.zone"; allow-update { none; }; }; // localhost的反向解析 zone "0.0.127.in-addr.arpa" { type master; file "localhost.rev"; }; // 123.com是咱們爲本身的域的正向解析配置 zone "123.com" IN { type master; file "123.com.zone"; }; // whalecloudvcenter.com是咱們爲本身的域的正向解析配置 zone "whalecloudvcenter.com" IN { type master; file "whalecloudvcenter.com.zone"; }; // whalecloudvcenter.com的反向解析 zone "100.168.192.in-addr.arpa" { type master; file "whalecloudvcenter.com.rev"; };
3.從ISC網站上下載相關的named
文件到本地上,網址爲: https://www.internic.net/domain/named.root
去下載 name.root
文件。 在https://www.internic.net/domain/root.zone
網址中下載root.zone
文件。並將這兩個文件拷貝到C:\Program Files\ISC BIND 9\etc
目錄。
4.建立一個新的 localhost.zone
到 C:\Program Files\ISC BIND 9\etc
中來配置 localhost
的正向解析。
$TTL 1D @ IN SOA localhost. root.localhost. ( 2007091701 ; Serial 30800 ; Refresh 7200 ; Retry 604800 ; Expire 300 ) ; Minimum IN NS localhost. localhost. IN A 127.0.0.1
5.建立一個新的 localhost.rev
文件到 C:\Program Files\ISC BIND 9\etc
中來配置 localhost
的反向解析。
$TTL 1D @ IN SOA localhost. root.localhost. ( 2007091701 ; Serial 30800 ; Refresh 7200 ; Retry 604800 ; Expire 300 ) ; Minimum IN NS localhost. 1 IN PTR localhost.
6.建立一個新的 123.com.zone
文件到 C:\Program Files\ISC BIND 9\etc
中來爲本身的域名來配置正向解析。
123.com. IN SOA ns1.123.com. root.123.com. ( 2007091701 ; Serial 30800 ; Refresh 7200 ; Retry 604800 ; Expire 300 ) ; Minimum IN NS ns1.123.com. * IN A 127.0.0.1
7.建立一個新的whalecloudvcenter.com.zone
到 C:\Program Files\ISC BIND 9\etc
中配置本身的服務器域名的正向解析服務。
whalecloudvcenter.com. IN SOA ns1.whalecloudvcenter.com. root.whalecloudvcenter.com. ( 2007091701 ; Serial 30800 ; Refresh 7200 ; Retry 604800 ; Expire 300 ) ; Minimum IN NS ns1.whalecloudvcenter.com. * IN A 192.168.100.1
8.建立一個新的 whalecloudvcenter.com.rev
到 C:\Program Files\ISC BIND 9\etc
中配置本身服務器域名的反向解析服務。
$TTL 1D @ IN SOA whalecloudvcenter.com. root.whalecloudvcenter.com. ( 2007091701 ; Serial 30800 ; Refresh 7200 ; Retry 604800 ; Expire 300 ) ; Minimum IN NS whalecloudvcenter.com. 1 IN PTR whalecloudvcenter.com.
目前咱們在 C:\Program Files\ISC BIND 9\etc
目錄下的文件有:
9.在剛纔安裝的過程當中,系統已經默認建立了一個新的用戶 named
, 這個用戶用來構建 DNS 服務,下一步須要作到的是爲當前的文件夾配置權限,在目錄 C"\Program Files\ISC BIND 9
配置全部的權限爲: 所有容許。
這步的操做須要對全部在 「組或用戶名」 下的全部用戶和組添加權限,由於不知道新建立的用戶處於哪個分組下,所以須要所有進行建立。
10.在「系統服務」中配置 ISC BIND 9
Service 的相關配置。先打開管理命令行,並輸入 services.msc
,回車。
進入到 「管理服務」 頁面以後,找到 ISC BIND
服務以後雙擊改變屬性。在下圖中,請確認使用帳戶 ./named
用戶進行登陸,密碼在默認的時候已經被配置了,不須要進行更改。
11.最後,完成全部文件的建立和配置更新以後,能夠運行本機的DNS解析服務了,有兩種啓動方式:
ISC BIND
服務進行啓動這裏主要介紹第二種啓動方式:
啓動當前服務:
C:\Program Files\ISC BIND 9\bin>net start named ISC BIND 服務正在啓動 . ISC BIND 服務已經啓動成功。
結束當前服務:
C:\Program Files\ISC BIND 9\bin>net stop named ISC BIND 服務正在中止. ISC BIND 服務已成功中止。
遇到若是現出「 Window 沒法啓動 ISC BIND 服務 錯誤1067
解決辦法:
C:\Program Files\ISC BIND 9\etc
中,須要包含的文件包括:
C:\Program Files\ISC BIND 9
目錄的權限是否改成所有受權的權限C:\Program Files\ISC BIND 9\etc
並刪除 named.pid文件新版的 Debian 的 Release 版本的連接: https://www.debian.org/releases/
歷史的 Debian 版本下載: http://cdimage.debian.org/cdimage/archive/
其中,目前Virtual Private Server 經常使用的版本爲:
Debian 7:Debian 7.8
Debian 8:Debian 8.0/8.2/8.5
Debian 9:Debian 9.1/9.9/9.11
最終考慮其適配的設備的範圍以及穩定性,犧牲最新的 Debian特性以及架構,選擇較爲穩定的版本 Debian 9.11 進行下載,其磁力連接的下載地址爲: http://bttracker.debian.org:6969/stat
下載的文件爲: [Debian_9.11][magnet:?xt=urn:btih:5c9634e7805c8a5049afa92f99946edaa574d449&dn=debian-9.11.0-amd64-DVD-1.iso&tr=udp://bttracker.debian.org:6969&tr=http://bttracker.debian.org:6969/announce]
版本信息:
NAME="Debian GNU/Linux" VERSION_ID="9" VERSION="9 (stretch)" VERSION_CODENAME=stretch```
安裝的步驟省略...或者留到之後進行更補... 配置安裝實體機與虛擬機的安裝選項配置保持一致便可。
在 Debian9 中查找和重啓當前 BIND9 服務的命令是: sudo systemctl status bind9
和 sudo systemctl restart bind9
。
1.Debian 的默認是沒有安裝sudo
工具的,這很是不方便,咱們先安裝sudo
工具,安裝以前由於 Debian 9 的特性,須要修改apt
默認的源,其源文件爲:/etc/apt/resources.list
doheras@debian:~$ su - Password root@debian:~# vi /etc/apt/resources.list # 163 deb http://mirrors.163.com/debian/ stretch main deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib deb-src http://mirrors.163.com/debian/ stretch-updates main non-free contrib deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib deb http://httpredir.debian.org/debian stretch-backports main contrib non-free # VirtualBox deb http://download.virtualbox.org/virtualbox/debian stretch contrib root@debian:~# apt-get update root@debian:~# adduser doheras sudo
2.如今安裝 sudo
工具
root@debian:~# apt-get install sudo -y
3.使用 sudo
工具 安裝 BIND 9 並啓動 BIND 9 服務
doheras@debian:~$ sudo apt install bind9 bind9utils bind9-doc ... ... Wait for Installation Complete ... doheras@debian:~$ service /etc/bind/named start
4.將 BIND 9 設置成爲 IPv4 模式,將下列的 OPTIONS = "-u bind"
設置成 OPTIONS = -u bind -4s
, 並重啓BIND
服務。
doheras@debian:~$ sudo nano /etc/default/bind9 # startup options for the server OPTIONS="-u bind -4" doheras@debian:~$ sudo systemctl restart BIND9
5.請參照以前配置 Windows BIND 服務的流程,咱們須要先配置 Debian 下的 BIND 服務 namemd.conf.options
。配置這個文件須要用到管理員權限,完成以後這些配置指定只有您本身的服務器(受信任的服務器)才能查詢您的DNS服務器的外部域 (Domain)。
doheras@debian:~$ sudo nano /etc/bind/named.conf.options acl "trusted" { 172.16.2.11; 172.16.2.12; 172.16.2.4; 172.16.2.5; 172.16.2.6; }; options { directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. // forwarders { // 0.0.0.0; // }; //=====================================================================$ // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //=====================================================================$ dnssec-validation auto; recursion yes; allow-recursion {trusted;}; listen-on {172.16.2.11;}; allow-transfer {none;}; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; forwarders { 8.8.8.8; 8.8.4.4; 0.0.0.0; }; };
6.更改完 named.conf.options
文件以後,須要更改 named.conf.local
文件來配置正向和反向代理,通常來講這個文件用來配置 DNS Zone。由於咱們設定的主域是nyc3.example.com
,因此咱們須要設定一個正向區域,用來轉發和映射域名 nyc3.example.com
到子網 10.120.0.0/18
。
zone "nyc3.example.com" { type master; file "/etc/bind/zones/db.nyc3.example.com"; # zone file path allow-transfer { 172.16.2.12; }; # ns2 private IP address - secon$ };
7.步驟6設定了DNS Zone 的正向區域,如今設定反向區域。若是您的服務器跨越多個專用子網,但位於同一數據中心,請確保爲每一個不一樣的子網指定其餘區域和區域文件。 完成全部所需區域的添加後,保存並退出named.conf.local
文件。如今,咱們的區域已在BIND中指定,咱們須要建立相應的正向和反向區域文件。
zone "16.172.in-addr.arpa" { type master; file "/etc/bind/zones/db.16.172"; # 10.128.0.0/16 subnet allow-transfer { 172.16.2.12; }; # ns2 private IP address - secondary };
8.建立一個正向轉發區域文檔,轉發區域文件是 BIND 用來轉發DNS和查找DNS的文件,也就是說當DNS Server收到了一個DNS請求的時候,用來查找 Domain Name和對應IP之間的關係。
在前邊的 步驟6 建立的正向區域文件的對應路徑是 /etc/bind/zones
,咱們建立一個這樣的文件夾。
doheras@debian:~$ sudo mkdir /etc/bind/zones
建立完成以後,須要新建一個zone file
,在剛剛新建的文件夾中。
doheras@debian:~$ sudo cp /etc/bind/db.local /etc/bind/zones/db.nyc3.example.com
9.進入到修改/etc/bind/zones/db.nyc3.example.com
區域文件中修改爲下邊給出的文件內容:
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; ; name servers - NS records IN NS ns1.nyc3.example.com. IN NS ns2.nyc3.example.com. ; name servers - A records ns1.nyc3.example.com. IN A 172.16.2.11 ns2.nyc3.example.com. IN A 172.16.2.12 ; 172.16.0.0/18 - A records host1.nyc3.example.com. IN A 172.16.2.4 host2.nyc3.example.com. IN A 172.16.2.5 host3.nyc3.example.com. IN A 172.16.2.6
10.如今建立反向區域的文檔 ,反向區域文件是咱們爲反向DNS查找定義DNS PTR記錄的地方。咱們須要建立的文件爲: /etc/bind/zones/db.10.128
,複製的源文件爲: /etc/bind/db.127
, 複製的命令爲:
doheras@debian:~$ sudo cp /etc/bind/db.127 /etc/bind/zones/db.10.128 doheras@debian:~$ sudo nano /etc/bind/zones/db.10.128
建立完成以後的內容以下:
其中 PTR 的順序爲子網IP地址的倒序: 172.16.2.11
-> 11.2.16.172
; BIND reverse data file for local loopback interface ; ; $TTL 604800 @ IN SOA nyc3.example.com. admin.nyc3.example.com. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; name servers IN NS ns1.nyc3.example.com. IN NS ns2.nyc3.example.com. ; PTR Records 11.2 IN PTR ns1.nyc3.example.com. ; 172.16.2.11 12.2 IN PTR ns2.nyc3.example.com. ; 172.16.2.12 4.2 IN PTR host1.nyc3.example.com. ; 172.16.2.4 5.2 IN PTR host2.nyc3.example.com. ; 172.16.2.5 6.2 IN PTR host3.nyc3.example.com. ; 172.16.2.6
11.如今咱們已經完成了全部文件的建立,如今須要檢查建立的規則是否知足要求:
檢查文件 named.conf.options
的命令
doheras@debian:~$ sudo named-checkconf
檢查 正向區域 (Forward Zone) 是否知足配置的要求
doheras@debian:~$ sudo named-checkzone nyc3.example.com /etc/bind/zones/db.nyc3.example.com
檢查 反向區域 (Reverse Zone) 是否知足配置的要求
doheras@debian:~$ sudo named-checkzone 16.172.in-addr.arpa /etc/bind/zones/db.16.172
12.重啓 BIND 服務 和 配置 UFW 服務在Debian 9服務器上以及容許BIND服務
doheras@debian:~$ sudo systemctl restart bind9
#第一步 #安裝UFW服務 doheras@debian:~$ sudo apt install ufw #第二步 #須要配置一下IPv6的網絡地址 若是您的Debian服務器已啓用IPv6,請確保UFW配置爲支持IPv6,以便它將管理IPv4以外的IPv6防火牆規則。請確保IPv6=yes doheras@debian:~$ sudo nano /etc/default/ufw ... # Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback # accepted). You will need to 'disable' and then 'enable' the firewall for # the changes to take affect. IPV6=yes ... #第三步 #配置Policy 默認的配置是 全部鏈接進來的不能被容許 全部出去的都被容許 doheras@debian:~$ sudo ufw default deny incoming doheras@debian:~$ sudo ufw default allow outgoing #第四步 #容許SSH Connection doheras@debian:~$ sudo ufw allow ssh #第五步 doheras@debian:~$ sudo ufw enable
doheras@debian:~$ sudo ufw allow bind9 doheras@debian:~$ sudo ufw allow Bind9
1.配置的流程與 NS1 配置流程基本上相同,由於 NS2 做爲 NS1 的備用DNS服務器,配置須要保持同樣,這裏附上詳細的每一個文件的配置內容。
named.conf.options
doheras@debian:~$ sudo nano /etc/bind/named.conf.options acl "trusted" { 172.16.2.11; 172.16.2.12; 172.16.2.4; 172.16.2.5; 172.16.2.6; }; options { directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. // forwarders { // 0.0.0.0; // }; //=====================================================================$ // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //=====================================================================$ dnssec-validation auto; recursion yes; allow-recursion {trusted;}; listen-on {172.16.2.12;}; # 這個地方要換成ns2的網絡地址 allow-transfer {none;}; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; forwarders { 8.8.8.8; 8.8.4.4; 0.0.0.0; }; };
named.conf.local
在主DNS服務器上定義與主域對應的從域。注意,類型是slave,文件不包含路徑,而且有一個主指令,應該設置爲主DNS服務器的私有IP地址。若是在主DNS服務器中定義了多個反向區域,請確保將它們所有添加到此處
// // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; zone "nyc3.example.com" { type slave; file "db.nyc3.example.com"; # zone file path masters { 172.16.2.11; }; # ns1 private IP address - secon$ }; zone "16.172.in-addr.arpa" { type slave; file "db.16.172"; # 172.16.2.0/24 masters { 172.16.2.11; }; # ns1 private IP address - secondary };
2.根據 NS1 配置流程安裝和配置 UFW 服務,並開啓 UFW 服務。
$ sudo ufw allow Bind9
說明: Client_n 爲以上配置的 Host_n,其IPv4地址須要與上邊的保持一致。
1.首先,使用ip address
命令查詢私網子網,找到與私網關聯的設備。
$ ip address show to 172.16.2.0/24
會有一個輸出:
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 inet 172.16.2.4/24 brd 172.16.2.255 scope global dynamic noprefixroute ens33 valid_lft 85520sec preferred_lft 85520sec
2.在 Ubuntu 的路徑 /etc/netplan
路徑下找到 *-private-nameservers.yaml
文件,其文件名可能會根據不一樣的設備而不一樣,請仔細檢查該路徑下的文件進行更改,好比說在個人虛機裏個人文件就是 01-private-nameservers.yaml
。
$ sudo nano /etc/netplan/00-private-nameservers.yaml
內容爲:
network: version: 2 ethernets: ens33: # Private network interface nameservers: addresses: - 172.16.2.11 # Private IP for ns1 - 172.16.2.12 # Private IP for ns2 search: [ nyc3.example.com ] # DNS zone
3.完成配置以後,使用下邊的命令讓 NetPlan 採用新的配置,若是存在網絡問題那麼新的配置就會中斷。若是你想要接收當前配置,那麼就輸入 Enter
。
$ sudo netplan try
Do you want to keep these settings? Press ENTER before the timeout to accept the new configuration Changes will revert in 117 seconds
4.如今,檢查系統的DNS解析器以肯定您的DNS配置是否已應用
$ sudo systemd-resolve --status
正確的內容會顯示你剛剛配置的 DNS Server 和 DNS Domain
如今能夠正確的使用DNS Server做爲域名解析了~
1.編輯/etc/sysconfig/network-scripts/ifcfg-ens33
文件。您可能必須用當前主機的主網絡接口的名稱替換ens33
,由於本次模擬搭建的環境爲虛擬機環境,因此必須查看網卡是否對應。
查看網絡配置,從下邊的文字能夠看出虛機的IP地址爲: 172.16.2.6/24
,對應的網卡名稱爲: ens33
CentOS8$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:e6:20:79 brd ff:ff:ff:ff:ff:ff inet 172.16.2.6/24 brd 172.16.2.255 scope global dynamic noprefixroute ens33 valid_lft 84375sec preferred_lft 84375sec inet6 fe80::22ec:5ec9:b729:d16d/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: virbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:3b:9a:58 brd ff:ff:ff:ff:ff:ff 4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000 link/ether 52:54:00:3b:9a:58 brd ff:ff:ff:ff:ff:ff
所以,修改的文件名稱爲 /etc/sysconfig/network-scripts/ifcfg-ens33
CentOS8$ sudo nano /etc/sysconfig/network-scripts/ifcfg-ens33
將上述打開的文件更改成:
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="none" # 取消 DHCP 服務, 更改成 Static IP 模式 DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="2e9c162d-fbed-4f65-8a42-e69285538ac2" DEVICE="ens33" ONBOOT="yes" IPADDR="172.16.2.6" # IP Address NETMASK="255.255.255.0" # NetMask GATEWAY="172.16.2.1" # Gateway / Router DNS1="172.16.2.11" # ns1的IP地址 DNS2="172.16.2.12" # ns2的IP地址 DOMAIN='nyc3.example.com'
2.重啓NetworkManager
服務
CentOS8$ sudo systemctl restart NetworkManager.service
3.安裝 bind-utils
CentOS8$ sudo yum install bind-utils
4.查看 resolv.conf
確認配置是否生效
CentOS8$ cat /etc/resolv.conf # Generated by NetworkManager search nyc3.example.com nameserver 172.16.2.11 nameserver 172.16.2.12
在客戶端 (Host) 輸入如下命令:
CentOS8$ nslookup host1
正確輸出:
Server: 172.16.2.11 Address: 172.16.2.11#53 Name: host1.nyc3.example.com Address: 172.16.2.4
在客戶端 (Host) 輸入如下命令:
CentOS8$ nslookup 172.16.2.11
正確輸出:
11.2.16.172.in-addr.arpa name = host1.nyc3.example.com.
再完成上邊的任務以後,咱們已經搭建了一個簡單的 DNS 服務器 在虛擬機網絡上,如今的任務是咱們須要維護咱們的 DNS記錄來保證服務器的運做穩定和便於維護,這個功能能夠及時、有效地反映服務器的環境以及運行狀況。
named.conf.options
)。db.nyc3.example.com
文件, 爲新主機添加一條 A
記錄,增長Serial
的值;格式根據以前的格式來增長便可。db.16.172
文件,爲新主機增長一條新的 PTR
記錄,增長 Serial
的值,格式根據以前的格式來調整便可。named.conf.options
)。sudo named-checkconf
從上邊來看,咱們能夠爲 DNS Server 增長一個 logging
模塊,添加的內容爲下邊:
logging{ channel default_logfile { file "/var/log/bind/example_1.log" versions 3 size 1m; print-category yes; print-severity yes; print-time yes; severity info; }; channel default_querylogfile{ file "/var/log/bind/query.log" versions 3 size 1m; print-category yes; print-severity yes; print-time yes; severity info; }; channel default_databaselogfile{ file "/var/cache/bind/data/database.log" versions 3 size 3m; print-time yes; print-severity yes; severity debug; }; category default { default_logfile; }; category queries { default_querylogfile; }; category database { default_databaselogfile; }; category unmatched { null; }; };
對於普通的DNS服務器來講,根據進行域名解析的過程不一樣,被分紅了兩種解析模式:遞歸查詢和迭代查詢。簡單來比較這兩個的區別:
遞歸查詢
遞歸查詢由客戶端向本地域名服務器發送請求,而後等待本地域名服務器返回結果。
若是客戶端向一個本地域名服務器請求一個域名的查詢操做可是本地域名服務器並不知道查詢域名的IP地址,那麼本地域名服務器就會模仿扮演成客戶端向根域名服務器發送繼續查詢的請求而不是讓主機本身再向根域名服務器發送進行下一步的查詢,直到查詢到結果或者查詢完全部的根域名服務器;
因此 查詢的結果就是 一個特定的IP地址或者是未找到域名的報錯信息。
迭代查詢
若是根域名服務器收到了本地域名服務器發送的迭代查詢請求報文時,要麼給出所要查詢的IP地址,要麼返回引導的域名服務器進行查詢,因此查詢的動做若是不能給出最終的結果,那麼就是給客戶端返回一個DNS服務器列表供客戶端繼續查詢。
從上邊的概念來看,實現遞歸的DNS服務器性能評價更加困難,由於被測試的DNS服務器有可能與其餘的根域名服務器或者是其餘權威服務器進行查詢交互,或者是管理以及維護以前瞭解到的域名數據緩存。
【等待補充】
【等待補充】
首先, BIND9 的 options
提供的 allow-query
參數能夠對訪問DNS解析服務器的客戶端地址和網段進行限制,從而達到對陌生客戶端和惡意IP地址的封禁。
named.conf.options
中的參數 dnssec-enable
、dnssec-validation
等配置參數都是維護 DNS 服務器安全性的很是重要的配置參數,DNS 的設計起始於上世紀 80 年代,當時互聯網規模小得多,安全性並不是首要設計考慮因素。當DNS的遞歸解析器(DNS Resolver )向權威域名服務器發送查詢請求的時候,解析器沒法驗證響應的真實性。解析器只須要檢查響應的IP地址與解析器發送初始查詢的IP地址是否相同。 可是, 這種檢查機制存在一個很是嚴重的問題:權威域名服務器的請求包的源地址很是容易被僞造和仿冒,攻擊者很容易冒充來自權威域名服務器的響應,而後假裝成解析器最初查詢的權威域名服務器,所以能夠很輕鬆將用戶重定向到其餘的惡意網站。
由於須要考慮到遞歸解析器可能被入侵的場景,域名解析器有一種緩存的機制用來加速解析流程,其原理是從權威域名服務器和根解析器時候收到的上次DNS數據存儲到本地來加速下一次應答,避免查詢一個或者多個權威服務器引起的服務延遲。然而,依靠緩存存在一個缺點,若是攻擊者發送的假冒的DNS權威域名服務器響應被接受,那麼其緩存就會被一直緩存在遞歸解析服務器中,所以以後全部的查詢DNS Server 的主機都會接收到欺詐性DNS數據。若是用戶訪問銀行網站,會怎麼樣?用戶設備在其配置的遞歸域名服務器中查詢銀行網站的 IP 地址。不過,攻擊者能夠經過僞造IP地址向解析器注入惡意的緩存數據,屆時 IP 地址並不是指向目標合法網站,而是指向攻擊者建立的某個網站。這個欺詐網站冒充銀行網站,看上去毫無差異。用戶會毫無防備地輸入名稱和密碼,這就致使用戶在不經意間向攻擊者透露了本身的銀行憑證,攻擊者能夠冠冕堂皇地以用戶的身份登陸合法銀行網站進行轉帳或執行其餘未經受權的操做。
對於解決這個問題, BIND 提供了一種名叫 DNSSEC
的安全擴展服務以及配套的密鑰生成工具供網絡人員使用。
DNSSEC 採用基於公鑰加密的數字簽名技術來增強 DNS的驗證強度。 DNSSEC 並不是對DNS查詢和響應的過程進行傳輸加密,而是數據全部者對 DNS 數據進行簽名加密。
每個 DNS Zone 在配置的時候 BIND 服務會爲其建立一個公鑰和私鑰的配對的祕鑰對。 DNS zone 的全部者使用該區域的私鑰對區域內的DNS數據進行簽名,併爲這些數據生成簽名。 DNS 解析器生成的 公鑰 對該區域內全部的 DNS數據驗證真實性。若是有效,證實DNS數據合法,則將全部的DNS數據返回給用戶。若是沒有經過驗證,解析器會認爲發生了攻擊,丟棄數據併爲用戶返回錯誤。
DNSSEC 在 DNS協議中新增長的兩個安全的功能:
每一個zone都會發佈一個公鑰,遞歸解析器能夠檢索公鑰以驗證區域中的數據,區域的公鑰也必須通過簽名。
DS-records 用來保證密鑰分發的安全和DNS消息內容的分發安全;
常見的 DS-records的分發格式爲:
在 Debian9 下的全部的數據庫文件都存儲到了配置的文件夾中,其路徑爲:/etc/bind
,每建立一個新的 ZONE 的配置文件都會在當前路徑下建立一個新的db
文件來記錄資源地址和域名之間的映射關係,爲了瞭解 DNSSEC在其中究竟是怎麼應用的,咱們能夠去分析這些文件的DNSSEC
公鑰配置來明確 DNSSEC 在其中的配置原理。
1.首先須要在 named.conf.options
文件以及引用文件中的 options
加入一下配置:
dnssec-enable yes; dnssec-validation yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key";
2.肯定咱們保存密鑰的路徑,通常來講保存 zone 的數據庫文件的路徑爲: /var/cache/bind
,這個地方保存着 zone 配置的數據庫文件。咱們在這個地方新建一個文件夾 keys
,而後找到 dnssec-keygen
的配置文件夾,調用建立密鑰的命令:
$ find / -name "dnssec-keygen" /usr/sbin/dnssec-keygen $ cd /var/cache/bind/keys
建立密鑰的方式以下:
-a <algorithm>: RSA | RSAMD5 | DSA | RSASHA1 | NSEC3RSASHA1 | NSEC3DSA | RSASHA256 | RSASHA512 | ECCGOST | ECDSAP256SHA256 | ECDSAP384SHA384 | DH | HMAC-MD5 | HMAC-SHA1 | HMAC-SHA224 | HMAC-SHA256 | HMAC-SHA384 | HMAC-SHA512 (default: RSASHA1, or NSEC3RSASHA1 if using -3) -b <key size in bits>: RSAMD5: [512..4096] RSASHA1: [512..4096] NSEC3RSASHA1: [512..4096] RSASHA256: [512..4096] RSASHA512: [1024..4096] DH: [128..4096] DSA: [512..1024] and divisible by 64 NSEC3DSA: [512..1024] and divisible by 64 ECCGOST: ignored ECDSAP256SHA256: ignored ECDSAP384SHA384: ignored HMAC-MD5: [1..512] HMAC-SHA1: [1..160] HMAC-SHA224: [1..224] HMAC-SHA256: [1..256] HMAC-SHA384: [1..384] HMAC-SHA512: [1..512] (if using the default algorithm, key size defaults to 2048 for KSK, or 1024 for all others)
# 執行建立一個 ZSK (Zone Signing Key) 的命令 注意必定要爲 密鑰配置 /var/cache/bind/keys$ sudo /usr/sbin/dnssec-keygen -L 3600 -a NSEC3RSASHA1 -b 2048 -n ZONE example.com Generating key pair....................................................................................................+++++ .......+++++ Kexample.com.+007+59870 # 執行建立一個 Key Signing Key 的命令 /var/cache/bind/keys$ sudo /usr/sbin/dnssec-keygen -L 3600 -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE example.com Generating key pair......................................................................................................................++++ ..............................................++++ Kexample.com.+007+01143
3.建立完密鑰以後,如今該文件夾下邊存在兩組公鑰和私鑰,這兩組公鑰和私鑰建立完成以後,已經建立在了當前的目錄下 /var/cache/bind/keys
下,如今須要建立的公鑰的引用信息導入到 ZONE 文件中讓其生效。在這個過程當中,須要明確的是新建的 ZONE 文件是以前建立的 db.nyc3.example.com
,因此須要將以前建立的ZONE文件引用新建立的兩個公鑰,Zone Signing Key
和 Key Signing Key
。
Debian9 默認的BIND軟件的默認安裝目錄是:/etc/bind
,新建立的 ZONE 配置文件的目錄是: /etc/bind/zones
,如今咱們須要將剛纔建立的密鑰目錄 /var/cached/bind/keys
複製到 /etc/bind/zones
目錄下,以便隨後去調用密鑰來進行 ZONE 綁定。這裏邊有一個BIND9 設定的環境BUG,就是在 ZONE 文件引用的 keys 必須保存在和 ZONE文件相同的目錄下,
$ sudo cp /var/cached/bind/keys/example*.* /etc/bind/zones
4.在/etc/bind/zones
中,咱們須要將ZONE 文件引用新生成的 KSK 和 ZSK, 以後進行 ZONE 綁定:
/etc/bind/zones$ sudo nano nyc3.example.com # 更改後的文件 nyc3.example.com 內容以下 ; ; BIND data file for local loopback interface ; ; Import ZSK / KSK $INCLUDE Kexample.com.+007+01143.key $INCLUDE Kexample.com.+007+59870.key $TTL 604800 @ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; ; name servers - NS records IN NS ns1.nyc3.example.com. IN NS ns2.nyc3.example.com. ; name servers - A records ns1.nyc3.example.com. IN A 172.16.2.11 ns2.nyc3.example.com. IN A 172.16.2.12 ; 10.128.0.0/18 - A records host1.nyc3.example.com. IN A 172.16.2.4 host2.nyc3.example.com. IN A 172.16.2.5 host3.nyc3.example.com. IN A 172.16.2.6
引用完成以後,如今須要使用 /usr/sbin/dnssec-signzone
命令來簽名 ZONE,使剛新建的公鑰在ZONE上生效。
5.使用 /usr/sbin/dnssec-signzone
來簽名 ZONE,生成新的signed
文件。具體的參數配置文件能夠訪問 dnssec-signzone,下邊列舉了我在這部分用到的參數以及相關參數配置的含義。
/etc/bind/zones$ sudo /usr/sbin/dnssec-signzone -AA -n 3 -3 $(head -c 1000 /dev/urandom | sha1sum | cut -b 1-16) -N INCREMENT -o example.com -t db.nyc3.example.com Verifying the zone using the following algorithms: NSEC3RSASHA1. Zone fully signed: Algorithm: NSEC3RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked ZSKs: 1 active, 0 stand-by, 0 revoked db.nyc3.example.com.signed Signatures generated: 17 Signatures retained: 0 Signatures dropped: 0 Signatures successfully verified: 0 Signatures unsuccessfully verified: 0 Signing time in seconds: 0.011 Signatures per second: 1439.092 Runtime in seconds: 0.016
-n ncpus Specifies the number of threads to use. By default, one thread is started for each detected CPU. -3 salt Generate an NSEC3 chain with the given hex encoded salt. A dash (salt) can be used to indicate that no salt is to be used when generating the NSEC3 chain. -A When generating an NSEC3 chain set the OPTOUT flag on all NSEC3 records and do not generate NSEC3 records for insecure delegations. Using this option twice (i.e., -AA) turns the OPTOUT flag off for all records. This is useful when using the -u option to modify an NSEC3 chain which previously had OPTOUT set. -N soa-serial-format The SOA serial number format of the signed zone. Possible formats are "keep" (default), "increment" and "unixtime". "keep" Do not modify the SOA serial number. "increment" Increment the SOA serial number using RFC 1982 arithmetics. "unixtime" Set the SOA serial number to the number of seconds since epoch. -o origin The zone origin. If not specified, the name of the zone file is assumed to be the origin. -t Print statistics at completion.
在當前路徑下:/etc/bind/zones
,生成了多個新的文件
/etc/bind/zones$ ls db.16.172 Kexample.com.+007+01143.key db.nyc3.example.com Kexample.com.+007+01143.private db.nyc3.example.com.signed Kexample.com.+007+59870.key dsset-example.com. Kexample.com.+007+59870.private
運行完上邊的命令以後,會生成幾個新的文件,這些文件對接下來配置DNS權威域名服務器有幫助。至於反向解析DNS的配置咱們留到最後根據以前的配置流程再進行配置。
6.目前咱們已經建立了新的綁定ZONE
文件,生成新的 zone
文件的名字爲 db.nyc3.example.com.signed
,所以先來比較一下命令 dnssec-signzone
爲新的文件增長了什麼。
/etc/bind/zones$ diff db.nyc3.example.com db.nyc3.example.signed 1,29c1,284 < ; < ; BIND data file for local loopback interface < ; < ; Import ZSK / KSK < ; < ; ZSK / KSK < $INCLUDE Kexample.com.+007+59870.key < $INCLUDE Kexample.com.+007+01143.key < ; < $TTL 604800 < @ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. ( < 3 ; Serial < 604800 ; Refresh < 86400 ; Retry < 2419200 ; Expire < 604800 ) ; Negative Cache TTL < ; < ; name servers - NS records < IN NS ns1.nyc3.example.com. < IN NS ns2.nyc3.example.com. < < ; name servers - A records < ns1.nyc3.example.com. IN A 172.16.2.11 < ns2.nyc3.example.com. IN A 172.16.2.12 < < ; 10.128.0.0/18 - A records < host1.nyc3.example.com. IN A 172.16.2.4 < host2.nyc3.example.com. IN A 172.16.2.5 < host3.nyc3.example.com. IN A 172.16.2.6 --- > ; File written on Sun Feb 7 06:08:22 2021 > ; dnssec_signzone version 9.10.3-P4-Debian > example.com. 604800 IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. ( > 4 ; serial > 604800 ; refresh (1 week) > 86400 ; retry (1 day) > 2419200 ; expire (4 weeks) > 604800 ; minimum (1 week) > ) > 604800 RRSIG SOA 7 2 604800 ( > 20210309100822 20210207100822 59870 example.com. > Rq5UwPjs2OB0rvGRGA4IP6AB5EzA5lRCF+ri > L80hg3E3jskoFu9sPHiD77k9AXYJ7KccML/z > 4mc3vRFic6Ms2xFeaFaCswLRKzYWd3hMuJ2f > x+5tiI/R6HGBqug1o7WRt53IEbaog8vgqM+r > wg5DXjO2Lm5bh2RdvDE0YYRvgSwG/Jz3Fm9E > HaPZKejkVcMh8NWHWTCnndkiq41t4BQOoQZu > bGxJzZYCVz0i0aKNGrJUT/KS4HeclXTzOpfI > FknBrUO8EkNJgK+pI9/CGnPva0wyIhqI8rQk > dlbII/DbV7ySiQjMymcu9qAtmmK+NEbyyzhJ > 14Ti44Jb9R8rNNZGAQ== ) > 604800 NS ns1.nyc3.example.com. > 604800 NS ns2.nyc3.example.com. > 604800 RRSIG NS 7 2 604800 ( > 20210309100822 20210207100822 59870 example.com. > 08stTHG8TEB68mMYeot4zLQdK6sycq/rMvxH > Cbv/ot2ef/Mv1qcYhW/faxhQ6Hl/qZALJ+v2 > 6LFY3tpLbQ9Fua4oJ2yRFZUkKVy0B3h6PYPc > Soc13cyhwcfydIm0BqI3iVk1icDVylRcDr+s > RxWPY9Q931MTBGNexhEq4+dU7oBRkZ90sRXe > G6wW057uRdvwn222f0tWehKqMSvZWu49MFxf > dk5hGVICNtGyo1HZEBbYl+5gjMR/sEGoFqgy > 5j38LCUcVkjXY+Ahc33ZJhYlcR1g2CodswMz > zCH4b2ETGPUxiHb8jwl41IHXB1fY/ZhUYVs4 > 8J28j4ZhxU0nzjgMPQ== ) > 3600 DNSKEY 256 3 7 ( > AwEAAdeakN3vO7Rm22Khq7sACpdiJ+fDvrq2 > lNWxiaszGw+66cZtolhOX0p31hpIw0ZgYHCA > 2hM9aChvgpxlfMxijPzgLBrjcqp5Q1O4U6HD > oRa6USX0m6814tawIHK5WxTJYC8oMLuZxcH8 > mn6XV2hjHBG4Ish7TNdHpAdnrmgbpHx3pn9x > EA5SkgkzypMcLKXpnTDcOnn5rh++KUGWKgdh > f/GvH93iu9Oes/EYzYpnFxIsNz1uSRlFtXbI > C+ug5LLKipRxqH+KlW67Fko/6GGvbIAjb3PA > mCeE6ZHYu5xj/aoT5MYAZ/uOTB+Vzhh392Xx > lPN0dq75W0BtWxKazLXNSd8= > ) ; ZSK; alg = NSEC3RSASHA1; key id = 59870 > 3600 DNSKEY 257 3 7 ( > AwEAAccdkhssmVzMPNOrD7DaPnerx6VbQ2UE > y0LVuqGAgmXaqb66JP8NDqYLxEPsNcxc7PSb > /2+tcPGzjM+lDmpYpmr/PrD3FJga8P23V6R4 > htdGRY6h3uz2FA88Dyd0CJXpyHFPXFm8OlCw > ZVbHChUADWL9ab4dqbUpoLUCwWNeej8gCMgr > XU+doprSAGwVFzxMfliadMvaX8jIwQkAuACj > +yHeh5aeGn+3g9Osm2JH9sQUDwVQVZp6i2xw > VBnIq7ZIJp7WFISOT2WWjKOGJz3Tk/Qe37sJ > c8peNfOMWHZlN1VyOj0OQA732MdjkD/hYq0M > 043PFqGb4hbrqzkiZ0JqioR1d0XPfaYQOoJU > CRuqpQBzEUAXGp+3axx36MRyQ6mlJDG/PGsI > 4BgWhF4PjH8j7SPAD+VUUE62Cin5oUIYN5yU > zx1aXUqcIxFhk37Yw1Y8KNO+54L+4SFJkeUO > 9YHhZXbnprJGcSKB4x+gTd7XYXfsGyd2WGv+ > GvptqcN4pBySe9WURs9v/1xPCbBRHFzq7u4I > E9aWr8PCQoAn97iITIEqWJVZ8cpqSgql0WgT > pOCXc9IzX7hFRBcQihdFTpTkTtpr7DKMnHQR > dnECok6jY/PVf44WLyza5L4Gcrur3eFEITaJ > iE7htDnI7CXTAxtRANF7ZADQSIdcFkSx+5b+ > 1FpR > ) ; KSK; alg = NSEC3RSASHA1; key id = 1143 > 3600 RRSIG DNSKEY 7 2 3600 ( > 20210309100822 20210207100822 1143 example.com. > f1ciDXIjhF6dMV9A4ECaaXBg1OQKpCVczwff > Z9oB5yfdGYVYVHq689jw9Avnmy1mevlyZ/0d > VsxHjR5m5bgUnXun26IUmxtvOOA6Fr7pTbMU > OujugesFbX0kY6auuMTbDdAnmxRe5T8OAhz/ > xRImQCPWwczJ+zhvFI4MCoe8LcKfjA1ffud9 > hTLBcjuonluCI8kutaKbYjvGCJuWxqcJSUHd > 2bF9h/rxb13irgBtuuLigA7z83a7f1rI+Ag3 > gDwYhz2oV846mrYLQguZsAKUJqVgvME9Typc > pd0Xx02aDr/fx4zuoXCj+M0J1X6vucnKnW9A > 248dxOaE9g5HXwN2Fx8wblz3giF3mAY+WyXh > h5uKCKEQfyEbt2fOt2e03DFGxpWUAJQP2jR3 > cMICFQHkUKboB9AfM1SpfpqPTQZoZwFoz4a9 > eZ5gvwge0z0l1lfLcQzhpzqRwpYVt78HpCpK > 2IKLU3tbftDQXDhhNuZdraI5F6Dj0W0h8cHj > frjugFEQWy5SBb4FPNOxXIS1MyZ0MVTH3qTk > 8gxLcqShfb+1rlK0sLU/jMODJ3rxEZzgfW7i > u4lDLMdOkqY5KrZtvH2q5hQoJ0/pS93AUHFe > G1KFv+4sih6d1WSQIhanfefastE/l5hcvOZ9 > ppDV1azdNEnlchpuaViCXv9gAjksHKRrEW0= ) > 3600 RRSIG DNSKEY 7 2 3600 ( > 20210309100822 20210207100822 59870 example.com. > byMBp8tQaSmkD2VMMWqDqmhPcozCVSy7f80H > afR5B6nEi23ItYTubpq1P4ODiYmTItmPHP/L > 5tOK6r6jlwnuZ0+YV1aFdGNpwOhsRK7b01Jv > N5csU9P3vaGQ9MaRv1Q+hoXLf+yz5vPUFiNz > qhQeuhzNBvIIyaB0Y9SjBW72lHLtTjLozpJe > iyBQXhqaB4JV5mhMexCtlg78uf5a/ECihoLy > nVs1e+pYaNYoVG7uKlVaT1uqBrX4MvXW9guN > eAWK5U1ZPrzkyYqsx86+2vYveyykslC7HL+B > NAHQPQ8PVwPabbrQbKbVjUdkPcj9iRMYkp3j > Ug2goigJL1LJlWBsQA== ) > 0 NSEC3PARAM 1 0 10 5B1E2A0938A7120B > 0 RRSIG NSEC3PARAM 7 2 0 ( > 20210309100822 20210207100822 59870 example.com. > v1kpddaoUKrC3Ex9zV9LfdWqfOo1UY/KjKOK > TXr1x8TJejaPJWtaChgV7DzzRv/ZlKZN+lS6 > lO/N1DPs9gwUWBRjA4+Dm6xqiRyoFevh5sbQ > 7SjvfcW0f2WW+xtrGbhIW8jVoSL//fHwXiKm > GcjnF6nYVG3H7Zo26jO6PU/p377VgdTxZabr > Kc697VGB/LeC1lMAFvByv36AcWZEEgs7QSTs > gFTPNaUhuVveYKZ/KtHu+v6wrWwEVwYlVS5s > jH9Nfk1KpxUDuljmayhomBNB1xFjFtUMUbNm > +KhpWx0HIdIodubHOZaz4z2g8MY1R2etDiPz > G7P1HF8cfh0NCZvyrw== ) > host1.nyc3.example.com. 604800 IN A 172.16.2.4 > 604800 RRSIG A 7 4 604800 ( > 20210309100822 20210207100822 59870 example.com. > v9elCCsc0Ib22HVDyWzEOGvSalscBf+SlBCT > 3OB9oyZe7SH3Gcw727J55KDBjuQxp+9WqLhO > DeibYisRGTHrmlOxYAQnVNT+4fL/puqNmJYi > Y5IE8TiLc+9RfKm3QUP403jK8kF3aIybvuUm > O9HgKUzH2eGBdwYLUrkwbg8MOJgiLCA7S3EY > 5rrxZp3WDyKG7h3+BRBxzY7T/u330Xb9EzUQ > 1ABq1BgKhxEdQhJAtZ0bYdRvAuqRKRcwzqNO > avTw1eTR9HoPB8FpPPCv1cNMooicYOtehT55 > XHb1NXQ91WUxZjIS6nQJctUpd9/ZuL0xm3kz > 5r/jfoi5E2uULqQxwA== ) > host3.nyc3.example.com. 604800 IN A 172.16.2.6 > 604800 RRSIG A 7 4 604800 ( > 20210309100822 20210207100822 59870 example.com. > beSpI/cjL5Lj246JMxPxNH+tSBnnB6UVjtAW > EhmjNntb+cGXVpjYAPFnG0UM80+TpEGbCb4W > HK3kqYjUzbiYrPLI6Q0wNClu5xHNXsGJ870i > fAW8OT5wztHMRNQp2tn39RvRk+cr2EdJmeej > +M7Bjc+fQbLoJU9dlKoc13az0obursWYXIX9 > 4AGe0J8gG/jT62J95F5Z0nzWb1IQGK9TWf0T > l+kSF+qRh76GLwnJZRBlQ1h5xmcBR0xAISng > xCFzfxciOQh8At5ManogpLljOh3iqbAAqsh6 > f+0Dk8ilg0rK3FRwA6VwYdZVP3Bir6rsze6y > FjEUEvn+GqiPJ9vXxg== ) > host2.nyc3.example.com. 604800 IN A 172.16.2.5 > 604800 RRSIG A 7 4 604800 ( > 20210309100822 20210207100822 59870 example.com. > n5MjCD3hbx1Uj/X1x/umVbnunVSqafYudVvw > Pt0Kl+FVAiva/F/N4UXkJLFh+M6MCwNsO2fG > MFVr9Eyf1SgP6Jg4HKpTWFpINGYRWibFMQwo > gVxDVoVnOLdOpD8Sse06sVlGhIoX6K2bbvId > RCNU1zGHE0Jok1E0eafg39U3/03xQYe0Efbz > nnKprAvoJdy75XQKUJvUBaR3leJazI2zWe2J > 9GMBrfgdNCEMn7VvazXJ/Rl1i1gY5Qm35bP7 > nmMlZNGgleAVjVgFgVrqSHAgey7q4C0kipkK > K8UixABZeGQbcyPFC3Mk+lDBVAO0aC8FO2ue > avvhTviRtOOlxujguQ== ) > ns1.nyc3.example.com. 604800 IN A 172.16.2.11 > 604800 RRSIG A 7 4 604800 ( > 20210309100822 20210207100822 59870 example.com. > 0OiF2YaBuJOkb7VhgufvPRlXOQUMVp+smbUQ > s2ZpWdEt0JP1hqaXQwaGhbbKwlXGkZZazIBg > ADhjTSMofpPsbxyaUxrjCNbkHeTO2oPK1bfD > X2og7GSpt361yCrMpbfHEVXds3upHmwT5LV6 > 6IKCQozcWmf75lBkOyuu9qo9U6SAzNCqleiJ > YrdxuIilx1IY4qw+woenaUf9R+WJ+l7eI51i > Ju/pNfpowpTheNShX7NJcCOOlDASWGnk5om6 > bdqPE270d8MImmYsT9QX5D/+g5OV+n+oKP2z > CwkqzIAZXPW8JASutmwneH54Pbb4A0FIZgWj > mNWd4mvGdRxyopH8Bw== ) > 13NTQLTAL8GPRJ810B4IBC0PML5JT58O.example.com. 604800 IN NSEC3 1 0 10 5B1E2A0938A7120B ( > 1UQN7J8KHHVV55NJJDFMJRDGVEC9QK71 > A RRSIG ) > 604800 RRSIG NSEC3 7 3 604800 ( > 20210309100822 20210207100822 59870 example.com. > fz7DqiOwgOU/8M9xpbhm5U2YfKjE+AspD0UR > ZeeDvSIAfYa4whUsfB5OkrvIY3f38YqLBng4 > Wn0DY95Tn4TOuvj3dyLw0KKz6gP237fGLvp3 > rrrLRq1vWWgwZ02uYObSmJj9W34JUL/Om++y > 9ZTN3Tp+nTvNjO5W43hwVCOkpRhu7QEQAGXz > AE9zrxPkybiZW5UuY4b+lqTDYVv68c89qhE6 > +vR3zehwAIerEF0KzjBfigx4CKi1jfyixW4S > 9eKR6PF5mwM9r2gOE4lSUhbluWqY7+SZPSYa > wqLV4r+iCEgZ0ZJfcs1wmxJDFbsPVEHsJ9yk > GaBhwUPLgJ7cV6CyXw== ) > ns2.nyc3.example.com. 604800 IN A 172.16.2.12 > 604800 RRSIG A 7 4 604800 ( > 20210309100822 20210207100822 59870 example.com. > b8Xi4lg+h+FLgDyu3s03qpBt0RczciNGvMHs > Szf+jEE5LxzGx+AS4DkPI8FPZ8KS0EWHSvtA > ejfOuI/53v+8JH6WtSSG6D1EQQrgyWRSnqVW > IsOSz6qLqPIeZIdlAshjlqOppKfamE5kCbXv > W+97u+1UF8CHUwauYnH5L26Iaxzimmnorsvz > hxPei0QD5mVo2LToT3MUu6JKJUq+xFUnQRHg > h1laKbpFmdYzfviTzphF8AAH61FMa/5rBnxN > ur44u8k4iRk5cvp0KOnosxpaEXf9gMlckgD+ > u+je7wmqEY7mT3y4YjuDLbXRkgyWhYuGl4Q9 > 0Su95pKOK8yuiVwa3w== ) > 1UQN7J8KHHVV55NJJDFMJRDGVEC9QK71.example.com. 604800 IN NSEC3 1 0 10 5B1E2A0938A7120B ( > 5TLGKO9HOD2H3QAS9UQBAQ0603N8NR68 > A RRSIG ) > 604800 RRSIG NSEC3 7 3 604800 ( > 20210309100822 20210207100822 59870 example.com. > li4gfnT/ZWA5VfOC9w6yqDvfuL4PFI8BfnsV > C9P7Am368Aqqp7jQx+w92FQYWeYq6+INj/Nf > rwnACby+Ww2tvetQkUzsvREl3g/fS3LojLpL > h6eRWzrExTHtO3OoawvgW5cL7tVENl7ap9LT > WauRDBjIDJqdYlM1Z0Bj+v7M969zK5T1nDWR > XKeVIaqWg72yyirgplz8eBSJbcxqnr7Sn4b1 > R1Jg6zshILjc4YZghIhydLDSq1rSq9sFMdOm > eA8fmEYVkYqLRtbzw02LPUojvjX4cZGxg1/P > g3/ykw8GTw1ofIlVnbSDFvePFKpqjZHjracr > a2TTorw2KKKcY2HeLA== ) > 5TLGKO9HOD2H3QAS9UQBAQ0603N8NR68.example.com. 604800 IN NSEC3 1 0 10 5B1E2A0938A7120B ( > E97CJO1762D7LNI4EQQBO2AHH4J1PKPU > A RRSIG ) > 604800 RRSIG NSEC3 7 3 604800 ( > 20210309100822 20210207100822 59870 example.com. > ROYmoLb2SKcijA57tT514jVI7o9OGYIV2EnA > t3IfQv6cNGnMr838W5hjEn0Y5oql+p0gio1i > GelL9eC1a+pSvSixH68zLSTTmGFgCv/AE5Te > vQaj04AQsI0TOtptOEdCOwmDP7dv73xxxRUT > Msx8NjICSB+t93rARv+02aNHcKbTz+7IeIM+ > gFVSN2kLK30UEfdVjbhl0xwLgFNmXWLpkZ7C > 1sdWYzmvjHj/YgeiMZwrcoHAeNSuiP42V7LX > grRVxtkOsAEuPTDth79M9f60OQ3axASxWFnm > CvscqxZGXn2JYCAQqyd+zZD0jSza7ODv2w17 > n2G6zrPHgudcQW5Muw== ) > E97CJO1762D7LNI4EQQBO2AHH4J1PKPU.example.com. 604800 IN NSEC3 1 0 10 5B1E2A0938A7120B ( > Q09V94K6VA53F14PKP1DMK1LKSQ8OVUV > NS SOA RRSIG DNSKEY NSEC3PARAM ) > 604800 RRSIG NSEC3 7 3 604800 ( > 20210309100822 20210207100822 59870 example.com. > gR/GrHYtdOXzxcjwN5DulGPIPN6ltIDfKyjX > /m7dtdin/5nlbYjBgZYSSIfFpmN0ikDnIukf > AcIOEPx4X3xSZoq4wu+8s34eF2vUAjqlNLkc > IHhk010ianMYzOF6/vSwZ7hCDKp/GdjBqLJK > AKh1CQTGm4DmlfR4L4lIeI4cJ6OwcvTfqJUQ > Ih7JDyC1ZoryqHNXtPk6vXOm3Rhc+F58aTRz > UYR27cKSKNYTe2fHCivPPyfv+nZN5i9M9p4d > d8lkO4QS4IOsbnBnkkSXRneXwdvTX4lmQLjK > j7mqarJfns/ORj9TNw7kcDp8+oNVAh2dlINV > hFwhjP4EMkqrMujPhA== ) > Q09V94K6VA53F14PKP1DMK1LKSQ8OVUV.example.com. 604800 IN NSEC3 1 0 10 5B1E2A0938A7120B ( > U1EM83K3Q0K54RUULP79VC465MVDBSVG > A RRSIG ) > 604800 RRSIG NSEC3 7 3 604800 ( > 20210309100822 20210207100822 59870 example.com. > swUzi+Hs4Dge/Cmwf+yosK54EvA01eO2PHFR > 1V3yXhRAy9mtjDtymTORLrMKi23pyl28/J8r > xrWPuL0K8LsuYEtuc/6/l0h4hfuT5MTDGo6U > qQrZaUGDleFAAqcvlVVR9GNRk5TXFJIIzLF+ > k8WBkMYU5kb6xgdohrwjcXg8mIMCNtCD78ck > F2Od9iSLOwW0A87qQzCOQ8Smg5YjjZegmOv5 > NVxszQoEkHjB//lRR7E7z0D2CqOjgRESgeaI > Voth53CA7nsm+TvT2XviB7yzRw51wrsphKlY > 5Y2qLvjQGovZP6GXMC0ldZCnJHvmdlovdiO/ > 3J7wgeg5z9EGf2mv7A== ) > U1EM83K3Q0K54RUULP79VC465MVDBSVG.example.com. 604800 IN NSEC3 1 0 10 5B1E2A0938A7120B ( > VNETBTCMBLL9MBJLOPMK4N69D1DMI11B > A RRSIG ) > 604800 RRSIG NSEC3 7 3 604800 ( > 20210309100822 20210207100822 59870 example.com. > hKjN/3buiP/SU2sxU6aXUNcVSBm3NitKvIgK > EXbQbWnzXrqR4bX2aHvOSDnrfFKe+khvF5Ld > 8PgmsmAv+/uKI29T0Q0KOS3kGrF6LWvgtRYK > MV7+pk57UzbNctYwdvsaynE0uPlR0nAMNI/K > Z+j37nf+T+uc06Z2KVl1Y4ZTyD0DQvo1Zn8/ > Ijx5meEKvX9sfMzoxKESREk4mZjXvBbJ1Gl1 > /HLH42ov63Klp5zarVlkJCJircxlJWLFNT3v > INGWCO6SGfbQ/ArsQB500i0tle3/8XQP7nrD > zLA8yMICVHQTicIdeqtvx7RF0g1seYUjS6Um > heDXZKGelLakf3Y6Jg== ) > VNETBTCMBLL9MBJLOPMK4N69D1DMI11B.example.com. 604800 IN NSEC3 1 0 10 5B1E2A0938A7120B ( > 13NTQLTAL8GPRJ810B4IBC0PML5JT58O ) > 604800 RRSIG NSEC3 7 3 604800 ( > 20210309100822 20210207100822 59870 example.com. > I6vRt/NJHsZxOMfK/zUBefKKbHmrao584uda > qwiANC4WqKNauXjad1KSfbEvUW3zsuyVUjo8 > F7bz8VvDI0KQZ1511n9bdUa25MBoCFL1iwk/ > 8EOmWhTdJZSJcRoVpXUvPxg1R9M2+KwD7lOa > ZGitwlCNypqVsmnTGAsUsUaQmus28zoQzI98 > 3APB/OhJrvK/Xz25oPrMTKRUZ1RkrMPunFCH > GiMZrLZzYfCnmLTAcLNSXi4K8OEi1f+1+UGw > tRxJQInCkx5wlyzHyuGlQaRD6ozeBpT7W6ri > BbM9+XWvQavvfSzlvpdx4ksMJMONuZahRvLo > 8rysUcz4pZuUQ4xwEQ== )
從上邊的文件對比,咱們能夠看出對於一條新的DNS資源記錄都新增了一個公鑰和加密後的域名地址,整個文件的大小橫向增加,新生成的 ZONE
文件須要替代以前老的 ZONE
文件,所以須要更改原始的 named.conf.zone
配置來適配新的配置。
/etc/bind/zones$ sudo nano named.conf.local // // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; zone "nyc3.example.com" { type master; file "/etc/bind/zones/db.nyc3.example.com.signed"; # zone file path allow-transfer { 172.16.2.12; }; # ns2 private IP address - secon$ }; zone "16.172.in-addr.arpa" { type master; file "/etc/bind/zones/db.16.172"; # 10.128.0.0/16 subnet allow-transfer { 172.16.2.12; }; # ns2 private IP address - secondary };
重啓 BIND9 服務,這個時候已經配置好了安全設置。
/etc/bind/zones$ sudo systemctl restart BIND9