DNS(Domain Name Server)域名解析服務php
www.baidu.com 稱爲FQDN(Full Qualified Domain Name)徹底限定域名又叫作主機名mysql
baidu.com(域名) .com(域明) sql
Nsswitch:爲多種須要進行解析的機制提供一個名稱解析的平臺;如端口--服務(80--http、23--telete、ssl--2二、https--44三、php--9000、mysql--3306等),root--rootID等數據庫
注:Nsswitch僅僅提供了一個平臺,而不是本身進行解析緩存
Nsswitch框架經過/etc/nsswitch.conf配置文件進行展現安全
如:hosts: files dns 表示進行域名解析時先找/etc/hosts文件,若是沒有在查找DNS服務器服務器
通常來講應用程序經過Nsswitch品臺調用libnss_files.so和libnss_DNS.so這兩個庫進行域名解析框架
stub resolve(名稱解析器)這個程序會在Nsswitch.conf文件中根據配置找files和dns進行解析分佈式
例:ide
ping www.baidu.com
stub resolve 會先根據nsswitch.conf中的files找/etc/hosts文件
IANA(互聯網地址分配機構)
ICANN(管理頂級的域,名稱)
IANA和ICANN有本身的DNS服務器,並且它採起向下受權和分佈式數據庫進行DNS的管理
. 表明根域,全球共有13臺根服務器 a.root-server.net -- m.root-server.net(亞洲只有日本有一臺)
.net .org .com .cn 這些屬於頂級域
baidu 163 google 這些屬於二級域名
www 通常爲主機名,全球叫www的主機名太多了
頂級域又有:
國家域: .cn , .hk , .jp等
組織域: .com,.org, .net等
反向域:將ip 轉換爲FQDN
注:. .com .net 這些DNS服務器爲了安全通常來講不給任何人進行DNS查詢(不進行遞歸),且通常來講上級只知道它的直接下級是誰,而下級只知道根
遞歸: A找B,B在找C,B從C出獲得結果在返回給A
迭代: A找B,B讓A找C,A去找C獲得結果
而對DNS查詢來講:從客戶端到DNS服務器(本地NS)爲遞歸,而從本地NS日後爲迭代
例:st.ibm.com. 要找 www.baidu.com.的IP
st先去找本地的NS
本地NS收到st的請求後去找.
.將.com的IP告訴st本地的NS
st本地的NS去找.com
.com將baidu的NS的IP告訴st的NS
st本地的NS去找baidu的NS
baidu的NS知道本身管理着一臺叫www的主機,從而將www.baidu.com.的ip和ttl返回給st的NS
st的NS將www.baidu.com的IP返回給st.ibm.com這個主機
DNS服務器:
接受本地客戶端的查詢請求(進行遞歸操做)
接受外部客戶端請求本地管理的客戶端的IP(即外部客戶端請求本地NS的權威答案)
注:只有本地NS知道本地管理的服務器的IP(即權威答案)
而權威答案有分爲:確定答案(本地有你要找的主機)+ttl;否認答案(本地沒有你找的主機)+ttl(防止不斷的強求問本地NS有沒有它找的主機)
接受外部的非權威答案(本地主機請求的不是本地的NS,而是其餘外部的NS)
主從DNS:主DNS服務器--進行數據修改
從服務器:請求主DNS服務器進行數據同步
此外還有
緩存DNS服務器:只緩存DNS解析,不提供任何權威答案
轉發器:不提供任何權威答案,也不進行DNS解析緩存,只進行請求的轉發
如:有一個主機要請求
www.baidu.com的ip,但它既不能上網也連不到本地的NS,這是隻能先將DNS解析請求轉發的轉發器,再由轉發器將請求轉發到本地NS,獲得結果後在將結果轉發給這臺主機
數據庫中DNS資源的記錄格式
Name TTL IN RRT(資源記錄類型) Value
資源記錄類型又分爲
A: FQDN--> IPV4
AAAA: FQDN-->IPV6
PTR(pointer):IP-->FQDN 反向解析
例
www.zxl.com. 600 IN A 1.1.1.1 這是一個正向解析的A記錄
1.1.1.1 600 IN PTR www.zxl.com 這是一個反向解析
NS(Name Server)管理一個或者多個域: zone name --> FQDN
注:每一個NS類型的記錄都要有一個A記錄
例:
baidu.com. 600 IN NS ns.baidu.com
ns.baidu.com. 600 IN A 2.2.2.2
MX(mail exchange)郵件記錄:zone name -->FQDN
注:MX記錄也要有A記錄,且MX記錄有優先級(0--99),數字越小級別越高(即最早找這臺主機)
例:
google.com. 600 IN MX 10(優先級爲10) mail.google.com.
mail.google.com 600 IN A 3.3.3.3
SOA(start of authority):標示一個區域中主從服務器之間如何同步數據及起始受權對象是誰
Zone Name TTL IN SOA FQDN 管理員郵箱( 版本號
刷新時間
重試時間
過時時間
否認答案的TTL)
例:
baidu.com. 600 IN SOA ns1.baidu.com. admin.baidu.com(
2017022001
1H
5M
1W
1D)
版本號(2017022001):從服務器每隔一段時間檢查本身與主服務器的版本號,若是不一致就對數據進行跟新
Refresh(1H):刷新時間,告訴從服務器每隔多久檢查一次版本號
Retry(5M):重試時間,若是從服務器超過刷新時間仍然沒法訪問主服務器,則從服務器每隔多長時間再從新訪問一次主服務器
expire(1W):過時時間,過時時間超事後,從仍然鏈接不上主,則從轉換爲主
nagative answer ttl(1D):否認答案的ttl,防止告訴對方本地沒有它要找的主機後,一直不斷的進行詢問
郵箱格式:admin@baidu.com 要寫成 admin.baidu.com
ttl單位: M(分鐘) H(小時) D(天) W(周) 默認爲秒
CNAME(正式名稱|別名記錄): FQDN-->FQDN
例:
www1.baidu.com 600 IN CNAME www.baidu.com
表示www2的正式名稱爲www,www有一個別名叫www2
DNS的創建(創建兩個區域文件)
正向區域文件
baidu.com. 600 IN SOA ns1.baidu.com admin.baidu.com( 2017022101
1H
5M
1W
1D)
www.baudu.com. 600 IN A 192.168.139.1
www(簡寫) 600 IN A 192.168.139.1
反向區域文件
139.168.192.in-addr.arpa 600 IN SOA ns1.baidu.com admin.baidu.com( 2017022101
192.168.139.0網段的反寫 1H
5M
1W
1D)
1.139.168.192.in-addr.arpa 600 IN PTR www.baidu.com
1(簡寫) 600 IN PTR www.baidu.com
注:A、AAAA、MX只適用於正向,PTR只適合於反向,NS能夠正向也能夠反向,SOA必須爲開始
區域傳送:主DNS的記錄一旦發生改變,馬上通知從DNS服務器進行數據同步(無論是否是剛剛同步完)
區域傳送類型
axfr(徹底區域傳送):從服務器上什麼記錄也沒有,將主的全部記錄都傳送過去
ixfr (增量區域傳送):從服務器只傳送主服務器上發生改變的記錄
區域類型
主區域:master
從區域:slave
提示區域:hint(定義根在哪裏)
轉發區域:forward