实现智能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配置。



上篇: 学习:人工智能-机器学习-深度学习概念的区别 下篇: 利用qq邮箱作为个人邮件服务器发送邮件