天天看點

讓DNS運作在容器中

序言

    秋天這麼快就來了,感冒如風。

    最後一公裡,隻是一種尋找路徑的方式,DNS就是一種尋路。。

在容器中運作DNS

  在這裡主要使用的容器的鏡像是基于bind的,在其中封裝了圖形界面,進而可以在界面上直接進行配置相關的參數。

    1、 使用Dokcerfile來編譯自己的鏡像

讓DNS運作在容器中

    2、 Dockerfile内容

讓DNS運作在容器中

    3、 區域資料檔案,主要用來解析域kel.com

讓DNS運作在容器中

    4、 named的全局配置檔案,主要是來配置acl權限

讓DNS運作在容器中

    5、 測試運作

讓DNS運作在容器中

    在容器中進行測試修改:

讓DNS運作在容器中

    可能出現的報錯:(主要是檢視日志,rndc是遠端管理工具,用來進行加載,生成緩存檔案,)

讓DNS運作在容器中

    在使用rndc的時候,如果出現無法連接配接,可能的原因是rndc未進行配置,也可能是設定了端口的限制;在使用檔案的時候,注意named的程序屬主是named,進而要選擇合适的目錄來存放檔案,否則權限不夠;當顯示無遞歸,查詢權限時,注意檢視acl規則。

漫談DNS

    為什麼要玩玩DNS呢?

    DNS作為最基礎的服務存在于系統之中,而再看DNS的發展曆史,從一個小小的hosts檔案,再到一個集中式下載下傳的hosts檔案,再到一個分布式存儲,也可以看出來是在慢慢的發展,追求高可用,追求高性能。

    DNS最主要的作用就是将IP位址和域名進行解耦,也就是你隻需要使用域名即可,無須關注ip位址,我後端換了ip位址,對于用戶端來說,是無感覺的。

    對于用戶端來說,一般的配置檔案就是在/etc/resolve.conf中,你可能是自己手動配置的,也可能是DHCP擷取到的,也就是一個nameserver了,在這裡就可以進行域名的解析,無論是遞歸的方式還是疊代的方式,而對于一個高可用的NS來說,一般都是配置兩個,而這兩個并不是主從的關系,或許兩個都是主,都是可用的解析的NS。

    DNS最終會發展到什麼樣的形态,其實也就是提供一個api接口,進而可以添加删除修改域,添加删除修改各種A記錄等,能夠動态的重新整理即可了。

    DNS主從,采用AXFR/IXFR進行增量或者全量的資料區域檔案傳輸。

    DNS可以做簡單的負載均衡,主要是為了提供後端的服務,不過權威伺服器不能清除用戶端的緩存值,那麼是否可以認為,這段時間内必然是業務有損的?

    DNS---httpdns---CDN,基本上這種發展路線了。

    其目的主要是為了解決使用者通路的最後一公裡問題,也就是所有的資源都離使用者最近的地方,而對于目前所在的形勢來說,這種還是比較困難的。

    每個營運商,每個資料中心,所建立的DNS伺服器都有自己的緩存,而每次請求了權威伺服器之後,都會将結果進行緩存,而請求的時候,每次出去的ip都是NS的ip,進而并不是使用者的真正的ip,進而,如何精确的定位使用者所在的位置,也是一個非常大的問題。

    對于DNS來說,不知道使用者在哪裡,因為你的NS位址是自己寫的,而對于httpdns來說,就必須要使用dns的用戶端了,然後發送一個http請求過去,而對于http請求,則有使用者具體的ip位址,進而可以大緻判斷使用者所在的位置,進而選擇一個就近的ip位址傳回給使用者。