文/章思宇 封寒松 黃保青
大型互聯網網站和服務采用CDN使用戶就近訪問資源以提高訪問速度。CDN在各地區、各運營商部署的節點,大多通過DNS進行流量調度。權威DNS服務器的分離解析(Split DNS)技術根據不同來源IP地址對同一域名返回不同的解析結果,實現了差異化的流量調度。當用戶使用運營商提供的本地遞歸DNS服務器時,該方法能較好地將用戶引導到最優的CDN節點,因為權威DNS服務器看到的查詢源IP即遞歸服務器IP與用戶處于同一地區和運營商。
然而,隨著公共DNS服務的流行(如OpenDNS、Google Public DNS、114DNS等),遞歸服務器的IP地址已無法代表用戶所在的地區和運營商。即使公共DNS服務采用了Anycast部署,其節點分布仍存在很大局限性,尤其是國外的OpenDNS和Google公共DNS目前在中國大陸尚無節點。
為了給使用公共DNS服務的用戶提供更準確的CDN域名引導,EDNS Client Subnet(ECS)擴展允許遞歸DNS服務器將用戶IP子網信息包含在DNS查詢請求中,以幫助權威服務器識別用戶位置和運營商,返回最優的解析結果。ECS的工作機制在RFC 7871中定義,目前被Google、OpenDNS和騰訊DNSPod等公共DNS服務所支持。
ISC BIND作為最流行的開源DNS服務器軟件,從2016年的9.11版本開始試驗性地支持權威服務器的ECS功能;但由于GeoIP支持的局限性使其實現難以符合RFC規范,且配置效率低下,該功能在2018年9.13.1版本中被移除。目前支持ECS的權威DNS服務器軟件有gdnsd和PowerDNS。
上海交通大學的郵件系統、入校VPN和開源軟件FTP 鏡像等訪問量較大的服務配置有多個運營商的服務地址。服務地址的選擇過去采用ISC BIND的視圖(View)功能實現DNS分離解析,始終存在對公共DNS用戶的錯誤引導問題,尤其是將眾多使用Google等國外公共DNS的國內用戶,引導到郵件系統的海外鏡像節點,造成訪問速度顯著下降。為了解決該問題,學校權威域名服務引入支持ECS的方案來替代ISC BIND的視圖功能。
新方案采用gdnsd軟件,建立支持ECS的CNAME跳轉專用子域ecslb.sjtu.edu.cn,對需要分離解析的如vpn.sjtu.edu.cn域名,首先CNAME指向由gdnsd提供服務vpn.ecslb.sjtu.edu.cn,再依據ECS或遞歸IP提供不同的解析結果,如圖1所示。sjtu.edu.cn域仍由原先的ISC BIND服務器解析,且不再需要視圖配置。

圖1 權威解析ECS配置示意
gdnsd的GeoIP插件用于支持GSLB(全局負載均衡),但利用默認的MaxMind GeoIP數據庫不能實現國內幾大運營商的區分(gdnsd尚不支持GeoIP ASN數據庫),因此我們使用Clang.CN提供的國內運營商IPv4和IPv6地址段在gdnsd配置文件中定義“nets”實現自定義的IP段到“數據中心”的映射。
為了驗證ECS權威解析的效果,從202.120.2.x的教育網地址發起對vpn.sjtu.edu.cn的DNS請求,同時利用gdnsd的Reflect插件配置whoami子域名返回遞歸服務器地址和ECS地址。對于不支持ECS的百度公共DNS(180.76.76.76),其遞歸地址111.1.52.5(圖2-a)屬于浙江省移動,因此解析的“cm.vpn”移動地址(圖2-b),對教育網用戶不是最優。支持ECS的騰訊DNSPod(119.29.29.29),盡管其遞歸來源183.57.53.63(圖2-c)屬于廣東省電信,但根據其提供的ECS地址202.120.2.1仍可將用戶引導到最優的教育網入口(圖2-d)。

圖2 vpn.sjtu.edu.cn解析結果對比
Jia ZHANG等人2017年對Alexa排名前1萬的網站域名進行了探測,結果顯示在過去5年間CDN的使用率沒有明顯增長,但權威服務器支持ECS的比例有了顯著提升,排名前100的網站有超過50%支持ECS。過去的研究更多地關注CDN或網站側支持ECS的情況,而學校權威域名服務啟用ECS的效益取決于使用公共DNS服務的用戶規模和公共DNS對ECS的支持情況。
通過對校園網DNS服務器和校園網出口DNS流量持續一個月的分析,9.38萬個校園網用戶中有1.87萬使用校外公共DNS服務(按獨立IP統計),占比達20%。各公共DNS的用戶數統計見表1,Google和騰訊DNSPod默認支持ECS,OpenDNS申請后也對我校域名啟用ECS,三者合并用戶數8922個,由此計算學校權威域名服務支持ECS后可使9.5%的校園網內用戶受益。
圖3顯示了兩臺gdnsd權威服務器一個月內每小時的請求數,兩臺合計處理平均每秒204.5個請求,其中支持ECS的請求占25.1%。

圖3 gdnsd服務器請求量

表1 校園網用戶DNS服務選擇

表2 ECS請求源地址分布統計
全月處理的1.24億個ECS查詢請求,來自總共2038個IP地址,分屬51個不同的自治系統,統計如表2。其中來自Google和OpenDNS的請求最多,分別占總ECS請求數的73.50%和20.19%。支持ECS的請求中,來自中國大陸地區的僅占5.31%。ECS查詢攜帶的用戶地址信息,99.41%為IPv4地址,IPv6僅占0.59%。
使用支持ECS的權威服務器(如gdnsd等)替代傳統的ISC BIND視圖配置,可有效解決校園網用戶及國內用戶使用Google、OpenDNS等公共DNS服務時的分區域、分運營商解析問題。流量分析結果顯示,上海交通大學校園網內有9.5%的用戶使用支持ECS的公共DNS服務,該改進可使8922位校園網用戶受益。與此同時,gdnsd權威服務器上線后,處理的校外遞歸DNS服務器請求中,有25.1%的查詢請求支持ECS,因此該方案的部署具有顯著的意義。