dns配置使用
概念
DNS即域名解析;一般網絡上都是用bind(Berkeley Internet Name Domain)軟件實現的
域名:www.magedu.com是主機名或叫FQDN( Full Qualified Domain Name),譯為完全限定域名,這不能被稱為域名。magedu.com才是域名,com也是域名,因爲它下面包含了magedu等域。
DNS:名稱解析(Name Resolving);名稱解析就是名稱轉換(背後有查詢過程,所以叫解析,依賴數據庫)
FQDN到 IP之間的雙向轉換,DNS提供的是兩者之間的雙向轉換
172.16.0.1 www.magedu.com.
nsswitch:為多種需要提供名稱解析的機制,可以讓別人完成名稱解析。它是提供名稱解析的平台,應用程序到這個框架上找名稱解析的店鋪即可。將DNS解析成IP地址的有兩個,一個是libnss_files和libnss_dns,調用這兩個庫即可。對我們展現的就是一個配置文件,配置文件/etc/nsswitch.conf。服務(如web,telnet,ssh)只需要到nsswitch這個框架上找對應的名稱解析服務就可以了。基於名稱轉換的機制還有NIS
配置文件:nsswitch.conf
格式:hosts : files dns
根據/etc/hosts文件來完成主機名稱到IP地址的轉換的。files指/etc/hosts文件,dns指dns服務,stub resolver被解釋爲最根本的最原始的名稱解析器,它是一個程序,它會根據某個庫調用來完成找nsswitch.conf中的配置,根據nsswitch.conf中的次序先去找files:/etc/hosts裡的文件,查一下有沒有主機名對應的IP,如PING命令在執行時會靠本地的stub resolver完成名稱解析,stub resolver會根據files:/etc/hosts文件找是否有主機名對應的IP,如沒有就找DNS,這就是stub resolver的作用。
轉換的機制叫stub resolver:名稱解析器,它是一個軟件或程序
libnss_files.so libnss_dns.so
早期用hosts文件實現解析
hosts:
IP FQDN Ailases(主機別名)
172.16.0.1 www.magedu.com www
a、周期性任務下載hosts文件
b、之後出現了IANA(互聯網地址名稱分配機構)建的服務器server,由服務器負責轉換地址。互聯網地址名稱分配機構,之後轉由ICANN管理,它管理頂級域。IA在nsswitch中有:
hosts: files dns
NA就負責維護IP與FQDN之間的對應關系的數據庫
c、分布式數據庫,把DNS從集中的數據庫轉換成分布式數據庫,從最高開始找,主機名是從小到大寫www.magedu.com.,最後的點就是根域,也就是最上層的域,主機名結構從下向上,授權是自上向下的。下級是不知道上級的,但上級是知道直接下級的,但每個人都知道根在哪裡。.net這樣的才叫頂級域或TLD(top level domain)。為了節省流量可以將IP與主機名緩存下來。別人是不能用自己的緩存的,這就需要建立一個DNS緩存服務器,第一次由根來查找,由緩存服務器發起一次請求,之後被請求的服務器查找,一級一級地向下傳遞,緩存服務器等待結果,這就是遞歸查找,這會加大根服務器的壓力,但根是不與任何服務器遞歸的;緩存服務器根據提示發起多次請求就是迭代查找,但對於客戶端來講是遞歸查找,對於服務器來講是迭代查找。因為客戶端只向服務器發起一次請求。緩存下來的結果也是非權威答案,只有服務器的上一級給的答案才是權威答案(也就是管理域名的服務器給的答案才是權威答案),緩存時間由上一級來規定,也就是上一級不僅返回答案還返回超時時間,超過時間要重新發起請求,緩存時間的長短會影響主機的性能,時間越長服務器的壓力越小;緩存服務器既要接受本域內的請求,還要接受其他域的查找請求。也就是來自外部的請求查找內部的主機或來自內部的主機查找外部的主機,內部的主機請求查找內部的主機就直接返回結果,而且是權威答案。
一台服務器可以給多個域進行解析的。那麼它的授權過程是:在根服務器上有一個下級域的數據庫,管理域的是NS(NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。),在數據庫中有下級域對應的服務器ns名稱及IP,當向根域發起請求後,根域會根據數據庫返回對應的頂級域的IP,如要找.com,根據這個IP找到.com,.com也會根據自己的數據庫返回用戶請求的域的管理主機的IP,這臺管理主機一般也叫NS,如ruopu,這樣再找ruopu這個域的NS服務器,請求查找www主機,如果有就返回IP。這裏NS查找的數據庫就叫授權數據庫,要實現一台服務器管理多個域就需要在授權數據庫中記錄多個域的信息,但不同的域有不同的數據庫,這樣一個IP可以有多個主機名,一個主機名也可以有多個IP,但每次只返回一個,是把多個IP輪流返回的,這就是負載均衡,是DNS的高級功能,但效果較差,他們之間是多對多的關系。
注:德魯克的扁平化管理
TLD譯為頂級域分三類,頂級域也叫一級域
a、組織域:.com, .org, .net, .cc
b、國家域:.cn, .tw, .hk, .iq,
c、反向域:IP轉主機名FQDN專用
反向:IP –> FQDN
正向:FQDN –> IP 正反向用的不是一個數據庫
查詢有兩種方式
遞歸:只發出一次請求
迭代:可能發出多次請求
解析:
反向:IP –> FQDN
正向:FQDN –> IP 這兩種用的不是一個數據庫
兩段式:第一段是遞歸(客戶端發起),第二段是迭代(服務器查找)
DNS服務器工作
a、接受本地客戶端查詢請求(遞歸)
b、外部客戶端請求:請求權威答案,如果有就返回肯定答復,沒有就返回一個否定答復,且也有緩存時長(TTL),如果外部客戶端請求非權威答案,這需要設置,但一般不會給外部客戶端遞歸查找的。互聯網上的根、com等是不與任何主機遞歸的,這是為了安全,/etc/resolv.conf(DNS配置文件)文件中填的一定是遞歸的服務器IP,不能給出答案的是沒有用的,一般運營商給的DNS服務器都是遞歸的,不然沒法上網。一般NS只給自己負責的域名遞歸,給權威答案,請求其他的主機都是不給遞歸的
肯定答案:TTL值(TTL:存活時間)
否定答案:TTL值(存活時間)
根服務器:從a.root-server.net 到m.root-server.net
根服務器掛掉會使世界混亂,要保證絕對的安全。全球共有13台根服務器,13個根是一樣的,任何一台域名服務器數據改變都要多台服務器數據同步,這是自動修改的。如果域內的主機不在線,服務器也會返回相應的結果,只是不能訪問,但如果DNS服務器上沒有記錄的話無論如何也無法訪問。如果DNS服務器掛了,其下的域名是不能訪問的,除非用IP。如果有緩存也可以訪問,但緩存過期就不能訪問。要有兩台服務器保證可以解析,一個出問題,其他可以頂上,這就是主從結構。NS中的數據庫內的信息與信息對應的主機沒有關系,即使主機不在線,NS服務器也會返回查詢結果,只是請求方無法與查詢到的結果建立聯系。但如果NS的數據庫上沒有相關記錄,就算有主機在線,也不能與其聯系。所以服務器與數據庫內的信息應該對應起來。
DNS服務器類型
DNS服務器主從結構
主DNS服務器:在此服務器上完成數據修改
輔助DNS服務器:請求數據同步,同步是客戶端請求的,也就是拉取的模式。這是定期同步的,如果改了就同步改了的,沒有就下次再同步
主DNS服務器如果掛掉,輔助服務器會定期檢查是否可以同步,如果超時還未恢復,輔助服務器也會掛掉,自殺
1
2
3
4
5
6
7
8serial number版本號/序列號
定義版本號是為了在同步時如果主DNS與從DNS序列號不一致就證明數據有改變,就同步
refresh:檢查時間週期/刷新時期
多長時間檢查一次,如果沒有響應,就進入重試時間再檢查,之後如果到了過期時間就認為主DNS掛了
retry:重試時間;應小於refresh
expire:重試多久過期
negative ansver TTL:否定答案的緩存時長
主從服務器要定義這五種屬性緩存DNS服務器,只負責緩存,不負責解析或說不提供任何權威答案;另一種是轉發器,去掉緩存功能就是轉發器,這台服務器可以上互聯網並返回結果,但客戶端不能上互聯網時,或到達某服務器時,可由這台服務器幫助轉發出去
哪台服務器負責解析,由上級指定IP由誰解析,也就是上級授權
數據庫中的每一個條目稱作一個資源記錄(Resource Record簡寫爲RR),靠此記錄來標明服務器的用途,如是DNS服務器還是郵件服務器
主DNS要通知從DNS服務器數據有變更,保證主從一致,這就是區域傳送
區域傳送類型:在未到時間同步時,主服務器通知從DNS服務器來同步
完全區域傳送:axfr # 這是完全同步的
增量區域傳送:ixfr # 只傳送改變的內容
區域類型(傳輸數據時)
主區域: master # 主DNS服務器
從區域:slave
提示區域:hint # 定義根在什麼地方
轉發區域:forward # 不找根,直接告訴域在什麼地方,並轉出的
資源記錄
1 | 資源記錄的格式,是橫著寫的,這裡為看清竪寫 |
SOA
1 | SOA(Start Of Authority)起始授權記錄,用於標明一個區域內部主從服務器之間如何同步數據,以及起始授權對象是誰的;數據中的第一條記錄必須是此條,用於標明本區域內多個DNS服務器之間是如何完成數據同步的 |
NS
1 | NS: (Name Server):ZONE NAME(區域名稱) --> FQDN,這是說明哪個區域,它的區域的NS是哪個主機,這裏給的是主機名而非IP,另外還要加一條主機名的IP地址記錄 |
MX
1 | MX(Mail eXchanger): ZONE NAME --> FQDN(郵件服務器的主機名),格式如下: |
A
1 | A(address):FQDN-->IPV4 從FQDN(名稱)转换到IPV4(地址)的,主機名轉IP地址的都用A記錄,這是一種最常用的記錄;另一種是AAAA: FQDN --> IPV6 |
PTR
1 | PTR(pointer指針記錄):IP --> FQDN,常用 |
CNAME
1 | CNAME(Canonical NAME)正式名稱,此名叫別名記錄:FQDN --> FQDN,標示別名是誰 |
域和區域
1 | 域:Domain,邏輯概念 |
安装与使用
1 | * 例:測試 |
配置文件与正向区域配置
1 | * 實現互聯網上的DNS服務器功能 |
dig命令
1 | 1. 用dig命令測試 |
host命令
1 | * 语法: |
nslookup命令
1 | nslookup:交互式命令,也可工作在命令行模式下;這裏只介紹交互式模式,用window測試 |
反向区域配置
1 | * 反向區域的配置 |
泛域名解析、递归、传送
1 | * 泛域名解析:如果想不管输入什麼,都轉到主頁。实际上应该是错误页面,這要通過url重定向來處理。 |
主从配置
1 | 1. vim /etc/named.conf |
增量传送
1 | * 在主服務器5.4中 |
rndc
1 | * 用rndc控制DNS服務器 |
控制遠程服務器需注意
1 | 1. named.conf中controls一項中的監聽地址要改,如: |
测试DNS服务器
1 | * 例:公司在mageedu.com域下,網站是www.mageedu.com。現兩個部門有各自的網址,分別為www.mageedu.com/fin(財務)和www.mageedu.com/market(市場),現兩個網站有不同的地址,如www.fin.mageedu.com和www.market.mageedu.com,現在就有三個域要管理,也就是mageedu.com域要有DNS服務器管理,新分出的www.fin.mageedu.com和www.market.mageedu.com也要有兩個DNS服務器管理,這就是一個父域和兩個子域,子域要有父域的授權,下面為正向的設置。反向設置比較麻煩 |
fin子域服务器
1 | * 建立fin子域服務器方法:只建一個 |
子域轉發
1 | 讓子域可以找到互聯網上沒有的父域,定義轉發即可。將子域所有的請求都轉發給父域。 |
acl
1 | ACL的使用(訪問控制列表) |
智能DNS
1 | * 能夠根據客戶端來源所屬的網絡進行判斷,並且返回給一個我們事先定義好的IP地址,這就是智能DNS。 |
DNS日志功能
1 | 在互聯網上使用不建議開日志功能,會產生大量磁盤I/O寫日志,影響服務器性能 |
DNS服務器性能測試
1 | * dnstop軟件是監控DNS服務器每秒能接受多少查詢的,對哪個域名發起查詢請求的;bind原碼軟件包中有queryperf命令可以對服務器做壓力測試 |