天天看點

域名過期導緻的問題-研究DNS相關知識

問題描述

域名是通過代理商在阿裡買的,然後域名解析用的騰訊dnspod的收費版

域名過期消息通知都是發到代理商那裡,我們不知道域名過期這事

過期後,阿裡把權威dns改成EXPIRENS3.HICHINA.COM/EXPIRENS4.HICHINA.COM。

于是域名解析有問題了,但這個問題因為dns緩存機制,延遲了1整天才被發現。

續費後,權威dns修改正常,同樣因為dns緩存機制,有48小時的緩存時間,是以有很多地方請求還是有問題

有一部分機器請求阿裡的那個權威dns,一部分請求騰訊的權威dns,而請求阿裡那部分失敗。

問題解決

中間經曆了各種嘗試就不細說了,最後

在阿裡上也修改二級域名記錄,修改後,不管是請求哪個權威dns,結果都是對的

原因可能是:

阿裡過期dns對不過期的域名也做了域名解析
阿裡雲對頂級域伺服器來說是有可控的寫入權的銷售商
           

問題雖然解決,但以前對dns了解很淺,得把這個問題徹底搞明白

以後再遇到dns的其他問題,就能做到心中有數了

相關定義

權威DNS:

權威DNS是經過上一級授權對域名進行解析的伺服器,同時它可以把解析授權轉授給其他人,如:
  COM頂級伺服器可以授權dns.com這個域名的的權威伺服器為NS.ABC.COM
  同時NS.ABC.COM還可以把授權轉授給NS.DDD.COM
  這樣NS.DDD.COM就成了ABC.COM實際上的權威伺服器了
平時我們解析域名的結果都源自權威DNS。比如:
  dns.com的權威DNS伺服器就是帝恩思的ns1.dns.com ns2.dns.com
  ali雲的權威DNS伺服器是:
      DNS9.HICHINA.COM
      DNS10.HICHINA.COM
  dnspod權威dns:
      NS3.DNSV3.COM
      NS3.DNSV3.COM
           

遞歸DNS:

負責接受使用者對任意域名查詢,并傳回結果給使用者。遞歸DNS可以緩存結果以避免重複向上查詢。
平時使用最多的就是這類DNS,對公衆開放服務,一般由網絡營運商提供,自己可以架遞歸DNS提供服務
遞歸DNS一定要有可靠的網際網路連接配接方可使用。比如:
  谷歌的8.8.8.8和8.8.4.4
  114的114.114.114.114和114.114.115.115都屬于這一類DNS
你本地電腦上設定的DNS就是這類DNS
           

轉發DNS:

負責接受使用者查詢,并傳回結果給使用者。
但此結果不是按标準域名解析過程得到的,而是直接把遞歸DNS的結果轉發給使用者。它也具備緩存功能。
他主要使用在沒有直接的網際網路連接配接,但可以連接配接到一個遞歸DNS那裡,這時使用轉發DNS就比較合适。
其缺陷是:
  直接受遞歸DNS的影響,服務品質較差。
如路由器裡面的DNS就是這一類,用路由器的朋友可以看下本地電腦的DNS一般都是192.168.1.1
           

域名解析過程

使用者—本地遞歸伺服器—根權威伺服器—COM權威伺服器—xxorg.com權威伺服器—使用者

對頂級域伺服器來說銷售商有可控的寫入權。

遞歸伺服器怎麼知道根權威伺服器的位址?

很簡單,在遞歸伺服器上都儲存有一份根伺服器的位址清單。最新的根伺服器位址清單在這裡可以得到:
ftp://ftp.internic.net/domain/named.root
           

遞歸伺服器每次查詢域名都要向根那裡找權威伺服器嗎?

不是的,一旦成功一次,遞歸伺服器就會把權威伺服器清單緩存下來
如COM頂級伺服器清單可以緩存48小時
           

操作步驟:

