實現智慧dns為使用者分配最佳線路
說明
伺服器放在國外,不同線路質量不一樣。如何根據訪問者的所在地、運營商,智慧的分配線路呢?
有些域名伺服器上提供線路優先順序,比如阿里雲,如果是國外域名服務商,一般都不會提供。
所以通常要我們自己實現自動分配線路的功能。
例如
有一個網站www.yongqingking.top,它的真實伺服器ServerA在海外。網站的部分使用者在國內。
由於各種原因,在國內訪問海外伺服器的質量不是很好。為了改善狀態,打算為國內使用者提供多條訪問線路。
使用者訪問時,自動分配合適線路,提供網站訪問質量。
待解決問題
要解決上面問題,需要解決下面幾個問題
1.如何實現多條訪問線路?
2.如何自動分配線路?
3.如何知道線路質量最好?
如何實現多條訪問線路?--埠對映
在合適的地區新建節點NodeA,將NodeA的80埠轉發給ServerA的80埠。
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=ServerA的ip:toport=80--permanent
如何自動分配線路?--bind檢視
1.分配給使用者合適的節點ip就等於分配了線路。
2.分配ip是dns乾的事情,我們必須要弄個自己的dns伺服器。
3.dns伺服器有很多,我們可以自己寫一個,也可以用dnsmasq,chinadns,smartdns等,但是都不適合
4.最終我選擇的是bind,比較常用的一個dns伺服器,利用它的檢視功能
- 安裝
yum install bind
- 修改配置允許外部訪問
options { listen-on port 53 { 127.0.0.1; 主機ip;}; allow-query{ any;}; }
- 配置acl+檢視
介紹bind檢視的文章很多
- 定製bind檢視
開發功能介面修改bind檢視,並且bind支援熱載入,不需要重啟
如何知道線路質量呢?--反向掃描
1.通常的方法是,在各個地區佈置探測節點。付出成本太高,不現實。
2.藉助第三方的服務,例如站長工具等。
3.系統中記錄了訪問者ip,在節點上ping所有ip或掃描埠
定時掃描線路質量,然後再更新dns配置。
來源
http://www.yongqingking.top/network/2019/03/24/dns-bind.html