stone2083

Hosts绑定新思路之DNS代理篇

前言

此文摘自2011年5月23日邮件分享,为《Hosts绑定新思路之HTTP代理篇》续集



电视有续集,电影也有续集,Hosts绑定思路同样有续集.

 

我们先用一句话来回顾下,上集中关于Hosts绑定的思路:

原理:利用Http代理的方式,将分散在各个客户端的Hosts绑定,集中绑定在Http代理服务器上

优点:集中管理

缺点:一台Http代理服务器,只能绑定一组Hosts信息

(详细内容,请见之前的邮件)

 

在当时描述方案邮件的时候,也意识到了方案存在的不足,所以一直在思考改进方案(详见之前邮件中最后一节改进方案思路).

经过一段时间的思考,改进方案有了大概的雏形将之前的HTTP代理方案 替换成 DNS代理方案

 

俗话说得好:有图有真相.先贴上一张架构图,之后再用文字慢慢解 


 

架构中核心组件是:DNS BackOffice服务器 DNS代理服务器

DNS BackOffice服务器的作用有:

1.       开发/测试管理员通过BackOffice服务维护各自项目的绑定信息,BackOffice服务将之持久化                (图中 蓝色虚线)

2.       开发/测试人员通过BackOffice服务,告知需要哪个项目的绑定信息,BackOffice服务将之持久化           (图中 黑色虚线)

 

DNS代理服务器的作用有:

1.       拦截Domain Name的解析.通过来源IP判断需要绑定的Hosts信息,File/DB得到对应的IP,通过DNS协议返回  (图中 红色实线  黑色实线)

2.       如果不在绑定之列,则请求上级DNS服务器,返回其Response.

 

此方案的优势:

1.       本地Hosts绑定优先.

只要本地Hosts有绑定IP,则不会请求DNS代理服务器.请求本地Hosts文件.能满足个性化需求.

2.       DNS代理服务器支持多种绑定方式,如通配符,正则等

对于目前旺铺,完全可以使用通配符, *.cn.alibaba.com,简化配置工作量

3.       操作简单

只要将DNS服务器设置成DNS代理服务器IP即可 (附录中有详细说明)

4.       有效利用现有成果

目前测试同学已经集中维护了Hosts绑定信息,只要部署DNS代理服务器,并做简单的集成即可

5.       DNS代理服务器代码轻量小巧,易于修改扩展

目前一共只有212行代码,其中DNS协议部分130,DNS代理部分82.

 

 

附录

I.                    客户端如何设置DNS服务器

Windows用户,见图:


Linux用户,见图:


修改 /etc/resolv.conf文件即可

posted on 2011-05-23 19:42 stone2083 阅读(1801) 评论(0)  编辑  收藏 所属分类: python


只有注册用户登录后才能发表评论。


网站导航: