有關創建DNS服務器
摘要
今天有個兄弟公司谘詢我有關遷移DNS的技術相關的事情,了解如何做準備,如何能穩妥的把DNS由第三方服務商遷移到自建的DNS上。最近可能一是由於大公司對DNS解析安全越來越重視,或者最近DNS攻擊越來越嚴重,可能覺得自己維護DNS解析更有底氣。但遷移DNS這件事,有時候會比較複雜,並且容易出錯(更多的是不平滑,在遷移過程中網站訪問有時好有時壞、有的地區好有的地區不好)。
由於域名解析是個從上到下的過程(DNS係統可以說是全球最龐大、最基礎的“雲”服務),不但要了解如何搭建DNS,還要和注冊商打交交道,以及碰到問題時如何排查。尤其是當自己使用的ns名稱不存在時,可能要創建NS的名字。
名詞解釋
通用的來講DNS就是解析,但在DNS行業內,要用更細化的名字。在這裏我解釋的可能不太準確,但目的是用大家能理解的詞簡單解釋一下,更細的請參閱技術書籍或手冊:
注冊局/域名注冊管理機構
每個域名的tld由一家注冊局來負責運營,如.com類域名由Verisign負責,.cn域名由CNNIC負責。注冊局接收注冊商的請求來管理domain、contact和host
注冊商/域名注冊服務機構
接收最終用戶的請求,並向注冊局注冊和管理域名。我們注冊域名,一直是向注冊商注冊,注冊商有係統與注冊局通信。
頂級域
域名是由右向左以“.”分割的符號,越往右級別越高。一個頂級域有相應的注冊局來運營和管理。如cn就是一個頂級域。
後綴
一個頂級域,可能有多個域名後綴,一個域名後綴+一個個性字符,就能組成一個域名。如cn、com.cn、net.cn均是域名後綴。
域名
一組字符+域名後綴,組成一個域名。如codox.cn、codox.net、foo.com.cn、bar.org.cn等。
主機記錄
域名之後,可以創建多個解析記錄,可用於web站點等,如journal.codox.cn。又叫完全限定名(fully qualified domain name,FQDN)
hostObject/dns記錄
域名(主域名,不是指主機記錄)使用的NS,如codox.cn使用的是dns7.hichina.com和dns8.hichina.com
使用場景
對於有可能涉及到以下幾種:
- 偽自建:不走尋常路,自己用的域名後綴比較奇特,注冊後修改DNS為第三方/或以前的自建的解析服務器時時,報“DNS服務器不合法”之類錯誤
- 自建DNS,NS服務解析自己的域名:如自己的域名為codox.cn,使用的DNS為ns1.codox.cn/ns2.codox.cn
- 自建DNS,但有多個不同後綴的域名,使用同一組DNS
偽自建
有時候會碰到客戶申請了域名foo.site域名做個人網站,使用第三方解析,如ns1.myns.com/ns2.myns.com。但在注冊商處修改foo.site的DNS為ns1.myns.com/ns2.myns.com時報錯,提示“DNS不合法”、"DNS不存在"之類的。com後綴的域名使用這組DNS沒事,site域名就不行?為什麼呢?
域名在使用某個DNS時,必須要通過注冊商在注冊局注冊、必須要通過注冊商在注冊局注冊、必須要通過注冊商在注冊局注冊。如foo.site域名要使用ns1.myns.com這個DNS,必須要有注冊商在**site注冊局**注冊一下ns1.myns.com這個DNS(注冊時隻需要填寫這個ns1.myns.com名字即可,不需要額外信息)。隻要有一個注冊商在site注冊局注冊過後,以後任何***.site域名均可以使用ns1.myns.com這個ns了。你懂的,ns2.myns.com類似。
有的同學可能發現,這個ns(.com)的後綴和用這個ns的域名的後綴(.site)不同,這類情況在注冊ns時不需要填寫ns對應的服務器的ip,純報備,所以部分注冊商對這個流程進行了優化:*當有人用這種跨後綴的ns時,如果域名所有的注冊局不存在,就注冊一下。*
當然,為什麼要注冊,要走這個流程?反正ns1.myns.com這個NS也不會寫入site的頂級域DNS係統,為何多此一舉?我也覺得煩瑣,多此一舉,但這是域名注冊係統的標準(EPP)規定的。
自建DNS
有的大公司,或有技術追求想自己搭建dns做自己域名的解析的,可能會有此需求。我們以我的域名來做例子:
- 域名:codox.cn,域名已經注冊。
- 使用的DNS:ns1.codox.cn、ns2.codox.cn,尚未創建。
- DNS服務器2台,ip分別為:1.1.1.1、2.2.2.2。服務器已經購買。
創建hostObject
這是第一步:要向cn注冊局注冊ns1.codox.cn和ns2.codox.cn這兩個DNS,並創建dns對應的ip。
如何創建?每家注冊商的操作方式不同,以阿裏雲和godaddy為例子說明:
在阿裏雲創建hostObject
在阿裏雲創建hostObject,叫“域名服務器注冊”。位置:登陸控製台後,在左側點擊“域名”打開域名列表,點擊codox.cn域名後麵的“管理”打開域名控製台(就是打開管理解析記錄的那兒後,點擊頁麵上方導航欄的“基本管理”)。在域名控製台,點擊左側的“DNS修改/創建”,右側會看到有個“域名服務器注冊/修改”的按鈕,點進去後就有注冊的位置了。以我的例子,要選擇“解析國內英文域名”
在godaddy創建hostObject
在godaddy(中文界麵)叫“創建主機名”,在控製麵板點擊域名進行域名詳情的“設置”標簽,下麵有個“主機名”欄目,點擊“管理”可看到已添加的hostObject,當然也可以創建。
修改DNS
兵分兩路,創建dns的同時,可能要同步搭建dns服務器上的解析服務器軟件,如bind。此處blabla相信老司機很熟悉了。
創建後,除了要添加www.codox.cn.、jounal.codox.cn.等解析記錄外,**一定要記得添加下麵的幾條記錄,否則域名會不正常**
codox.cn. IN NS ns1.codox.cn.
codox.cn. IN NS ns2.codox.cn.
ns1.codox.cn. IN A 1.1.1.1
ns2.codox.cn. IN A 2.2.2.2
添加完後,運行以下命令看這正常不:
dig codox.cn NS @1.1.1.1
dig codox.cn NS @2.2.2.2
dig ns1.codox.cn @1.1.1.1
dig ns2.codox.cn @1.1.1.1
dig ns1.codox.cn @2.2.2.2
dig ns2.codox.cn @2.2.2.2
dig othe.your.record.codox.cn @1.1.1.1
以上檢查確認沒問題後,就可以在注冊商處修改域名的NS記錄為ns1.codox.cn和ns2.codox.cn了。
注意:**修改後,原來的dns服務器上的解析記錄在48小時內不要刪除,並且保持上麵的解析記錄正確。**
自建DNS-共用
如果上麵codox.cn使用了ns1/2.codox.cn這組dns後,我又注冊了個codox.net域名,也要同樣使用ns1/2.codox.cn,怎麼辦呢?要在.net注冊局創建hostObject,因為隻要我用了這組dns,別人的net域名肯定沒用過,也肯定沒人幫我創建過。所以我的codox.net域名使用這組dns,就要在.net的注冊局創建這組dns(其實是報備吧)。但如何創建呢?分兩種:
- 需要手工創建。對於需要手工創建的,由用codox.cn這個域名的賬號登陸,管理codox.cn這個域名,按上述的“創建hostObject”的方式創建dns,並且用途要用於解析“.net域名”。
- 自動創建。對於有些注冊商,你使用的這種交叉注冊局的ns,如果在.net注冊局不存在ns1.codox.cn,會自動創建。如godaddy。
其它問題
- 一個域名可以使用幾個NS? 最多可以寫13個ns,如google.com就用了13個ns名字。
- 一個ns可以使用多個ip嗎? 可以,最多可以使用13個IP。並且可以添加ipv6地址。
- 我的自建dns工作正常,使用這個dns的域名的網站也能訪問,但dig mydomain.com ns時,就是不返回ns記錄,為什麼? 你的域名在注冊局的dns中,把域名正常授權給了您的自建dns。但你的自建dns中,mydomain.com NS記錄沒寫。在dig或nslookup時,當從頂級域的dns中獲取到mydomain.com NS ns*.mydomain.com後,仍會去ns*.mydomain.com上查詢一次mydomain.com的NS記錄,如果沒寫就返回空了。但一般www.mydomain.com的主機記錄能正常使用,網站能正常訪問。
- 什麼樣的hostObject注冊時需要填寫ip,什麼樣的不需要? 當dns名字的後綴,和將要使用這個ns的域名-的後綴,兩個後綴歸同一家注冊局時,就必須要填寫ip,且要這個域名的持有人才能注冊。否則就不需要填寫ip,任何注冊商都可以。
最後更新:2017-08-17 13:32:23