名字解析 DNS服務 實現主從服務器 實現子域 實現view 編譯安裝 壓力測試 DNS排錯
DNS服務web
DNS:Domain Name Service 應用層協議 C/S,53/udp, 53/tcp BIND:Bekerley Internat Name Domain ISC (www.isc.org) 本地名稱解析配置文件:hosts /etc/hosts %WINDIR%/system32/drivers/etc/hosts 122.10.117.2 www.magedu.com 93.46.8.89 www.google.com
DNS域名數據庫
根域 一級域名:Top Level Domain: tld com, 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 --> IP IP --> FQDN 注意:正反向解析是兩個不一樣的名稱空間,是兩棵不一樣的解析樹
DNS服務器類型服務器
DNS服務器的類型: 主DNS服務器 從DNS服務器 緩存DNS服務器(轉發器) 主DNS服務器:管理和維護所負責解析的域內解析庫的服務器 從DNS服務器:從主服務器或從服務器「複製」(區域傳輸)解析庫副本 序列號:解析庫版本號,主服務器解析庫變化時,其序列遞增 刷新時間間隔:從服務器從主服務器請求同步解析的時間間隔 重試時間間隔:從服務器請求同步失敗時,再次嘗試時間間隔 過時時長:從服務器聯繫不到主服務器時,多久後中止服務 「通知」機制:主服務器解析庫發生變化時,會主動通知從服務器
區域傳輸網絡
區域傳輸: 徹底傳輸:傳送整個解析庫 增量傳輸:傳遞解析庫變化的那部份內容 Domain: Fully Qualified Domain Name 正向:FQDN --> IP 反向: IP --> FQDN 負責本地域名的正向和反向解析庫 正向區域 反向區域
DNS解析dom
一次完整的查詢請求通過的流程: Client -->hosts文件 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 頂級域名DNS--> 二級域名DNS… 解析答案: 確定答案: 否認答案:請求的條目不存在等緣由致使沒法返回結果 權威答案: 非權威答案:
資源記錄ssh
區域解析庫:由衆多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
資源記錄tcp
資源記錄定義的格式: 語法:name [TTL] IN rr_type value 注意: (1) TTL可從全局繼承 (2) @可用於引用當前區域的名字 (3) 同一個名字能夠經過多條記錄定義多個不一樣的值;此時DNS服務器會以輪詢 方式響應 (4) 同一個值也可能有多個不一樣的定義名字;經過多個不一樣的名字指向同一個值 進行定義;此僅表示經過多個不一樣的名字能夠找到同一個主機
SOA記錄ide
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.1 www.magedu.com. IN A 2.2.2.2 mx1.magedu.com. IN A3.3.3.3 mx2.magedu.com. IN A 4.4.4.4 $GENERATE 1-254 HOST$ A 1.2.3.$ *.magedu.com. IN A 5.5.5.5 magedu.com. IN A 6.6.6.6 避免用戶寫錯名稱時給錯誤答案,可經過泛域名解析進行解析至某特定地址
其餘記錄
AAAA: name: FQDN value: 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: 別名的FQDN value: 真正名字的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.1 ns2.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.1 ns2.magedu.com. IN A 3.3.3.2 ns3.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進行解析,就要定義哪些zone zone "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 @SERVER dig -t axfr magedu.com @10.10.10.11 dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1 dig -t NS . @114.114.114.114 dig -t NS . @a.root-servers.net
測試命令
host [-t type] name [SERVER] host –t NS magedu.com 172.16.0.1 host –t soa magedu.com host –t mx magedu.com host –t axfr magedu.com host 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.1 ll /var/named/magedu.com.zone.jnl cat /var/named/magedu.com.zone
從服務器
一、應該爲一臺獨立的名稱服務器 二、主服務器的區域解析庫文件中必須有一條NS記錄指向從服務器 三、從服務器只須要定義區域,而無須提供解析庫文件;解析庫文件應該放置於 /var/named/slaves/目錄中 四、主服務器得容許從服務器做區域傳送 五、主從服務器時間應該同步,可經過ntp進行; 六、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/message trace: 遞增debug一個級別 trace LEVEL: 指定使用的級別 notrace:將調試級別設置爲 0 flush:清空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: dnspod dns.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記錄