一、DNS服務器原理
DNS(domain name system)域名系統或者(domain named system)區域名稱服務,分為正向與反向域名解析,適用C/S,端口路53/udp,53/tcp,屬於應用層協議;
通常人們上網都是通過輸入網址進行訪問的,比如www.baid.com,這個也叫作域名。但實際上網絡訪問的底層還是通過ip進行的,比如輸入36.152.44.96這個ip地址依然可以訪問百度。人的記憶是有限的,不可能去記住眾多網站的ip地址,dns就可以解決這個問題,將域名解析成ip地址。
1、當應用過程需要將一個主機域名映射為IP地址時,就會將將待轉換的域名放在DNS請求中,以UDP報文方式發給本地域名服務器
2、本地的域名服務器查到域名后,將對應的IP地址放在應答報文中返回;
3、同時域名服務器還必須具有連向其他服務器的信息以支持不能解析時的轉發;
4、若域名服務器不能回答該請求,則此域名服務器就暫成為DNS中的另一個客戶,向根域名服務器發出請求解析,根域名服務器一定能找到下面的所有二級域名的域名服務器,這樣以此類推,一直向下解析,直到查詢到所請求的域名
二、主-從DNS服務器搭建
1、實驗環境:一台centos7虛擬機(ip:192.168.44.7 充當主服務器) 一台centos7虛擬機(ip 192.168.44.17,充當從服務器) 一台centos6虛擬機(ip 192.168.44.6 充當客戶端,也即測試機)
2、實驗步驟:
2.1主服務器的搭建
1)安裝軟件bind , yum install bind,啟動服務 systemctl start named.service
2)打開/etc/named.conf主配置文件,雙斜線注釋掉listen-on port 53,相當於監聽在本機的所有ip端口;再注釋掉 allow-query,相當於允許所有主機查詢。(也可以分別用localhost和any代替兩處中括號的內容,效果和注釋一樣)
2)創建DNS的數據庫文件,寫入各項資源記錄
資源記錄定義的格式:
語法:name [TTL] IN rr_type value
注意:(1) TTL可從全局繼承 (2) @可用於引用當前區域的名字
記錄類型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授權記錄;一個區域解析庫有且僅能有一個,SOA記錄,必須位於解析庫的第一條記錄
A:internet Address,作用,FQDN --> IP,域名對應iPv4地址
CNAME : Canonical Name,別名記錄
MX:Mail eXchanger,郵件交換器
cd /var/named/ vim magedu.co.zone
3)建立區域和數據庫文件的對應關系
vim /etc/named.rfc1912.zones 這個文件是專門放區域信息的
4)檢查主配置文件 named-checkconf 檢查數據庫文件 named-checkzone magedu.zone /var/named/magedu.com.zone 重新生效 rndc reload
2.2從服務器的搭建
1)37.17上安裝軟件 yum install bind 啟動服務 systemctl start named
2)打開/etc/named.conf主配置文件,雙斜線注釋掉listen-on port 53,相當於監聽在本機的所有ip端口;再注釋掉 allow-query,相當於允許所有主機查詢。(和主服務一樣)
3)從服務器的數據庫文件放在專門的slaves文件夾里,這個文件是不用手寫的,只要編輯好zone信息,重新啟動服務,便能從主服務器上同步過來。編輯zone區域信息
從主服務器上“推過來”的這個數據庫文件是加密過的,所以看不了,到此主從服務器就搭建完成了,可以進行測試了。
2.3客戶端測試
查詢測試:
可以從17這個從服務器上查到域名對應ip
同步測試:
現在在主服務上加一條記錄,根據從服務器的文件修改時間看能不能同步,以及是否能在從服務器查詢到新增的記錄
新增一條db2的記錄,ip為7.7.7.7,記得要修改版本號
重啟服務可以看到,從服務器的數據庫文件已經同步過了,在客戶端查詢,也可以查到新增的域名對應的ip地址