
DNS 和網段規劃是基礎建設的門牌號碼。搞錯了,後面的 TLS、監控、告警全部變成在黑暗中修水管。
先講結論
基礎建設的第一步不是開機器,是「定位」:服務入口在哪、名稱怎麼解析、流量怎麼走。沒有這層,你的 infra 就是一堆各自為政的 IP 位址。
網段規劃:先畫地盤再蓋房子
你有沒有遇過加新服務時發現 IP 撞了?或是 staging 跟 prod 的機器不小心互通?這些都是沒有先規劃網段的後果。
CIDR 分區的重點就三個:公網放 LB 和 Bastion、私網放 App 和 DB、管理網段放監控和 CI。
VPC:10.0.0.0/16
Public:10.0.0.0/20 → LB、NAT、Bastion
Private:10.0.16.0/20 → App、DB
Mgmt:10.0.32.0/24 → 監控、備份、CI
為什麼用 CIDR 而不是用文字描述?因為 Terraform、安全群組、防火牆規則都吃 CIDR。你寫一段文字說「這台是給 API 用的」,工具看不懂。
DNS 不只是「查 IP」,是入口治理
很多人把 DNS 當成「設定完就忘記」的東西。但 DNS 記錄本身就是一份活的基礎設施文件。
A record 指向 IPv4、CNAME 做別名、TXT 做驗證——這些你都知道。但真正會出事的是 TTL。
遷移前把 TTL 從 3600 降到 300,這樣切換後最多等 5 分鐘。忘了降?恭喜,你的回退時間就是 1 小時。我見過有人遷移完才想到 TTL 還是一天,整個團隊在那邊乾等。
命名規範:你以為是美學,其實是管理
api.prod.example.com、web.staging.example.com —— 好的命名讓你看一眼就知道環境和用途。
拜託不要用人名命名主機。某天那個人離職了,沒有人知道 kevin-server 上面跑什麼。也不要用隨機縮寫,三個月後你自己也忘了 svr-xk7 是幹嘛的。
Split-Horizon:同一個名字,內外不同路
外部使用者打 api.example.com 走 CDN / WAF;內部服務打同一個網域走私網 LB。這就是 Split-Horizon DNS。
好處?服務之間可以用同一個 domain name 溝通,不用在 code 裡硬寫內網 IP。壞處?設定搞混的話 debug 會讓你懷疑人生,因為同一個名字在不同地方解析到不同的 IP。
DNS 除錯:不要只看控制台
# 最基本的解析查詢
dig api.example.com +short
# 指定 DNS server(繞過本地快取)
dig @8.8.8.8 api.example.com
# 查 TTL
dig api.example.com | grep -A1 'ANSWER'
# Windows 的話
nslookup api.example.com 1.1.1.1我的經驗是,問題通常不在 DNS 設定本身,而是快取。你改了 record 但怎麼打都是舊 IP?先確認 TTL 有沒有降,再確認你查的是哪台 DNS server。
遷移心法:TTL 是你的回退速度
- 遷移前 48 小時降 TTL 到 300
- 新舊入口並行
- 切換 DNS,觀察錯誤率
- 保留舊入口至少 7 天
急著把舊入口關掉的人,通常都是半夜被叫起來開回來的人。
DNS 就像地址。你可以蓋很漂亮的房子,但如果地址寫錯,外送永遠到不了。