本文主要介紹企業在混合云網絡場景下,如何通過PrivateZone實現內網DNS記錄的配置,并同步至自建DNS。
業務場景
自建IDC與阿里云VPC通過專線或者VPN進行網絡連通。部署在自建IDC和阿里云VPC內的業務均需要通過DNS查詢進行業務間調用。因此需要在自建IDC和阿里云VPC共享DNS解析數據,以實現業務間能實時調用。
實現難點
自建IDC和阿里云VPC分別屬于兩套網絡環境。在自建IDC中,客戶往往已經使用bind9等開源軟件搭建了自身的DNS服務;在阿里云VPC內部,客戶會使用PrivateZone服務作為內網DNS解析服務。
自建IDC和PrivateZone的數據共享是混合云內網DNS中的一大痛點。分別管理兩套數據不僅給運維工程師帶來重復新工作的增加,同時也數據一致性管理的風險。給業務帶來不確定性。
本文介紹一種自動DNS同步解決方案,可以自動將客戶在PrivateZone控制臺配置的解析記錄同步至自建IDC服務器上,并生成標準Zone文件,bind9可以加載生效。
解決方案
解析記錄管理:解析記錄管理通過阿里云PrivateZone控制臺完成,PrivateZone提供Web控制臺UI,管理DNS解析記錄十分方便;
解析記錄同步:在此我們提供一款輕量級的DNS記錄同步工具,通過阿里云賬號AK,自動讀取PrivateZone的解析記錄,并在本地生成Zone文件,點擊下載工具,下載后解壓縮。
解析記錄加載:自建IDC內部DNS軟件bind9加載生成的Zone文件。
解析生效測試:使用dig或者ping命令驗證是否生效。
詳細配置
這里以example.com為例,進行說明。
工具配置介紹:
工具有兩部分組成,同步程序Zone_file_sync
和配置文件config.json
。
config.json
的配置格式:
{
"accessKeyId": "LCAIF4bcGHrU****",
"accessKeySecret": "KT4eXSgppowkkPZ5AgSbxNMBHl****",
"zone": [
{
"zoneName": "example.com",
"zoneId": "298cc343c4387b0745e9b5e24fdej624",
"filePath": "/var/named/example.com.zone"
}
]
}
其中:
accessKeyId
與accessKeySecret
為阿里云賬號AK;zoneName
與zoneId
為PrivateZone控制臺顯示的Zone名稱和Zoneid,請替換為自己的配置;filePath
為工具生成的Zone文件在自建IDC的DNS服務器上存放的目錄,建議為您的bind9的Zone文件存放目錄;Zone
內部是JSON列表,可以配置多個需要同步的Zone,最多一次同步10個Zone;
bind9配置介紹
bind9的
named.conf
配置:在named.conf
文件中,example.com
的配置如下:zone "example.com" IN { type master; file "example.com.zone"; allow-update { 127.0.0.1; }; };
自動同步配置
在準備好同步工具和bind9后,按照如下命令的順序,進行執行,同步最新的PrivateZone記錄。(這里需要將命令替換為具體實際執行的命令。)
執行更新鎖定:
/usr/sbin/rndc freeze host.local
;執行同步記錄:
./Zone_file_sync -c config.json
;執行bind9數據加載:
/usr/sbin/rndc thaw host.local
;
以上命令,您可以寫成 Shell 腳本,并使用Linux服務器的crontab功能進行定時執行,以實現自動同步PrivateZone的記錄更新功能。
生效測試
使用如下命令進行測試:dig @localhost 域名
;
總結:
本文介紹了一種使用自動同步工具的方式,將PrivateZone的解析記錄同步至本地自建IDC內部DNS服務器的方式。方便運維工程師搭建混合云DNS解析方案,有效的降低了混合云場景下DNS配置的復雜度,同時能夠避免專線或者VPN的故障對自建IDC內部DNS解析的影響。