1、在浏覽器中輸入www.qq.com 域名,作業系統會先檢查自己本地的hosts檔案是否有這個網址映射關系,如果有,就先調用這個IP位址映射,完成域名解析。
2、如果hosts裡沒有這個域名的映射,則查找本地DNS解析器緩存,是否有這個網址映射關系,如果有,直接傳回,完成域名解析。
3、如果hosts與本地DNS解析器緩存都沒有相應的網址映射關系,首先會找TCP/ip參數中設定的首選DNS伺服器,在此我們叫它本地DNS伺服器,此伺服器收到查詢時,如果要查詢的域名,包含在本地配置區域資源中,則傳回解析結果給客戶機,完成域名解析,此解析具有權威性。
4、如果要查詢的域名,不由本地DNS伺服器區域解析,但該伺服器已緩存了此網址映射關系,則調用這個IP位址映射,完成域名解析,此解析不具有權威性。
5、如果本地DNS伺服器本地區域檔案與緩存解析都失效,則根據本地DNS伺服器的設定(是否設定轉發器)進行查詢,如果未用轉發模式,本地DNS就把請求發至13台根DNS,根DNS伺服器收到請求後會判斷這個域名(.com)是誰來授權管理,并會傳回一個負責該頂級域名伺服器的一個IP。本地DNS伺服器收到IP資訊後,将會聯系負責.com域的這台伺服器。這台負責.com域的伺服器收到請求後,如果自己無法解析,它就會找一個管理.com域的下一級DNS伺服器位址(http://qq.com)給本地DNS伺服器。當本地DNS伺服器收到這個位址後,就會找http://qq.com域伺服器,重複上面的動作,進行查詢,直至找到www.qq.com主機。
6、如果用的是轉發模式,此DNS伺服器就會把請求轉發至上一級DNS伺服器,由上一級伺服器進行解析,上一級伺服器如果不能解析,或找根DNS或把轉請求轉至上上級,以此循環。不管是本地DNS伺服器用是是轉發,還是根提示,最後都是把結果傳回給本地DNS伺服器,由此DNS伺服器再傳回給客戶機。https://www.nslookuptool.com 可以查詢在進行DNS修改後,域名被各個地區的域名伺服器收錄的情況,以及目前收錄的域名對應的ip位址。
           
域名過期導緻的問題-研究DNS相關知識

一些資訊

13台根DNS伺服器在全球的放置:

美國VeriSign公司 2台
美國PSINet公司 1台
美國ISI(Information Sciences Institute) 1台
美國ISC(Internet Software Consortium) 1台
美國馬裡蘭大學(University of Maryland) 1台
美國太空總署(NASA) 1台
美國國防部 1台
美國陸軍研究所 1台
挪威NORDUnet 1台
日本WIDE(Widely Integrated Distributed Environments)研究計劃 1台
網絡管理組織IANA(Internet Assigned Number Authority) 1台
歐洲網絡管理組織RIPE-NCC(Resource IP Europeens Network Coordination Centre) 1台
           

CANN在中國大陸授權的10家國際域名注冊商:

ChinaSource Internet Service Co., Ltd.(中資源)
ename Co.,Ltd.(易名中國)
35 Technology Co., Ltd.(三五科技)
Beijing Innovative Linkage Technology Ltd.(新網互聯)
Bizcn.com, Inc.(商務中國)
HiChina Web Solutions (Hong Kong) Limited(萬網)
Inter China Network Software (Beijing) Co., Ltd.(3721)
OnlineNIC, Inc.(廈門精通,即中國頻道)
Todaynic.com, Inc.(時代互聯)
Xin Net Technology Corporation(新網)
           

dig指令的使用

$ dig +trace blog.zhaoweiguo.com:

; <<>> DiG 9.10.3-P4-Debian <<>> +trace blog.zhaoweiguo.com
;; global options: +cmd
.     172206  IN  NS  m.root-servers.net.
.     172206  IN  NS  b.root-servers.net.
.     172206  IN  NS  c.root-servers.net.
.     172206  IN  NS  d.root-servers.net.
.     172206  IN  NS  e.root-servers.net.
.     172206  IN  NS  f.root-servers.net.
.     172206  IN  NS  g.root-servers.net.
.     172206  IN  NS  h.root-servers.net.
.     172206  IN  NS  i.root-servers.net.
.     172206  IN  NS  j.root-servers.net.
.     172206  IN  NS  a.root-servers.net.
.     172206  IN  NS  k.root-servers.net.
.     172206  IN  NS  l.root-servers.net.
.     172206  IN  RRSIG NS 8 0 518400 20190323050000 20190310040000 16749 . TgmuL0MjWMidemDVGJC+v5G2BsE33xO5rayFm8qYfOLlNh8kiM9MtLsD Xicpzchrt3/OI+mOh2t/UyQJ4njI1PTP3MXwkUIgVHEx8rF5vYJKrMyP E4Mohd8XZ2nClb6qyvWk+dIYwE14aPpIonkU7L2wE4uxiGCl6lW9Q0GL j8UDyi4D7UkEHJ8qVebWzYDSeuhv+kWRHJqY7M1/MY/HezA1h6qNyw08 FmRGpf+/xT8bahzIQ1wY9yQwOmBjFhB6KZIxehsB/1HEHP44QuCQRz3R gI4IHwuDW+vw9wOvhM4lqLukONqQ7p3/xHFGlgKyYA+EboF/0QgPaXtF 7ri06w==
;; Received 525 bytes from 8.8.4.4#53(8.8.4.4) in 33 ms

說明:
  從本地遞歸dns(8.8.4.4)取出13台全球根域名伺服器的位址
  繼續向這13台全球根域名伺服器請求.com頂級域名伺服器位址,以最先回複的為準
           
com.      172800  IN  NS  a.gtld-servers.net.
com.      172800  IN  NS  b.gtld-servers.net.
com.      172800  IN  NS  c.gtld-servers.net.
com.      172800  IN  NS  d.gtld-servers.net.
com.      172800  IN  NS  e.gtld-servers.net.
com.      172800  IN  NS  f.gtld-servers.net.
com.      172800  IN  NS  g.gtld-servers.net.
com.      172800  IN  NS  h.gtld-servers.net.
com.      172800  IN  NS  i.gtld-servers.net.
com.      172800  IN  NS  j.gtld-servers.net.
com.      172800  IN  NS  k.gtld-servers.net.
com.      172800  IN  NS  l.gtld-servers.net.
com.      172800  IN  NS  m.gtld-servers.net.
com.      86400 IN  DS  30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.      86400 IN  RRSIG DS 8 1 86400 20190324050000 20190311040000 16749 . qNqvX6qD9q7IJMn09ue59cubovzfECVYmWPmNUdHtDEiaBIjNFP8oaA7 pT4B/JA43tQTsPF1B9wC/zivN63n7xv4fNpdY2rXXgGsZX9ycme22kKt dZ/kV6rpiMoSCvZ8qmUlWWKkiq3aXYCYVznWoA9s3xM8oFUNG839N1ke OWiYQlGZn8LoETkUiPG4qCsARNdb/DMrj0BOywzYhO00lc/DnyHvgbT5 l7Dzi+Abxs2jZohrz270A19Sed9l2xulBq+6Y4ryxFYhr6hk6pZ0PqgJ tnMDI05n2mMls0xmpE61u/V2mJxSGAcb3s6UTAlXIPENnx23q4YeLgy/ zh058A==
;; Received 1179 bytes from 192.58.128.30#53(j.root-servers.net) in 308 ms

說明:
  最先回複的根域名伺服器是j.root-servers.net(192.58.128.30)
  傳回13台.com頂級域名伺服器的域名和位址,繼續向這些.com頂級域名伺服器請求
  查詢zhaoweiguo.com二級域名伺服器位址

zhaoweiguo.com.   172800  IN  NS  dns9.hichina.com.
zhaoweiguo.com.   172800  IN  NS  dns10.hichina.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A  NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20190316044521 20190309043521 16883 com. DHkCBLG4YbAgDR7yj/Qu+LD/prXqR7NdPThP3mqis2aQcYw2WC6Y5Baq fCdYF1c1bgT9oBe/SusdZgqT56CzrXoF+G1MwRIrMdHCUHvR6BU28GCw 2rJJ9wcmrri2+mWHA0W1qBpt8bm0K3/V2FmLDtit0bJyUyZkfQ8BtRBB hZ8=
KOHGII341DQ77IRB2UN8I8B4L5DQADV9.com. 86400 IN NSEC3 1 1 0 - KOHGO5POINBII7KFF2Q6VC4IKISTH7NC  NS DS RRSIG
KOHGII341DQ77IRB2UN8I8B4L5DQADV9.com. 86400 IN RRSIG NSEC3 8 2 86400 20190318045050 20190311034050 16883 com. gHTSd9Z23gcTTVjl8dLYUBhGXZrMXITQd0q1JwJd+copTe6F+gcIG8DX LhiGiGO2XQtbovo6Lfe9QWtLj3yBa6apIQ2XSab+VpJugPASNDu/8zKX 2v4sPVqvm1kjcIMX6nPwcQVVyAFcVu5uKTH+344QWf8lbpBmCwfNk2TW /0Y=
;; Received 892 bytes from 192.43.172.30#53(i.gtld-servers.net) in 267 ms

說明:
  最先回複的.com頂級域名伺服器是i.gtld-servers.net(192.42.93.30)
  (gtld是global top level domain的縮寫)
  傳回2台zhaoweiguo.com二級域名伺服器的域名和位址
  繼續向這2個結果請求查詢blog.zhaoweiguo.com三級域名伺服器

blog.zhaoweiguo.com.  600 IN  CNAME zhaoweiguo.github.io.
;; Received 82 bytes from 106.11.141.116#53(dns10.hichina.com) in 43 ms

說明:
  最先回複的zhaoweiguo.com二級域名伺服器是dns10.hichina.com(106.11.141.116)
  傳回1個A記錄,其中A記錄就是最終的解析位址
注意:
  如果阿裡域名用dnspod解析,會多出2條NS記錄
  blog.zhaoweiguo.com.  600 IN  A 115.29.97.185
  zhaoweiguo.com.    86400 IN  NS  f1g1ns1.dnspod.net.
  zhaoweiguo.com.    86400 IN  NS  f1g1ns2.dnspod.net.
           

小結

從整體對DNS有了大概的了解,很細節的東西還不是很清楚,需要自己手動搭建一個DNS服務實踐一下

從現在的了解的情況來看,有幾個時間:

  1. 域名解析時的TTL:遞歸DNS緩存過期時間:
    大多設定為10分鐘
    域名請求遞歸DNS時,會直接從緩存中取資料,資料過期後,可能會:           
    1. 直接請求頂級DNS,取得權威DNS,再請求二級權威DNS得到ip
    2. a請求逾時,請求根DNS,再依次取得頂級DNS,二級權威DNS得到ip
  2. 頂級DNS更新權威DNS時間:
    這個大多是48小時内,最高可達72小時
    這也是我們遇到這個問題的根源所在
               

一些實用網站

https://www.nslookuptool.com https://www.17ce.com

參考資料

https://www.dns.com/supports/681.html https://www.jianshu.com/p/babca8224e60

繼續閱讀