2016年2月18日 星期四

DNS query

今天探討的主題,是關於 DNS query 的部分,但可能內容會不太完整。




會探討到這部分的原因是,我們需要對 iptables 進行 domain name 的過濾,但由於 iptables 只允許輸入 IP address,所以在輸入時,iptables 會馬上進行 DNS query 的查詢,這會遇到許多情況:

  1. 網路不通,DNS查詢不到
  2. DNS成功查詢到對應的 IP,但會有許多個 IP 同時進到 iptables rule 中
  3. DNS mapping 到的 IP 可能隨時都會變動,因此如果 IP 有變動到時,iptables 可能不會即時地進行更新。
當然我們也考慮到說使用 string, weburl 等等 match module 進行比對,但其中各有利弊,而且很多是 match 封包內容,而不是直接 match source 或 destination 的部分,更別說是有加密過的 https,這碰到的問題更是雪上加霜。

這邊提供一個指令叫做 nslookup,在 windows 和 Linux 都有這個工具,如果是在板子上使用到 busybox,則應該裡面開啟後也會有。

以下是使用 MAC OSX 的範例圖:
當然,你可能會發現到每次查詢結果都不太相同,這個可以去試看看。

再說說其他關於 Linux 上 DNS 的設定好了,有個檔案叫做 resolv.conf,他會放在 /etc/ 底下,一般的 Ubuntu(Linux) 或板子上應該都會有這個東西,他可以對 DNS 給予一些設定上的參數,例如 DNS Server 的 IP 等等之類的,不過我在 Ubuntu 發現到他說,這個檔案是自己產生的,叫我不要去更改它,而我也還不知道如何去修改產生的部分就是了。
至於板子的部分,可以透過更改這個檔案,去修改 Server IP、給予最大查詢次數限制 和 查詢 TImeout 等等之類的,詳細的內容可以參考下面這個連結:
http://man7.org/linux/man-pages/man5/resolv.conf.5.html

關於 TImeout 和如何修改,Stackoverflow 有人發問,可以參考參考
http://stackoverflow.com/questions/21449510/what-will-timeout-value-specified-in-etc-resolv-conf-do

最後,在修改完,記得可能要重新開啟 DNS 的部分,設定檔才會被設定進去。

沒有留言:

張貼留言