Linux进阶:DNS详解
生活随笔
收集整理的這篇文章主要介紹了
Linux进阶:DNS详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
DNS服務和BIND
本章內容
名字解析 DNS服務 實現主從服務器 實現子域 實現view 編譯安裝 壓力測試 DNS排錯DNS服務
DNS:Domain Name Service 應用層協議C/S,53/udp, 53/tcp BIND:Bekerley Internat Name DomainISC (www.isc.org) 本地名稱解析配置文件:hosts/etc/hosts%WINDIR%/system32/drivers/etc/hosts122.10.117.2 www.magedu.com93.46.8.89 www.google.com
DNS域名
根域 一級域名:Top Level Domain: tldcom, edu, mil, gov, net, org, int,arpa三類:組織域、國家域(.cn, .ca, .hk, .tw)、反向域 二級域名 三級域名 最多127級域名 ICANN(The Internet Corporation for Assigned Names and Numbers) 互聯網名稱與數字地址分配機構,負責在全球范圍內對互聯網通用頂級域名 (gTLD)以及國家和地區頂級域名(ccTLD)系統的管理、以及根服務器系統 的管理
DNS
www.magedu.com FQDN 全稱域名 www. 主機名或別名 magedu.com. 域名 . com cn net org mil int tech magedu taobao bai www
DNS解析
DNS查詢類型:遞歸查詢迭代查詢 名稱服務器:域內負責解析本域內的名稱的主機根服務器:13組服務器 解析類型:FQDN --> IPIP --> FQDN 注意:正反向解析是兩個不同的名稱空間,是兩棵不同的解析樹
DNS服務器類型
DNS服務器的類型:主DNS服務器從DNS服務器緩存DNS服務器(轉發器) 主DNS服務器:管理和維護所負責解析的域內解析庫的服務器 從DNS服務器:從主服務器或從服務器“復制”(區域傳輸)解析庫副本序列號:解析庫版本號,主服務器解析庫變化時,其序列遞增刷新時間間隔:從服務器從主服務器請求同步解析的時間間隔重試時間間隔:從服務器請求同步失敗時,再次嘗試時間間隔過期時長:從服務器聯系不到主服務器時,多久后停止服務 “通知”機制:主服務器解析庫發生變化時,會主動通知從服務器
區域傳輸
區域傳輸:完全傳輸:傳送整個解析庫增量傳輸:傳遞解析庫變化的那部分內容 Domain: Fully Qualified Domain Name正向:FQDN --> IP反向: IP --> FQDN 負責本地域名的正向和反向解析庫正向區域反向區域
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 2012011200000051qgs69bwoh4h6nht4n1h0lr038x
資源記錄
資源記錄定義的格式:語法:name [TTL] IN rr_type value 注意: (1) TTL可從全局繼承 (2) @可用于引用當前區域的名字 (3) 同一個名字可以通過多條記錄定義多個不同的值;此時DNS服務器會以輪詢 方式響應 (4) 同一個值也可能有多個不同的定義名字;通過多個不同的名字指向同一個值 進行定義;此僅表示通過多個不同的名字可以找到同一個主機
SOA記錄
name: 當前區域的名字,例如“magedu.com.”value: 有多部分組成 (1) 當前區域的主DNS服務器的FQDN,也可以使用當前區域的名字; (2) 當前區域管理員的郵箱地址;但地址中不能使用@符號,一般用.替換 例如:admin.magedu.com (3) 主從服務區域傳輸相關定義以及否定的答案的統一的TTL 例如: magedu.com. 86400 IN SOA ns.magedu.com. nsadmin.magedu.com. ( 2015042201 ;序列號 2H ;刷新時間 10M ;重試時間 1W ;過期時間 1D ;否定答案的TTL值 )
NS記錄
name: 當前區域的名字 value: 當前區域的某DNS服務器的名字,例如ns.magedu.com. 注意:一個區域可以有多個NS記錄 例如: magedu.com. IN NS ns1.magedu.com. magedu.com. IN NS ns2.magedu.com. 注意:(1) 相鄰的兩個資源記錄的name相同時,后續的可省略(2) 對NS記錄而言,任何一個ns記錄后面的服務器名字,都應該在后續有 一個A記錄
MX記錄
name: 當前區域的名字 value: 當前區域的某郵件服務器(smtp服務器)的主機名 一個區域內,MX記錄可有多個;但每個記錄的value之前應該有一個數字(0- 99),表示此服務器的優先級;數字越小優先級越高 例如:magedu.com. IN MX 10 mx1.magedu.com.IN MX 20 mx2.magedu.com. 注意:對MX記錄而言,任何一個MX記錄后面的服務器名字,都應該在后續有 一個A記錄
A記錄
name: 某主機的FQDN,例如www.magedu.com. value: 主機名對應主機的IP地址 例如:www.magedu.com. IN A 1.1.1.1www.magedu.com. IN A 2.2.2.2mx1.magedu.com. IN A3.3.3.3mx2.magedu.com. IN A 4.4.4.4$GENERATE 1-254 HOST$ A 1.2.3.$*.magedu.com. IN A 5.5.5.5magedu.com. IN A 6.6.6.6 避免用戶寫錯名稱時給錯誤答案,可通過泛域名解析進行解析至某特定地址
其他記錄
AAAA:name: FQDNvalue: IPv6 PTR:name: IP,有特定格式,把IP地址反過來寫,1.2.3.4,要寫作4.3.2.1;而 有特定后綴:in-addr.arpa.,所以完整寫法為:4.3.2.1.in-addr.arpa.value: FQDN 例如:4.3.2.1.in-addr.arpa. IN PTR www.magedu.com.如1.2.3為網絡地址,可簡寫成:4 IN PTR www.magedu.com. 注意:網絡地址及后綴可省略;主機地址依然需要反著寫
別名記錄
CNAME:name: 別名的FQDNvalue: 真正名字的FQDN 例如:www.magedu.com. IN CNAME websrv.magedu.com.
子域
子域授權:每個域的名稱服務器,都是通過其上級名稱服務器在解析庫進行授權 類似根域授權tld:.com. IN NS ns1.com..com. IN NS ns2.com.ns1.com. IN A 2.2.2.1ns2.com. IN A 2.2.2.2 magedu.com. 在.com的名稱服務器上,解析庫中添加資源記錄magedu.com. IN NS ns1.magedu.com.magedu.com. IN NS ns2.magedu.com.magedu.com. IN NS ns3.magedu.com.ns1.magedu.com. IN A 3.3.3.1ns2.magedu.com. IN A 3.3.3.2ns3.magedu.com. IN A 3.3.3.3 glue record:粘合記錄,父域授權子域的記錄
互聯網域名
域名注冊:代理商:萬網, 新網, godaddy 注冊完成以后,想自己用專用服務來解析管理后臺:把NS記錄指向的服務器名稱,和A記錄指向的服務器地址
BIND安裝
BIND的安裝配置:dns服務程序包:bind,unbound程序名:named,unbound程序包:yum list all bind*bind:服務器bind-libs:相關庫bind-utils:客戶端bind-chroot: /var/named/chroot/
bind服務器
服務腳本和名稱:/etc/rc.d/init.d/named /usr/lib/systemd/system/named.service 主配置文件:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key 解析庫文件:/var/named/ZONE_NAME.ZONE 注意:(1) 一臺物理服務器可同時為多個區域提供解析(2) 必須要有根區域文件;named.ca(3) 應該有兩個(如果包括ipv6的,應該更多)實現localhost和本地回環地址的解 析庫rndc:remote name domain controller,默認與bind安裝在同一主機,且只能通過127.0.0.1連接named進程提供輔助性的管理功能;953/tcp
配置文件
主配置文件:全局配置:options {};日志子系統配置:logging {};區域定義:本機能夠為哪些zone進行解析,就要定義哪些zonezone "ZONE_NAME" IN {}; 注意:任何服務程序如果期望其能夠通過網絡被其它主機訪問,至少應該監聽 在一個能與外部主機通信的IP地址上 緩存名稱服務器的配置:監聽外部地址即可dnssec: 建議關閉dnssec,設為no
配置主DNS服務器
主DNS名稱服務器:(1) 在主配置文件中定義區域zone "ZONE_NAME" IN {type {master|slave|hint|forward};file "ZONE_NAME.zone";};(2) 定義區域解析庫文件出現的內容宏定義資源記錄 主配置文件語法檢查:named-checkconf 解析庫文件語法檢查:named-checkzone "magedu.com" /var/named/magedu.com.zone rndc status|reload ;service named reload
測試命令dig
dig [-t type] name [@SERVER] [query options]dig只用于測試dns系統,不會查詢hosts文件進行解析 查詢選項:+[no]trace:跟蹤解析過程 : dig +trace magedu.com+[no]recurse:進行遞歸解析測試反向解析:dig -x IP = dig –t ptr reverseip.in-addr.arpa模擬區域傳送:dig -t axfr ZONE_NAME @SERVERdig -t axfr magedu.com @10.10.10.11dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1dig -t NS . @114.114.114.114dig -t NS . @a.root-servers.net
測試命令
host [-t type] name [SERVER]host –t NS magedu.com 172.16.0.1host –t soa magedu.comhost –t mx magedu.comhost –t axfr magedu.comhost 1.2.3.4 nslookup命令: nslookup [-option] [name | -] [server] ? 交互式模式:nslookup>server IP: 指明使用哪個DNS server進行查詢set q=RR_TYPE: 指明查詢的資源記錄類型NAME: 要查詢的名稱
反向區域
反向區域:區域名稱:網絡地址反寫.in-addr.arpa.172.16.100. --> 100.16.172.in-addr.arpa. (1) 定義區域zone "ZONE_NAME" IN {type {master|slave|forward};file "網絡地址.zone"}; (2) 定義區域解析庫文件注意:不需要MX,以PTR記錄為主
允許動態更新
指定的zone語句塊中:Allow-update {any;}; chmod 770 /var/named setsebool -P named_write_master_zones on nsupdate? >server 127.0.0.1? >zone magedu.com? >update add ftp.magedu.com 88888 IN A 8.8.8.8? >send? >update delete www.magedu.com A? >send 測試:dig ftp.magedu.com @127.0.0.1ll /var/named/magedu.com.zone.jnlcat /var/named/magedu.com.zone
從服務器
1、應該為一臺獨立的名稱服務器 2、主服務器的區域解析庫文件中必須有一條NS記錄指向從服務器 3、從服務器只需要定義區域,而無須提供解析庫文件;解析庫文件應該放置于 /var/named/slaves/目錄中 4、主服務器得允許從服務器作區域傳送 5、主從服務器時間應該同步,可通過ntp進行; 6、bind程序的版本應該保持一致;否則,應該從高,主低 定義從區域的方法:zone "ZONE_NAME" IN {type slave;masters { MASTER_IP; };file "slaves/ZONE_NAME.zone";};
rndc命令
rndc:rndc --> rndc (953/tcp)rndc COMMAND COMMAND:reload: 重載主配置文件和區域解析庫文件reload zonename: 重載區域解析庫文件retransfer zonename: 手動啟動區域傳送,而不管序列號是否增加notify zonename: 重新對區域傳送發通知reconfig: 重載主配置文件querylog: 開啟或關閉查詢日志文件/var/log/messagetrace: 遞增debug一個級別trace LEVEL: 指定使用的級別notrace:將調試級別設置為 0flush:清空DNS服務器的所有緩存記錄
轉發服務器
注意:被轉發的服務器需要能夠為請求者做遞歸,否則轉發請求不予進行 (1) 全局轉發: 對非本機所負責解析區域的請求,全轉發給指定的服務器Options {forward first|only;forwarders { ip;};}; (2) 特定區域轉發:僅轉發對特定的區域的請求,比全局轉發優先級高zone "ZONE_NAME" IN {type forward;forward first|only;forwarders { ip;};}; 注意:關閉dnssec功能:dnssec-enable no;dnssec-validation no;
bind中ACL
bind中基礎的安全相關的配置:acl: 把一個或多個地址歸并為一個集合,并通過一個統一的名稱調用 格式:acl acl_name {ip;net/prelen;……}; 示例:acl mynet {172.16.0.0/16;10.10.10.10;};
bind中ACL
bind有四個內置的acl:none: 沒有一個主機any: 任意主機localhost: 本機localnet: 本機的IP同掩碼運算后得到的網絡地址 注意:只能先定義,后使用;因此一般定義在配置文件中,處于options的前面
訪問控制
訪問控制的指定:allow-query {}: 允許查詢的主機;白名單allow-transfer {}:允許區域傳送的主機;白名單allow-recursion {}: 允許遞歸的主機,建議全局使用allow-update {}: 允許更新區域數據庫中的內容
bind view
CDN: Content Delivery Network內容分發網絡服務商:藍汛,網宿,帝聯等 智能DNS:dnspoddns.la view:視圖:實現智能DNS: 一個bind服務器可定義多個view,每個view中可定義一個或多個zone每個view用來匹配一組客戶端多個view內可能需要對同一個區域進行解析,但使用不同的區域解析庫文件
bind view
注意:(1) 一旦啟用了view,所有的zone都只能定義在view中(2) 僅在允許遞歸請求的客戶端所在view中定義根區域(3) 客戶端請求到達時,是自上而下檢查每個view所服務的客戶端列表 格式:view VIEW_NAME {match-clients { testacl; };zone “magedu.com” {type master;file “magedu.com.zone”; };include “/etc/named.rfc1912.zones”;};
DNS排錯
NOERROR不代表沒有問題,也可以是過時的記錄 ?查看是否為權威記錄,flags:aa標記判斷 ?被刪除的記錄仍能返回結果,可能是因為*記錄存在 ?如:*.example.com. IN A 172.25.254.254 ?注意“.”的使用 ?避免CNAME指向CNAME記錄,可能產生回環 ?test.example.com. IN CNAME lab.example.com. ?lab.example.com. IN CNAME test.example.com. ?正確配置PTR記錄,許多服務依賴PTR,如sshd,MTA ?正確配置輪詢round-robin記錄
轉載于:https://blog.51cto.com/13878155/2296017
總結
以上是生活随笔為你收集整理的Linux进阶:DNS详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转] 视频直播前端方案
- 下一篇: LaTex 使用特殊章节符号 (§)