24

实现智能dns为用户分配最佳线路

 5 years ago
source link: http://yongqing.is-programmer.com/posts/214318.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

说明

服务器放在国外,不同线路质量不一样。如何根据访问者的所在地、运营商,智能的分配线路呢?

有些域名服务器上提供线路优先级,比如阿里云,如果是国外域名服务商,一般都不会提供。

所以通常要我们自己实现自动分配线路的功能。

例如

有一个网站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

此生必看的科学实验-水知道答案

《了凡四训》详解之改过之法

印光大师十念法(胡小林主讲第1集)

精神病为什么治不好

百病之源


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK