Related Posts Plugin for WordPress, Blogger...

1、前言

本篇筆記為記錄有關於 DNS 進階設定、安全性設定、檢測 DNS 等相關資訊,以下整理的重點說明為引用 TWNIC 網路安全教育訓練課程內容(請尊重 Weithenn 的辛勞!!)

文章目錄

1、前言
2、DNS 基礎
3、DNS 伺服器說明
4、正 / 反向解析之意義與原理
5、DNS 設定檔說明 (named.conf)
6、Zone File 說明
7、TWNIC DNS 教育訓練文件
8、DNS 系統記錄解讀
9、酷!學園討論區 - DNS 二十問

2、DNS 基礎

DNS 規範 RFC 1034RFC 1035,有關 DNS 也可參考站內文章 DNS 伺服器的原理與運作流程

3、DNS 伺服器說明

FQDN (Fully Qualified Domain Name): 指網際網路上伺服器名稱的完全表示方式,俗稱 Domain Name。
  • 每個名稱間以點 (.) 隔開 (ex. www.abc.com.tw.)
  • 每個 FQDN 就像 IP Address 一樣具有 唯一
  • FQDN 最多只能支援到 127 層 (ex. abc.com.tw >> 3 層)
  • 每個分支最長支援 63 字元(a-z,0-9,-)
  • 總長 255 字元 (請尊重 Weithenn 的辛勞!!)

名稱伺服器類型: 可分為權威主機 (Authoritative) 或快取主機 (Cache-Only)。
  • 權威主機 (Authoritative):能 管理回應 其負責網域名稱之權威回答 (Authoritative Answer) 稱之
  • Master 主機所管理的 DNS 資料是從 檔案 (Zone File) 來的
  • Slave 主機所管理的 DNS 資料是從 轄區傳送 (Zone Transfer) 來的
  • 快取主機 (Cache-Only) 負責 查詢回應 並將結果快取下來以備使用 (ex. 台灣最大快取主機 168.95.1.1)

權威主機 (Authoritative)運作原理
  1. 當 DNS 用戶端 (DNS Client) 端詢問到權威主機 (DNS Server) 所管理的網域名稱時,此時會直接回應給 DNS 用戶端 (此一回應動作稱為 權威回答(Authoritative Answer))
  2. 當 DNS 用戶端 (DNS Client) 端詢問到 非 權威主機 (DNS Server) 所管理的網域名稱時,會檢查自身的 DNS Cache 看是不是有相關的資料,若 DNS Cache 有的話你會看到回應是 非權威回答(Non-Authoritative Answer)
  3. 若在 DNS Cache 內也沒發現資料,則會向 Root 伺服器查詢 (.) 然後 Root 伺服器會回應管理該域名的授權伺服器 (.tw.)
  4. 本地伺服器會向其中一台授權伺服器查詢,並將這些伺服器名單存到記憶體中,以備使用 (減少再向 Root 伺服器查詢)
  5. 遠方伺服器回應查詢 (請尊重 Weithenn 的辛勞!!)
  6. 本地伺服器回應查詢結果給 DNS 用戶端 (DNS Client),同時會將結果儲存一份在自已的快取內以便使用 (減少再向遠方伺服器查詢)

Master / Slave: 主要與次要 DNS 伺服器
  • DNS 在實際運作上並沒有 主 / 次 要 DNS 伺服器之分,也就是說並非都先訪問主要 DNS 伺服器
  • 因此若 Master DNS 掛點,則 Client 端僅有 50% 能正確解析到 Domain Name
  • 若 Master DNS 掛點超過所設定的 SOA Expiry 時間後仍未活起來則 Slave DNS 會因為超過最大 Retry Master Dns 時間而停止 Zone 解析
  • 注意 DNS Slave 主機記得禁止 Zone Transfer (allow-transfer {none;};)
  • Master DNS 記得改資料時一定要更改 Serial 值否則 Slave DNS 將不會同步新的記錄
  • 可於設定檔內加注 notify 能改善 Master / Slave 同步問題 (Bind 8.3、bind 9.x 中預設即啟動)

4、正 / 反向解析之意義與原理

正 向解析 (Forward Domain): 機器名稱 (Hostname) 對應 IP Address (ex. dns.hinet.net -> 168.95.1.1)
反 向解析 (Reverse Domain): IP Address 對應網域名稱 (ex. 61.219.38.89 -> www.hinet.net)
  • 事實上在網際網路的 DNS 運作上反向解析的 DNS Query 遠比正解高出許多 (約 60% 為反向解析其次 40% 才為正向解析)
  • 因為至少要擁有一個 C Class 才能作反向解析,所以一般我們申請的 ADSL 或專線都要請 ISP 幫我們作反向解析的動作
  • 目前有使用正反解對應來減少 SPAM 的機制足可見 DNS 反向解析設定之重要性

5、DNS 設定檔說明 (named.conf)

此設定檔為 BIND 環境主要設定檔,大致分為五個部份作說明

Options: 定義 named 功能選項(請尊重 Weithenn 的辛勞!!)
  • directory: 指定 zone file 檔案存放路徑
  • pid-file: 指定 DNS 服務啟動時行程代號 (PID) 路徑
  • allow-transfer: 指定哪些 IP Adress 可與此部 DNS 做轄區傳送 (Zone Transfer,簡稱 AXFR) 請注意預設為全開狀態 (即允許任何 IP Address Zone Transfer 所管理的 Zone)
  • options 下的 allow-transfer: 定義此部 DNS 允許哪些 IP Address 可與此部 DNS 做 AXFR (套用到管理的所有 Zone 下)
  • zone 下的 allow-transfer: 定義此 Zone 允許哪些 IP Address 可與此部 DNS 做 AXFR
  • 若 options 與 zone 皆定義 allow-transfer? 則允許 IP Address 為二者定義 IP Address 皆可傳送

Forwarders: 定義 Forwarders Server 位置,當此部 DNS 主機遇到非本機負責 Zone 之查詢請求的時候,不會直接去向 Root Server 查詢 Zone 而把請求轉交給指定的 Forwarders (一台或多台) 主機代為查詢 (另外一種 DNS 機制來減低網路流量) 例如指向國內最大 DNS Cache 主機 168.95.192.1、168.95.1.1

Zone ".": 定義 Root Server 位置
  • 所有 DNS 伺服器必須要知道 Root Server 位置(因為是 DNS 查詢的起源)
  • 一台 DNS 僅能有一個 hint type
  • Root Server 列表檔案就是 named.root 檔案的內容

Zone "xxx.com.tw": 定義正解網域 (Forward Domain)
  • type: 指定為 master / slave DNS 伺服器
  • file: 指定 zone file 存放路徑 (未指定就套用 directory 所指定的路徑)
  • allow-transfer: 指定哪些 IP Address 可與此 Zone 做轄區傳送 (Zone Transfer,簡稱 AXFR)

Zone "59.60.61.in-addr.arps": 定義反解網域 (Reverse Domain)
  • type: 指定為 master / slave DNS 伺服器(你要有一個 C Class 才有意義)
  • in-addr: 為 Internet Address 縮寫用於 IPv4 反解,若是 IPv6 則為 ip6
  • apra: 為反解起源之 TLD

設定檔注意事項及常犯錯誤
  • options 此 s 別忘了加上
  • 定義的功能選項前後要用 { } 括起來
  • 指定的檔案或路徑前後要加 "" 號
  • 每一個描述的結尾要加 ; 號
  • 加入的 IP 後結尾要加 ; 號 (請尊重 Weithenn 的辛勞!!)
  • pid-file 指定的路徑要注意權限問題
  • Zone Transfer 記得要設定否則將允許任何 IP 轄區傳送你管理的 Domain Zone File
  • 若想當 Cache-Only 主機如何設定? 只要將 正、反解 設定拿掉即可 (即保留 options/root/localhost)

6、Zone File 說明

設定完 named.conf 後會指定該 Zone 的 Zone File 而此內容為許多的 資源記錄(RR,Resource Record) 組合而成,內容大致為 SOA、NS、A、AAAA、PTR、CNAME、MX,一筆資源記錄包含五個值 (fqdn,ttl,class,type,rdata) 下列為舉例一筆 A RR。
  • FQDN: Domain Name
  • TTL: 快取時間 (TTL,Time To Live),最多可設為 2 的 31 次方秒 (2147483648 秒約 68 年)
  • Class: 網路類別 (IN,Internet),Bind 8 一定要寫 IN,若為 Bind 9 可不寫,若 Master 為 Bind 9 不寫 IN 而 Slave 為 Bind 8?同步時 Bind 8 會自動將 IN 加上
  • Type: 資料類型此例為 A RR
  • Rdata: 答案,也就是對應的 IP
 www.abc.com.tw   3600    IN        A       61.60.59.58
 (FQDN)           (TTL)  (Class)   (Type)    (Rdata)


SOA (Start Of Authority): 用於本機主機代表為權威主機,並描述此 Zone 資料及提供 DNS Slave 資料
  • serial: zone file 版本(不可大於 2 的 31 次方)
  • refresh: DNS Slave 進行 Zone Transfer 時間 (會先檢查 Serial 值才決定是否進行 Zone Transfer)
  • retry: 若 DNS Slave 進行 Zone Transfer 失敗時會在指定時間重試
  • expire: 若重試 Zone Transfer 超過時間仍為成功則停止重試
  • Min TTL/Negative Cache: 依 Bind 8 或 Bind 9 意義不同
  • Minimum TTL: Bind 8 使用代表將此 TTL 套用給下面每一筆 RR TTL 值
  • Negative Cache: Bind 9 使用代表無效快取時間,即在指定時間內若有 DNS 查尋為無效記錄時則 Cache 住,當在指定 Cache 時間內再有相同的 DNS 查尋,則直接回答為無效 DNS 記錄

NS,Name Server: 用於 DNS 的搜尋與 A,Address 搭配使用
  • 每個 Zone File 皆需要有 NS RR 一般放於 SOA 之後
  • 在 Twnic 設定解析該 Domain 為 DNS 模式時,此時 Zone File 內的 NS RR 要與 Twnic 設定一致 (上下層 NS 記錄要一致)
  • NS RR 的 Rdata 記錄需為 FQDN 記錄 (不可使用 IP、CNAME) 此為 RFC 規範
  • NS 記錄的取用順序是 隨機 決定的而不是照順序從第一筆至最後一筆
  • NS 記錄所指定的 IP Address 不可為 Private/Loopbak/Multi-Cast IP Address

A,Address: 將 DNS 網域名稱對應到 IPv4 的 32 位元位址

AAAA,Name Server: 將 DNS 網域名稱對應到 IPv6 的 128 位元位址

PTR,Pointer: 定義某個 IP Address 對應的 Domain Name,即將 IP 位址轉換成主機的 FQDN (反向解析)
  • 欲進行 DNS 反解先決條件必須管理 1 Class C 才能自已進行反解設定,否則是無效的
  • 向所屬 ISP 進行反解申請 (因為大都沒有管理 1 Class C)是 必須的 (有必要嗎?)
  • DNS Query 正向解析約佔 40% ,反向解析佔 60% (可見反向解析之重要)

CNAME,Canonical Name: 為同一部主機設定許多別名與 A Address 搭配使用
  • 建議使用 A 記錄來取代 CNAME
  • 設定不良將造成 NS、MX 出現問題
  • CNAME Chain (即 A CNAME B、B CNAME C、C CNAME D...) 雖然沒有禁止,但會導致效率變差甚至錯誤

MX,Mail eXchanger: 設定區域中擔任郵件伺服器的主機,所有要送往那部機器的 Mail 都要經過 Mail Exchanger 轉送。而數字則是該主機郵件傳遞時的優先次序,此值越低表示有越高的郵件處理優先權

*可使用 A RR 來代替 MX 使用 (ex. @ IN A 61.60.59.58) 但如此僅能使用一部機器來當 Mail Server

7、TWNIC DNS 教育訓練文件

TWNIC 93 年度 DNS 安全研討會


TWNIC 94 年度 DNS 教育訓練課程


DNS 設定檢測


DNS 安全


8、DNS 系統記錄解讀

以下說明為引用 TWNIC 網路安全教育訓練課程內容

Q1.ns_forw: query(mail.vinwell.com.tw.vinwell.com.tw) All possible A RR's lame

 說明這個網域名稱可能有 Lame Server 狀況,也有可能是查詢人之 Resolver 之default-domain 之功能所引起的

Q2./etc/named.conf:53: syntax error near '}'

 語法錯誤,通常是少了 ; 號或忘了 {} 號,可使用 named-checkconf 檢查看看

Q3.unrelated additional info 'Manager.aluba.com.tw' type A from 203.149.224.202.53

 說明從 203.149.224.202 送來了和他無關的資料,通常發生的原因可能是該部 DNS 的一些域名設定有誤,但也有可能是 DNS 欺騙的一種狀況

Q4.bad referral (in-addr.arpa !<88.216.1.in-addr.arpa) from 168.95.192.14.53

 Bad Referral 狀況,可以從訊息中看到 168.95.192.14 (HINET)的反解設為”in-addr.arpa.”,可能原因是其 IP 太多,故如此偷懶,這樣的設定會造成此人往後的一段時間內($TTL) 查詢任何反解資料時都會到此 IP 查

Q5.ns_forw:query(BBS\.NNUT\.EDU\.TW\000.nhu.edu.tw) forwarding loop (dns.nhu.edu.tw:203.72.0.3) learnt (A=140.111.1.2:NS=140.111.1.2)

 查詢 bbs.nnut.edu.tw. 時發現有迴圈狀況,通常是 CNAME 所造成的,同時並記住管理nhu.edu.tw. 的上層主機為 140.111.1.2 (也就是這一次是使用這一部)

Q6.Response from unexpected source (168.95.1.24.53) for query "_ldap._tcp.tmt.gtmt.com.tw IN SOA"

 查詢 _ldap 主機時,意外的從 168 的主機回應答案,其主要原因是 HINET 使用 Layer4 Switch,故回應的 IP 可能不固定所致,但亦有可能是 DNS Spoofing

Q7.Cleaned cache of 1083 Rrsets

 這是 named 清楚 Cache 的 log,表示有 1083 筆 TTL 時間到了

Q8.rcvd NOTIFY(tw, IN, SOA) from 140.111.1.2.45599

 從 140.111.1.2 將到一個轄區變更的通知 (notify)

Q9.Sent NOTIFY for "tw IN SOA 2001021959" (tw);4 NS, 4 A

 同上,但是送出,可見送出時所帶參數,2001  為序號

Q10.sysquery: findns error (SERVFAIL) on pc071.twnic.net.tw?

 這一部 DNS 發生錯誤造成 伺服器失敗,通常的原因是 SOA,NS 或是 Zone file 載入時有錯所造成

Q11.sysquery: query(mail.digi-age.com.tw) NS points to CNAME (lnx5.net-chinese.com.tw:) learnt (CNAME=168.95.192.3:NS=140.111.1.2)

 查詢 mail.digi 時,發現它的 NS RR 接的是一個 CNAME RR,這樣的 NS 是不被承認的

Q12.db_load could not open: /var/named/hosts:No such file or directory

 zone 的設定中指定的 file 位置找不到檔案

Q13.send AXFR query 0 to 168.95.192.9

 這部機器向 168.95.192.9 作一 AXFR 請求,這個請求送的序號為 0 (這是因為手動使用 named-xfer 所產生的訊息)

Q14.slave zone "tw" (IN) loaded (serial 2001021959)

 這部機器完成了”tw” 的 AXFR 請求,並將其載入

Q15.check_hints: no A records for E.ROOT-SERVERS.TW class 1 in hints

 找不到 Root Server 中 E.ROOT 之 Class,也就是 named.ca 中沒有設定 IN

Q16.stream_getlen(140.126.102.30.42873): Connection timed out

 和 140.126.102.30 的連線逾時

Q17.denied update from 140.112.15.188.3633 for "."

 拒絶來自 140.112.15.188 要求動態更新 . 的位置

Q18.xn--abc.tw has multiple CNAMES

 這個名稱 CNAME 多次到不同的名稱(系統預設是 no,若真的要用需 multiple-cname yes )

Q19.Zone "" (file named.ca): No default TTL ($TTL<value>) set, using SOA minimum instead

 named.ca 沒有定TTL 值,使用 SOA 中的 TTL 代替

Q20.a.dns.tw IN A differing ttls: correct

 a.dns.tw 的 TTL 值與上層設定不同,調整之,BIND9 才會有,以下層資料為準

Q21. /var/named/abel.hosts.utf8: WARNING SOA refresh value is less than 2 * retry (2 < 1209600 * 2)

 SOA 中的 refresh 的值小於 retry 值的二倍,建議您可達十倍左右

Q22.sysquery: findns error (NXDOMAIN) on ipopc-16.ipoware.ocm.tw?

 找不到 這個網域名稱 (NXDOMAIN)

Q23.Malformed response from 203.70.159.194.53 (out of data in final pass)

 DNS 回應的封包格式不對

Q24.deleting interface 211.72.211.71.53

 這個網路介面 shutdown 了(bind 預設每小時會檢查 interface 狀況)

Q25.There may be a name server already running on 211.72.211.1.53

 named 巳經在執行中了

Q26.invalid RR type 'NS' in additional section (name = 'auth.com') from 194.74.63.90.53

 194 的回答中,additional section 資訊中的 NS 資料不對,可能有設錯的狀況或 Spoofing

Q27.log_open_stream: open(/var/log/named/dns-statistics.log) failed: Permission denied

 開啟系統記錄檔時,權限不足,需注意 named run-time 時的 uid 和檔案(目錄)權限是否相符

Q28.cannot set resource limit on this system

 無法設定這台機器的系統設定,如最大檔案開啟數,最大行程數...主因通常是權限不足

Q29.db.movie:16: data "hp.com" outside zone "com.tw" (ignored)

 hp.com 這個名稱不屬於 com.tw 這個 zone 之下

Q30. zone “tw” (class 1) SOA serial# (1) rcvd from 211.72.210.250 is < ours (2001062901)

 轄區傳送 ”tw”時發現 211.72.210.250 的序號小於現在的序號, 這會造成不傳的狀況. 每次更改 zone file 時要記得同時至少為 serial 加上 1, 這是一個基本的原則

Q31.Err/TO getting serial# for "edu.tw" secondary zone "edu.tw" expired

slave 無法取得轄區資料,當到達 SOA 的 expire 值時則會產生第二行的訊息內容, 表示 edu.tw 轄區資料巳經過期, 當再遇到有人來查 twnic.edu.tw 時則會產生 SERVFAIL 的系統訊息.會造成這樣的訊息可能的原因可能為:
 1.master 與 slave 間的網路連線有問題
 2.slave 主機所指定的 master ip 有誤
 3.master 沒有開 allow-transfer 或其 zone file 中的語法有誤

Q32.can't change directory to /var/named: No such file or directory

 找不到 /var/named 這個目錄.這通常是因 options 中 directory 所指定的路徑不存在或打錯字

Q33.: master zone "movie.edu" (IN) rejected due to errors (serial 1997010600)

 Zone file 中語法或格式錯誤造成整個 Zone 不用 (BIND8 訊息, BIND9 仍可用,但可能出現 SERVFAIL 狀況)

Q34.socket(SOCK_RAW): Too many open files

 系統開啟的檔案數過多,造成 named 無法再開啟檔案或 socket

Q35.gethostby*.getanswer: asked for "37.103.74.204.in-addr.arpa IN PTR" , got type "CNAME" gethostby*.getanswer: asked for "37.103.74.204.in-addr.arpa", got "37.32/27.103.74.204.in-addr.arpa"

 找 204.74.103.37 的反解時,發現其指到一 CNAME,通常這種狀況較少見,是小於一個 Class C 中常用反解的指定方法,所以其要再問 37.32/27.103.74.204.in-addr.arpa 的結果

Q36.ns_udp checksums NOT turned on: exiting

 OS 中的 udp checksum 功能未打開,DNS 無法運作

Q37.can't fdopen tmpfile (sec_qip/db.135.156.HfeOrP)

 DNS 在做轄區傳送時會在 directory 所指令的目錄下產生一個 temp file,若此時權限不對,即會出現此類訊息

Q38.couldn't create pid file

 無法建立 PID file (process id),權限問題

Q39.setsockopt(REUSEADDR): Operation not supported on socket

 作業系統不支援 setsockopt 中某些參數(REUSEADDR)

Q40.CNAME and other data (invalid)

 一個巳是 CNAME rr 的記錄不能再用於其他記錄

Q41.$GENERATE unknown type: $i.3.2.1.dyn.tw

 GENERATE 的語法錯誤,type 不對或是忘了加了

Q42.host name "t_terrall.dev.oclc.org" (owner "51.240.174.132.in-addr.arpa") IN (primary) is invalid - proceeding anyway

 FQDN 名稱不合法,不能有底線(A-Za-z0-9,-)

Q43.no SOA found for fs.dedip.oclc.org, SOA query got rcode 3, aa 1, ancount 0, aucount 1

 雖是權威主機(aa=1)查無 SOA 記錄 (rcode 3 = NXDOMAIN, an=ANSWER , au=AUTHORITY

Q44.NOTIMP

 未實作 (Not Implemented )

Q45.NSTATS 942153823 941779425 A=86974 NS=2 CNAME=59 SOA=6 MG=5 PTR=17610 HINFO=141 MX=5631 TXT=6 AAAA=138 LOC=2 MAILB=5 ANY=2066

 BIND 8 特有,說明從何時至何時(UTC time) A 記錄查詢了 86974 次…

Q46.ns_resp: query(242.240.112.207.in-addr.arpa) A RR negative cache entry (NS0.NAP.NET:)

 因為負面答案快取,巳知其不存在

Q47.ns_resp: query(200.229.99.195.in-addr.arpa) Bogus LOOPBACK A RR (localhost.geosrv.com:127.0.0.1)

 查詢 NS 記錄時,指向了 127.0.0.1,這個 IP 是有問題的 (Bogus)

Q48.ns_resp: query(www.abc.com) Glue A RR missing (ns1.def.com:)

 www.abc.com 沒有對應的 A 記錄(外部的域名)

Q49.ns_resp: query(155.128/26.218.32.216.in-addr.arpa) No possible A RRs

 沒有對應的 A 記錄(自己的域名)

Q50.ns_resp: TCP truncated: "167.133.200.192.in-addr.arpa" IN PTR from 192.200.128.254.53

 DNS 回應封包太大,改用 tcp 方式查詢 (超過 512 要 truncate 或使用 edns)

Q51."rr.com IN MX" points to a CNAME (mail.rr.com)

 MX/CNAME 不能混用

Q52.sysquery: query(ring.kotel.co.kr) NS points to CNAME (daiduk.kaist.ac.kr:)

 NS/CNAME 不能混用

Q53.206.153.116.21.13172 transfer refused from 206.153.116.8, zone psk.net

 拒絕  206.153.116.8 對 .21 要求 zone transfer (psk.net) 的請求 (allow-transfer 沒有它)

Q54.unapproved AXFR from 132.174.19.16.36285 for "riptor.com"

 同上意,不同的版本字面稍有不同,’unapproved’ 有的版本會改稱 ‘deny’, 而 AXFR 因情況不同,可能是查詢(query),遞迴(recursive),或更新(update)等

9、酷!學園討論區 - DNS 二十問

文章標籤: