DNS 行為和解析邏輯
域名系統 (DNS) 是網路的基礎,它在後台透明地將人類可讀取的網站名稱轉換為電腦可讀取的 IP 位址。 這些位址 遵循網際網路的 RFC 1918 規範(適用於 IPv4 )及 RFC 4193 規範(適用於 IPv6 )。 簡而言之,DNS 伺服器會將網域名稱(例如 ibm.com )與其對應的 IP 位址進行配對,而大多數人根本不需要知道這些 IP 位址。
為了執行此轉譯,DNS 系統會查詢網際網路上相互連線的 DNS 伺服器網路。 此過程類似於使用電話簿或地圖尋找特定地點。
名稱伺服器
名稱伺服器提供回應目錄查詢的服務,將有意義的文字網頁或主機名稱轉換成 IP 位址。
當網域的名稱伺服器收到子網域名稱記錄的請求時,就會發生名稱伺服器委託,並將請求者轉介到管理子網域名稱的委託名稱伺服器。 此流程允許分散管理大型網域,例如 ibm.com。
透過自訂網域名稱伺服器,您可以使用 DNS 服務供應商的伺服器,並搭配您自己網域的自訂參照名稱。 例如,您可以將您的名稱伺服器定義為 ns1.cloud.ibm.com,而不是提供者預設的 ns1.acme.com。
代理 DNS 記錄和廣域負載平衡器
CIS 支援全域負載平衡器和 DNS 記錄的代理。 當紀錄或負載平衡器被代理時,其流量會直接透過 CIS 執行。
目前,A、AAAA 或 CNAME 類型的 DNS 記錄均可透過代理處理。 如需詳細資訊,請參閱 DNS 記錄類型。
設定 Proxy 模式
負載平衡器和 DNS 記錄支援僅 DNS 和 HTTP 代理模式。 您可以在同一個 CIS 範例中使用 HTTP proxy 和僅 DNS 網域,但流量路由行為有所不同:代理記錄的流量流經 CIS,而非代理(僅 DNS 模式)記錄的流量則直接從用戶端流向來源。
HTTP 代理模式
在 HTTP 代理模式中,CIS 對外公佈 IBM IP 位址,但會保護 (遮罩) 您的原始伺服器 IP 位址。 所發表的 IP 位址記錄具有自動 TTL。 流量流經 CIS,所有的安全性、效能和可靠性功能,例如防火牆規則和快取,都會套用在這裡。 自動」TTL(五分鐘)也減少了針對 CIS 的權威查詢。
僅限 DNS 模式
在唯 DNS 模式下,記錄會解析至原始 IP,您可以自訂記錄的 TTL。 對於全域負載平衡器,CIS 會直接提供健康來源伺服器的位址,但會依賴尊重短 TTL 的 DNS 解析器來重新查詢 CIS DNS,以取得最新的健康位址清單。
在純DNS模式下,CIS 的所有安全性、可靠性及效能功能均不適用。
Root 記錄的 CNAME 壓縮
CIS 中的「CNAME 扁平化」功能可讓根記錄繞過 IETF RFC 限制。 此限制規定,如果根記錄是 CNAME,則該網域不能有任何其他記錄。CIS 授權伺服器可繞過此限制,返回與 CNAME 目標對應的 A records,而不是返回 CNAME 本身,從而有效地隱藏 CNAME。 此技術允許即使根記錄為 CNAME,仍可將其他記錄(例如 MX 記錄)新增至該網域。
安全 DNS
DNSSEC 是一項透過數位「簽名」來驗證 DNS 資料真偽的技術,讓您能確信其有效性。 為了消除網際網路上的安全漏洞,必須在查詢過程的每個步驟(從根區域到最終網域名稱,例如 www.icann.org )中部署 DNSSEC。
批次 DNS 記錄變更
CIS 支援批次 DNS 記錄變更,讓您可以在單一動作中更新多個區域記錄。 此方法可減少手動工作,並簡化網域管理任務,例如遷移、環境設定或自動化工作流程。 雖然 CIS 主控台支援個別變更,但批次作業最好使用 API。
批次 DNS 記錄 API 端點允許您在單一要求中執行多個 DELETES, PATCHES, PUTS,和 POSTS。
/batch 請求正文中包含的作業總是以下列順序處理:
- 刪除
- 修補程式
- 放置
- 貼文
在每個作業類型中,個別記錄變更會依其處理順序套用。 如果任何操作失敗,則不會套用任何變更,API 會返回遇到的第一個錯誤。
批次 DNS 記錄的主要注意事項
在 /batch 請求正文中指定每項作業時,請遵循以下有關必填欄位以及如何處理未指定欄位的指引:
-
Deletes:每個記錄物件只需要id欄位。 您可以加入額外的欄位,例如name以提高清晰度,但其他所有欄位都會被忽略。 -
Patches:除了每筆記錄之外id,指定要更新的欄位。 所有未指定的欄位保持不變。 -
Puts:指定每條記錄的id,content,name,和type。 也可指定要設定為非預設值的任何其他欄位。 任何未指定的欄位都會假設為每個 記錄類型 的預設值。 此操作的作用是覆寫,因此記錄中的所有欄位都會受到影響。 -
Posts:用於建立新記錄。id欄位不是必填欄位。 有關欄位定義,請參閱 建立 DNS 記錄 端點,並從請求體規格中選擇適當的記錄類型。
要求範例
在這個範例中,在 puts 中列出的第一筆記錄的代理欄位會假設預設值 false。
{
"deletes": [
{
"id": "023e105f4ecef8ad9ca31a8372d0c353"
}
],
"patches": [
{
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"comment": "Domain verification record",
"name": "example.com",
"proxied": true,
"settings": {},
"tags": [],
"ttl": 3600,
"content": "198.51.100.4",
"type": "A"
}
],
"posts": [
{
"comment": "Domain verification record",
"name": "example.com",
"proxied": true,
"settings": {},
"tags": [],
"ttl": 3600,
"content": "198.51.100.4",
"type": "A"
}
],
"puts": [
{
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"comment": "Domain verification record",
"name": "example.com",
"proxied": true,
"settings": {},
"tags": [],
"ttl": 3600,
"content": "198.51.100.4",
"type": "A"
}
]
}