DNS服務介紹
DNS:Domain Name System 應用層協議,工做在C/S,53/udp, 53/tcp,用於實現把域名ip或ip解析成域名的一個服務。
在linux上一般利用BIND:Bekerley Internat Name Domain來實現DNS服務,DIND是ISC (www.isc.org)的一個項目。
咱們還能夠一般本地名稱解析配置文件:hosts,linux上的文件位置:是/etc/hosts,windows的文件位置是:%WINDIR%/system32/drivers/etc/hosts
hosts文件內容例:
123.122.10.117.2 www.magedu.com
93.46.8.89 www.google.comlinux
DNS域名:
有根域,一級域名(com,edu,mil,gov,net,org...)有三類、組織域、國家域、反向域,二級域名,最多有127級域名,由ICANN(The Internet Corporation for Assigned Names and Numbers)互聯網名稱與數字地址分配機構,負責在全球範圍內對互聯網通用頂級域名(gTLD)以及國家和地區頂級域名(ccTLD)系統的管理、以及根服務器系統
的管理。
DNS查詢類型:
遞歸查詢:把查詢請求發送出去,只返回查詢結果,例如咱們設置dns上網同樣
迭代查詢:例如查詢www.baidu.com,先查詢根域,再查詢com域,再查詢com域中的baidu.com域,再返回www.baidu.com對應的ip地址
名稱服務器:域內負責解析本域內的名稱的主機
根服務器:13組服務器
解析類型:
FQDN --> IP
IP --> FQDN
注意:正反向解析是兩個不一樣的名稱空間,是兩棵不一樣的解析樹,FQDN:(Fully Qualified Domain Name)全限定域名vim
下面咱們再來了解一個DNS服務器類型
DNS服務器的類型:主DNS服務器,從DNS服務器,緩存DNS服務器(轉發器)
主DNS服務器:管理和維護所負責解析的域內解析庫的服務器
從DNS服務器:從主服務器或從服務器「複製」(區域傳輸)解析庫副本
序列號:解析庫版本號,主服務器解析庫變化時,其序列遞增
刷新時間間隔:從服務器從主服務器請求同步解析的時間間隔
重試時間間隔:從服務器請求同步失敗時,再次嘗試時間間隔
過時時長:從服務器聯繫不到主服務器時,多久後中止服務
「通知」機制:主服務器解析庫發生變化時,會主動通知從服務器
區域傳輸:徹底傳輸:傳送整個解析庫,增量傳輸:傳遞解析庫變化的那部份內容
一次完整的查詢請求通過的流程:
Client -->hosts文件 -->DNS Service Local Cache --> DNS Server(recursion) --> Server Cache --> iteration(迭代) --> 根--> 頂級域名DNS-->二級域名DNS…
解析答案:
確定答案:返回的答案
否認答案:請求的條目不存在等緣由致使沒法返回結果
權威答案:主域名服務器,負責維護一個區域的全部域名信息,是特定的全部信息的權威信息源,數據能夠修改。
非權威答案:一般由緩存服務器給出的間接信息
資源記錄
區域解析庫:由衆多RR組成:
資源記錄:Resource Record, RR
記錄類型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始受權記錄;一個區域解析庫有且僅能有一個
SOA記錄,必須位於解析庫的第一條記錄
A:internet Address,做用,FQDN --> IP
AAAA:FQDN --> IPv6
PTR:PoinTeR,IP --> FQDN
NS:Name Server,專用於標明當前區域的DNS服務器
CNAME : Canonical Name,別名記錄
MX:Mail eXchanger,郵件交換器
TXT:對域名進行標識和說明的一種方式,通常作驗證記錄時會使用此項,如:
SPF(反垃圾郵件)記錄,https驗證等
示例:_dnsauth TXT 2012011200000051qgs69bwoh4h6nht4n1h0lr038xwindows
資源記錄定義的格式:
語法:name [TTL] IN rr_type value
注意:
(1) TTL可從全局繼承
(2) @可用於引用當前區域的名字
(3) 同一個名字能夠經過多條記錄定義多個不一樣的值;此時DNS服務器會以輪詢
方式響應
(4) 同一個值也可能有多個不一樣的定義名字;經過多個不一樣的名字指向同一個值
進行定義;此僅表示經過多個不一樣的名字能夠找到同一個主機緩存
配置緩存DNS服務器:
安裝DNS服務器軟件 :bind,能夠利用yum安裝
BIND程序名:named
service named start
查看是否監聽53/udp端口
主配置文件/etc/named.conf:
全局配置:options {};
日誌子系統配置:logging {};
區域定義:本機可以爲哪些zone進行解析,就要定義哪些zone
zone "ZONE_NAME" IN {};
注意:任何服務程序若是指望其可以經過網絡被其它主機訪問,至少應該監聽在一個能與外部主機通訊的IP地址上
緩存名稱服務器的配置:監聽外部地址便可
dnssec: 建議關閉dnssec,設爲no
options {
// listen-on port 53 { 127.0.0.1; }; //註釋
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };//這裏修改爲any
recursion yes;
dnssec-enable no;
dnssec-validation no;
/ Path to ISC DLV key /
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};服務器
接下來,咱們能夠經過named-checkconf
rndc reload
這樣就是一個緩存DNS服務器了
配置主區域DNS服務器:
vim /etc/named.rfc1912.zones
vim /var/named/zcs.com.zone
注意:這裏面的/var/named/zcs.com.zone權限必定要屬主root,屬組named,且權限爲640
咱們還須要經過named-checkzone zcs.com /var/named/zcs.com.zone 來對區域文件進行檢驗
最後經過dig -t A www.zcs.com @192.168.0.30來進行校驗網絡
配置從DNS服務器
在主區域文件中添加DNS服務器
修改/etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; }; //註釋
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-transfer {none;};
allow-query { any; };//這裏修改爲any
recursion yes;
dnssec-enable no;
dnssec-validation no;
/ Path to ISC DLV key /
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
主區域文件/etc/namd.conf中options{}添加allow-transfer {192.168.0.40;};
vim /etc/named.rfc1912.zones
rndc reload
注意:若是防火牆未關閉,則關閉防火牆,或者添加tcp/53的策略,並且時鐘須要與主服務器同步
成功能夠看到/var/named下接收到了正向區域的區域文件
![](https://s1.51cto.com/images/blog/201904/23/493efa024d92d9d1d36e650c0378f273.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk
配置主從反向區域DNS服務器
#vim /etc/named.rfc1912.zones
修改/etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; }; //註釋
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-transfer {none;};
allow-query { any; };//這裏修改爲any
recursion yes;
dnssec-enable no;
dnssec-validation no;
/ Path to ISC DLV key /
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
#vim /var/named/192.168.0.zone
注意權限:
在從DNS服務器上配置]#vim /etc/named.rfc1912.zones
rndc reload
驗證#dig -t ptr 50.0.168.192.in-addr.arpa @192.168.0.30或dig -x 192.168.0.50 @192.168.0.30tcp