Cloud DNS

趙祐廷(Zoe Chao)
Thu, Nov 25, 2020 09:00 AM


Agenda

  • 何謂DNS
  • DNS的原理
  • Cloud DNS介紹
  • 實作驗證

何謂DNS


網域名稱系統

(Domain Name System,DNS)

  • 網際網路的一項服務
  • 功能:把「域名」和「IP位址」相互對應,讓使用者能夠更方便地使用網際網路
  • DNS使用Port:TCP/UDP 53

網域名稱(Domain Name)

  • IP位址的代稱
  • 目的:為了便於記憶IP
  • 具有唯一性

為何會有DNS

  • IP不容易記憶及理解,讓電腦或網路相關設備可註冊容易記憶的名稱
  • 因應Internet資料庫愈來愈龐大的趨勢
  • 解決主機檔案(Hosts)負擔&I/O負載(速度慢)

不知道好像也不會怎樣的冷知識:
世界上第一個域名:nordu.net(http://nordu.net/)(1985年1月1日)
世界上第一個.com的域名:Symbolics Inc 的 symbolics.com(1985年3月15日)


DNS架構:樹狀階層式(hierarchy)

  • 階層性:從root DNS servers一層一層一路往下,而每層域名都是由上一層的域名所管理,同時也只負責管理其下一層的域名(DNS的domains階層無數量限制)

  • 分散性:每層都具有1個單獨負責自己domain zone的DNS Server


DNS架構圖

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

圖片來源:鳥哥的 Linux 私房菜第十九章、主機名稱控制者:DNS伺服器

查詢目前的root name server: https://www.internic.net/domain/named.root


域名層次

  • Root (.)
  • 頂級域(Top-level domains,TLD):
    • 國家和地區頂級域(Country Code Top-level domains,ccTLD)
    • 通用頂級域(general Top-level domains,gTLD)
  • 二級域(Second-level domain,SLD)

完整網域名稱(絕對網域名稱)

(Fully qualified domain name,FQDN)

  • 網域名稱的一種,能指定其在DNS下的一個確實位置
  • 具有唯一性
  • 完整且合乎DNS規則
  • FQDN=Hostname + DNS domain name
    ex:www.google.com. (www=Hostname , google.com.=DNS domain name)

DNS的原理


DNS查詢(DNS Query)

  • 遞迴式查詢(Recursive Queries):內部查詢方式,存在於DNS Client和Local DNS Server之間

  • 反覆式查詢(Iterative Queries):外部查詢方式,存在於Local DNS Server與Root、Top-Level&Second-Level之間


(P.S 此圖的舉例有誤(應該是要查詢 www.mit.edu.tw),但不影響架構)

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

圖片來源:陳祥輝(2010),網路概論,新北:博碩文化,15-14頁

查詢流程(以www.mit.edu.tw為例,可搭配上圖一起參考)

1.使用者於瀏覽器輸入www.mit.edu.tw時,瀏覽器會先看自己的快取是否有紀錄→有的話就直接回傳IP

2.如果瀏覽器快取沒有紀錄,使用者的電腦會再檢查自己本地緩存(本地緩存包含Hosts文件及DNS Cache),看這兩個地方是否有www.mit.edu.tw這FQDN的IP紀錄
→有的話就直接回傳IP

​​​​* Hosts文件:位於C:\Windows\System32\drivers\etc\hosts,不會自動更新,需手動新增或改寫
​​​​* DNS Cache:可於cmd輸入ipconfig /displaydns (顯示 DNS 解析快取的內容),會自動記錄但無法修改

3.如果檢查自身的本地緩存找不到www.mit.edu.tw的IP,使用者電腦就會向Local DNS Server 詢問是否有www.mit.edu.tw的IP,Local DNS Server就會去自己的DNS Cache找看有沒有紀錄
→如果Local DNS Server有的話就會回傳IP,順便存紀錄在使用者電腦的DNS Cache

以上為遞迴查詢(內部查詢) 以上為遞迴查詢(內部查詢) 以上為遞迴查詢(內部查詢)


以下為反覆查詢(外部查詢) 以下為反覆查詢(外部查詢) 以下為反覆查詢(外部查詢)

5.如果連Local DNS Server自己也沒有紀錄,那Local DNS Server就會先去找root DNS Server作以下的事情:

  • 詢問root "你底下的TLD裡面有沒有一個domain叫"tw""
  • root DNS Server就會開始尋找,並確認有找到"tw"這個domain
  • root DNS Server確認有後就會回覆Local DNS Server:我這邊有"tw"這domain
  • Local DNS Server收到後就會前往"tw"這個SLD去詢問

6.Local DNS Server前往"tw"這個domain找到專門管理"tw"的DNS Server,重複一樣的查詢過程,知道tw底下有"edu"這個domain,然後繼續去"edu"詢問

7.Local DNS Server前往"edu"這個domain找到專門管理"edu"的DNS Server,重複一樣的查詢過程,知道edu底下有"mit"這個domain,然後繼續去"mit"詢問

8.Local DNS Server前往"mit"這個domain找到專門管理"mit"的DNS Server,重複一樣的查詢過程,知道mit底下有"www"這台主機,確認有"www.mit.edu.tw"這台主機並拿到IP後,就可以回去把IP回傳給使用者了~

9.要把查到的IP回傳給使用者之前,Local DNS Server會先把www.mit.edu.tw這FQDN與IP先記錄在自身的Cache裡面,再回傳給使用者,使用者拿到IP後,就可以直接連到www.mit.edu.tw了(同時也會把FQDN跟IP紀錄在自身的DNS Cache中)


DNS資源記錄類型

常用的DNS 資源紀錄類型

  • 主機記錄(IPv4)(A)
  • 主機記錄(IPv6)(AAAA)
  • 別名記錄(CNAME)
  • 權威紀錄(SOA)
  • 域名伺服器記錄(NS)
  • 指標紀錄(PTR)

FQDN與IP的轉換:正向(forward)/反向(reverse)查詢

  • 正向查詢:從主機名稱查詢到 IP 的流程,必備的資源記錄類型有:
    • SOA(Start of Authority)
    • NS(NameServer):指定由哪個DNS伺服器解析域名
    • A(Address):記錄IP的對應

  • 反向查詢:從 IP 反解析到主機名稱的流程,必備的資源紀錄類型有:
    • SOA(Start of Authority)
    • NS:指定由哪個DNS伺服器解析域名
    • A(Address):記錄IP的對應
    • PTR(PoinTeR):IP要反解回去的主機名稱
      • PTR規則:if IP = w.x.y.z ,PTR = y.x.w.in-addr.arpa.
        ex:
        IP=192.168.2.10
        PTR=2.168.192.in-addr.arpa.

Cloud DNS介紹


優勢

  • 100% 的可用性和低延遲(官網說的XD)
  • 自動擴展縮減,靈活度高
  • 經濟實惠的價格層級,節省硬體成本

特性

  • 可擴縮性(會根據查詢量自動調整資源配置)
  • 可用性:服務等級協議(SLA)承諾Cloud DNS具有100%的可用性
  • 通過API 和網頁界面進行管理:可用Google Cloud Console或gcloud管理DNS紀錄
  • 專用(私人)區域:內部DNS專用,可防止惡意代理訪問內部訊息
  • DNS轉發(DNS Zone Transfer):解決DNS同步問題(混合雲架構)
  • Cloud Logging:DNS日誌
  • DNS對等互連(DNS Peering)

價格


Cloud DNS介面


點進去「區域名稱」的顯示畫面


DNSSEC

域名系統安全擴充(Domain Name System Security Extensions,DNSSEC)

  • 由網際網路工程任務小組(Internet Engineering Task Force,IETF)在1999年提出、2005年成型的DNS解析技術。(使用了雜湊函式(Hash Function)與公開金鑰加密(Public-key cryptography) )

  • 可達到的安全性目標:完整性(Integrity):

    • 驗證DNS資料來源的正確性
    • 確保資料完整性
    • 驗證不存在性
  • 不提供機密性(Confidentiality) 和可用性(Availability)


  • DNSSEC負面影響:

    • 複雜度高
    • 需要較多的Queries
    • 增加回應訊息的檔案大小

    → 影響DNS查詢效率與流量

◎2020/11/19更正:讀書會報告時說為了查詢效率通常不會開,但在專案上為了DNS安全性,以及專案架在GCP上的話,影響的效率與流量其實不會有太大影響,所以通常都會設定開啟。


區域類型

  • 私人:僅供GCP網路內部人員查看的DNS記錄→外部無法訪問

  • 公開:公開顯示於網際網路→外部可以訪問


實作驗證


  • 目標:註冊域名,使用測試instance(Nginx),以及使用Cloud DNS將Nginx的網域網址可被解析的流程
  • 步驟:
    1.註冊域名
    2.建立測試instance(Nginx)
    3.設定Cloud DNS(私人區域、公開區域)
    4.更新域名服務器
    5.驗證設置(私人區域、公開區域)

註冊域名

Godaddy
Google Domains
Cloud Domains
↑以上都要錢

NO-ip(Free)(如要在上面新增更新ns需要收費,且無法使用免洗信箱申請)

Freenom(Free)(不論用免洗信箱或正式信箱都會被封鎖,如下圖)


建立測試instance(Nginx)


設定 Cloud DNS(私人區域、公開區域)

進到GCP的主控台, 點選 Cloud DNS


選擇「建立區域」


私人區域設定


將查詢轉送到其他伺服器:DNS Zone Transfer
DNS對等互連(Cloud DNS peering)
代管反向查詢區域(設定PTR)
使用Service Directory命名空間


點選「新增紀錄集」


新增A資源紀錄類型
IP:填入Nginx的外部IP(填入時要注意後面是否有空格,如有空格會跳錯誤)
存留時間(TTL)和TTL單位用預設值即可(預設為5分鐘)


新增CNAME(別名)資源紀錄類型


建完的DNS私人區域


公用領域設定


公用領域建好後點選「新增紀錄集」


新增A資源記錄類型,這邊跟私人區域設定相同
(填入instance的IP,TTL跟TTL單位用預設)


建完的DNS公用區域


更新域名服務器

將公開區域的4台NS複製到申請網域的網域伺服器並更新


如果用Godaddy的話可參考畫面及畫面底下連結去新增+更新ns

圖片來源:Godaddy網域指向GCP虛擬機教學

驗證設置(私人區域、公開區域)


私人區域驗證
複製網址到網頁後開啟,無法出現Nginx的預設畫面


使用nslookup驗證私人區域,進入instance裡面可以解析的到IP


於本機cmd測試,不論是zoe.123456還是www.zoe.123456皆無法解析


公用區域驗證
zoe.wz3.bet 或 www.zoe.wz3.bet 這兩個網址皆可連到Nginx預設首頁



於instance上用nslookup測試


於本機上用nslookup測試,zoe.wz3.bet 或 www.zoe.wz3.bet 這兩個網址皆可以解析到


刪除區域

因區域內還有資源紀錄類型,所以無法直接刪掉區域,要先刪掉資源紀錄類型後才能刪掉區域


進入區域後勾選要刪掉的資源紀錄類型,再點擊「刪除紀錄集」


刪除A跟CNAME後,就可將區域刪除


Reference

簡介DNSSEC(Introduction to DNS Security Extensions)
DNS安全防護探討
為達高速查詢犧牲安全性 DNS成為駭客最愛的攻擊標的
DNS伺服器的安全性管理實務(DNS Server Security Management)
Cloud DNS google文件
Cloud DNS google文件-管理區域
Cloud DNS google文件-Cloud DNS概述