把 DNS 設定從 AWS Route 53 搬到 Google Cloud DNS 上 -

手邊有一個專案,需要把原本在 AWS Route 53 上的設定搬到 Google Cloud DNS 上。

原本以為只是單純的搬移,但中間碰了不少壁,所以寫起來記錄。

處理的域名馬賽克為 example.com 方便記錄。

首先是比對 AWS Route 53 上的設定,和現有的自架 DNS 設定值。

發現 AWS Route 53 上有不少過時的設定值,所以調整了一下,讓 AWS Route 53 的 A CNAME 都和自架 DNS 上的記錄相同。

 

接下來是把設定值匯入 Google Cloud DNS 上。

在 Google Cloud 開一個新的專用的 Cloud DNS 專案方便控管,並啟用該專案的 Cloud DNS API。

點「建立可用區」建立一個新的 zone ,要注意的是區域名稱只能是小寫,而且不能有空格。倒是可以有 - (dash) 。DNS 名稱直接輸入要遷移的網域。

按下建立之後,就會自動產生它的 SOA 和 NS 。這兩組的值是 Google Cloud DNS 用的,所以要匯入現有的 BIND zone 檔案時,要記得清掉原本的 SOA 和 NS 設定。

此外還得把 BIND zone 檔案處理一下:tab 換成 space ,確認檔案是 UTF-8 格式存檔;檔名可以不用是 .zone 結尾,但在下指令的時候要指定它是 BIND zone 。

處理好了之後,在本機端把設定檔用 gcloud CLI 匯入:

  
gcloud dns record-sets import example.com.zone \
--zone="example-com" \
--zone-file-format \
--delete-all-existing \
--quiet

完成以後到 Google Cloud Console 檢查一下設定。原本處理好的 BIND zone 檔案上 git 備用。

 

當然這麼簡單就不用記下來了,後面才是撞牆的部份。

測試了一下設定有沒有生效:

  
# Cloudflare
dig @1.1.1.1 api.example.com

# Google Public DNS
dig @8.8.8.8 api.example.com

# Google Cloud DNS 給的 NS 設定
dig @ooo.ooo.mmm.ooo api.example.com

看起來沒什麼問題,等了一會兒以後用 whois 看看會發生什麼事。

果然就出事了。😅

 

研究了一下,除了原本的 AWS Route 53 設定外,前人還另外架了好幾台 DNS 伺服器。

同事提醒說還有防火牆要處理,於是 ssh 進去看了看防火牆。

照著前人留下的筆記看不出端倪,於是請了工作好朋友 ChatGPT 和 Gemini 來幫忙通靈 🤖⚡️

在防火牆某個設定裡找到內網還有兩台 DNS 伺服器,再 ssh 進去內網的伺服器。

找到設定檔,在 pass 給外網的 DNS 處理之前,先加上這段攔截掉:

  forward-zone: 
    name: "example.com" 
    forward-addr: ooo.ooo.mmm.ooo # GCP Cloud DNS 第 1 台反查 IP
    forward-addr: ooo.ooo.nnn.ooo # 第 2 台
    forward-addr: ooo.ooo.ppp.ooo # 第 3 台
    forward-addr: ooo.ooo.qqq.ooo # 第 4 台

都設定好了以後,研究了一下 DNSSEC 是什麼,然後把它在 Google Cloud DNS 上設定為開啟;點右上角的註冊商設定,把公開金鑰依照格式貼到網域供應商 Gandi 對應的格子裡,選擇對應的格式,接下來就是等生效。之後應該會在建立可用區時就順便開啟及處理它。


arrow
arrow
    創作者介紹
    創作者 repeat ❤️ 的頭像
    repeat ❤️

    旅行的記憶

    repeat ❤️ 發表在 痞客邦 留言(0) 人氣()