我们在用电信或者联通dns的时候,经常会碰到输入了不存在的域名被劫持到一个域名纠错页面,上面全是广告。

冷博客也管理着一台dns,所以很奇怪这个功能是如何实现的。

几经周折,最后问到刘兄,他也不是很清楚这个事儿。

结果冷博客找了很久很久,终于发现了原来bind不支持,也许Linux上没有软件原生支持这个功能,因为这个做法违反了RFC,详细的如这位仁兄所言:

BIND is not natively capable of it, nor should it be. You’re breaking RFC compliance by providing a response in place of NXDomain.
Breaking RFC compliance in this manner can have significant detrimental effects on users of the system. Because of this such systems tend to be extremely unpopular (did you ever see Verizon’s SiteFinder?).
That said, there are products that do this kind of thing. See:
http://www.nominum.com/products/vantio_nxr.php

Making BIND do it would be quite an undertaking, on the level that if you knew how to do it you wouldn’t have needed to ask this question.

大概意思是:

BIND原生不支持这个功能,因为对NXDomain的应答破坏了RFC协定

破坏RFC协定,意味着…

有专门做这个事儿的软件:

就是内个链接

其实F5也可以做这个事儿,已经有成功案例,而且大部分都用F5实现这个功能。

所以对nxdomain redirect on linux os 的研究告一段落。

最后有一篇论文关于这个事儿的,可以参考《计算机系统应用》2010年第19卷第7期《一种基于域名错误的DNS重定向协议》。不过因为是论文,没有太多的实验细节,大家看看而已,他就是利用bind实现的。网上有改论文下载,收费的不收费的都有,都是有版权的。

还有就是武汉大学电子信息学院的一篇论文《域名纠错功能的设计与实现》,这个网上都是收费的,不过写得很短没有什么参考价值。