DNS 配置
OpenResty Edge 可以當做 DNS 的權威解析伺服器。
如下示意圖:
在不考慮 DNS 快取的情況下,客戶端解析 example.com 需要經過這兩個環節:
- 查詢根域名伺服器,獲取
example.com的權威伺服器地址。 - 查詢
example.com的權威伺服器,獲取example.com的地址。
如果希望使用 OpenResty Edge 閘道器來實現權威伺服器,需要將權威伺服器地址指向閘道器節點。
啟用 DNS
配置防火牆以允許 53 埠。具體配置方法請參考您的雲服務提供商文件。
確保 OpenResty Edge 節點上的 UDP 53 埠和 TCP 53 埠沒有被其他程式佔用。
sudo netstat -tupln | grep ":53"在某些情況下,53 埠可能被 systemd-resolved 使用。如果是這樣,請停止此服務並修改配置。
sudo systemctl stop systemd-resolved sudo systemctl disable systemd-resolved sudo tee /etc/resolv.conf > /dev/null <<EOF nameserver 223.5.5.5 nameserver 8.8.8.8 EOF根據需要修改 nameserver 地址。
在
全域性配置>DNS頁面啟用權威 DNS 伺服器。
要啟用
DNS over TCP,請將選項切換為啟用。啟用
權威 DNS 伺服器後釋出更改。驗證 OpenResty Edge 節點的監聽狀態。
$ sudo netstat -tupln | grep ":53" udp 0 0 0.0.0.0:53 0.0.0.0:* 69705/nginx: master udp 0 0 0.0.0.0:53 0.0.0.0:* 69705/nginx: master
在 OpenResty Edge 節點機器上執行 netstat -tupln | grep ":53" 以驗證該埠正在被 OpenResty Edge 節點監聽。
建立 DNS 應用
選擇 DNS 選項卡,點選建立新的 DNS 應用。
按照提示填寫解析的域名和域名伺服器,如 example.com 和 ns1.example.com/ns2.example.com。
如下圖所示,新建一個 DNS 應用並設定域名解析伺服器

如下圖所示,給域名解析伺服器新增 A 記錄。這裡的 IP 地址是 OpenResty Edge Node 的 IP 地址。 你也可以直接從 OR GateWay 選擇一個閘道器名稱,這個名稱會被解析成對應的 IP 地址。 注意,這裡設定的 IP 地址將用於後續在域名提供商中修改域名的 DNS 權威伺服器。

這裡你可以新增更多的其它的 DNS 記錄,比如 www 的域名記錄, @ 記錄解析到主域名。
解析到閘道器節點
在域名提供商的管理控制檯裡,將域名伺服器(如 n1s.example.com)的解析指到閘道器節點上。
新增 DNS 記錄
在 DNS 應用列表中選擇建立好的 DNS 應用,點選新增 DNS 記錄。
支援新增的 DNS 記錄型別有:A、AAAA、CNAME、MX、TXT、NS,同時可以根據使用者網路型別解析到不同的閘道器節點,
目前可選擇的網路型別有國家,地區以及運營商。
自動選擇合適的 DNS 記錄
在建立 DNS 記錄的時候可以選擇該條記錄對應的網段,Edge 會透過請求的 IP 地址返回對應的 DNS 記錄

或者透過 cidr 的方式

計算推薦配置
如果不想手動配置每條 DNS 記錄,可以使用 計算推薦配置

填入配置,會根據配置生成合適的 DNS 記錄

DNS 記錄優先順序
OpenResty Edge 可以針對不同的網路來源,配置不同的 DNS 解析記錄。比如配置如下兩條 DNS 記錄:
- 來自北京的 DNS 請求,解析到
1.1.1.1這個 IP - 來自中國的 DNS 請求,解析到
2.2.2.2這個 IP
針對這種存在包含關係的 DNS 記錄,OpenResty Edge 會按照精確度優先的原則來解析。 比如:
- 如果客戶端來自北京,則會應用規則 1,解析到
1.1.1.1。 - 如果客戶端來自非北京的中國其他地區,則會應用規則 2,解析到
2.2.2.2。
DNS 記錄支援主備設定
型別 + 記錄 + 網路型別 完全相同的 DNS 記錄可以設定互為主備

預設只使用主 DNS 記錄,以下情況會使用備 DNS 記錄:
- 沒有主 DNS 記錄
- 開啟了健康檢查後,主 DNS 記錄不健康
DNS 繫結到 k8s 叢集
DNS 繫結到 k8s 叢集后會自動管理 DNS 記錄
新建 DNS 應用時開啟 map to kubernetes 開關,選擇 k8s 叢集,點選建立按鈕。


NSID
NSID(Name Server Identifier)是 DNS 協議的一個擴充套件機制(定義於 RFC 5001),允許 DNS 伺服器在響應中攜帶一個識別符號,用於標識處理該請求的具體伺服器節點。在多節點部署場景下,NSID 對於除錯和排查問題非常有用,可以幫助快速定位是哪個 Edge Node 處理了特定的 DNS 請求。
此擴充套件於 26.3.1 版本中首次引入。
配置 NSID
修改 Edge Node 的配置檔案
/usr/local/oredge-node/conf/config.ini,新增如下配置:[dns] nsid = "YOUR_NSID"將
YOUR_NSID替換為該節點的識別符號,例如節點的主機名或自定義的唯一標識字串。重啟服務使配置生效:
systemctl restart upgrade-oredge-node
驗證 NSID
配置完成後,可以使用 dig 命令攜帶 NSID 選項來驗證配置是否生效:
dig @127.0.0.1 your.domain.name +nsid
如果配置正確,響應中的 OPT PSEUDOSECTION 部分將包含所設定的 NSID 值。
故障排查
- 首先,在 OpenResty Edge 節點上執行
dig @127.0.0.1 your.domain.name,確保 OpenResty Edge 節點的 DNS 服務按預期執行。 - 其次,在另一臺機器上執行
dig @xx.xx.xx.xx your.domain.name,其中xx.xx.xx.xx是上一步中 OpenResty Edge 節點的公網 IP 地址,以確保透過公網訪問 OpenResty Edge 節點的 DNS 服務正常工作。 - 最後,執行
dig your.domain.name以確保透過公共 DNS 伺服器的遞迴解析正常工作。