閱讀355 返回首頁    go iPhone_iPad_Mac_apple


有關創建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做自己域名的解析的,可能會有此需求。我們以我的域名來做例子:

  1. 域名:codox.cn,域名已經注冊。
  2. 使用的DNS:ns1.codox.cn、ns2.codox.cn,尚未創建。
  3. 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(其實是報備吧)。但如何創建呢?分兩種:

  1. 需要手工創建。對於需要手工創建的,由用codox.cn這個域名的賬號登陸,管理codox.cn這個域名,按上述的“創建hostObject”的方式創建dns,並且用途要用於解析“.net域名”。
  2. 自動創建。對於有些注冊商,你使用的這種交叉注冊局的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

  上一篇:go  移動 H5 首屏秒開優化方案探討
  下一篇:go  使用Oracle logminer 找回delete的數據