在C中创建自定义DNS名称服务器

时间:2009-10-23 15:34:24

标签: c dns

需要使用C创建自定义DNS名称服务器,该服务器将检查mysql数据库以查看是否需要将客户端IP定向到其他服务器。将其用于测试网络,因此如果启用了真正的查找,对foo.com的请求将仅在那里,否则请求将被定向到开发环境。有什么建议/建议吗?

目前正在寻找像ldns或c-ares这样的东西

4 个答案:

答案 0 :(得分:2)

BIND已经有了mySQL扩展(使用动态可加载区域)。您需要做的就是创建一个包含翻译的地址表,并使用该表定义构建正确DNS记录的查询。

有关完整文档,请参阅:http://bind-dlz.sourceforge.net/

答案 1 :(得分:1)

非常类似于我现在正在处理的事情,除非在我的情况下,我必须让DNS服务器返回不同于正常情况的错误消息,以适应它在专用网络上运行的事实。

我决定只下载BIND源代码并将我的修改作为补丁编写。然后,为了进行部署,我们可以下载最新的BIND源代码,其中包括新的安全补丁,应用我们的自定义补丁并构建它。

我建议您做同样的事情,只需获取BIND并根据需要进行修改。您可以获取BIND及其所有文档here at ISC.ORG

答案 2 :(得分:1)

鲍勃,我已经写了一个ldnslibevent的混搭,它可以为你提供一个良好的开端,让你能够做到你想要的。

查看http://code.google.com/p/evldns/

答案 3 :(得分:1)

我最终选择了libevent 1.4,它包含自己的处理dns请求的函数。 libevent包含的evdns函数非常简单,我需要创建q自定义dns服务器。我看着使用bind,但不想处理必须设置区域和额外配置,evdns允许我使用现有的resolv.conf将任何dns请求转发到实名服务器并根据需要修改响应包含在mysql表中。

相关问题