2009-10-23 63 views
3

需要使用C创建自定义DNS名称服务器,该服务器将检查MySQL数据库以查看客户端IP是否需要定向到不同的服务器。将此用于测试网络,所以如果启用真正的查找,foo.com的请求将只会到达那里,否则请求将被引导至开发环境。任何建议/建议?在C中创建自定义DNS名称服务器

目前正在研究的libevent的东西,如LDNS或c-战神

+1

你需要这个名字服务器是递归还是不是? – 2009-10-23 15:55:35

+0

目前有一个使用Stanford :: DNS服务器的perl DNS名称服务器,这个崩溃并且需要每天重新启动,所以我正在寻找在C. Stanford :: DNSserver中编写类似的功能,据我所知只是权威性的。目标是像DNS服务器一样工作,并根据mysql表中的信息修改某些请求,并将所有其他请求转发给真正的DNS服务器。 – jfarrell 2009-10-23 19:15:57

回答

1

我结束了包含自身职能为处理DNS请求的libevent 1.4去。 libevent包含的evdns函数非常直接,而且我需要创建q自定义dns服务器。我看着使用绑定,但不想处理必须设置区域和额外的配置,evdns允许我使用现有的resolv.conf转发任何DNS请求到实名服务器,并根据需要修改响应包含在一个MySQL表中。

0

非常相似,我的工作,现在,除了在我的情况下,我必须使DNS服务器比正常返回不同的错误信息的东西适应它在专用网络上运行的事实。

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

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

+0

我不认为这是一个好主意。 BIND 9(与它的后续BIND 10计划不同)并不是真正用于hackability。 – bortzmeyer 2009-10-26 08:00:00

+0

这只是意味着它不容易破解BIND 9,因为源代码的组织和重构都不够好。但是有时开发人员只需要深入研究并弄清楚事情的真相。在任何情况下,OP都指定了C,并且可能会非常熟练地使用它,否则我会建议使用Python和Twisted Names与DNS服务器一起进行黑客攻击。 – 2009-10-26 11:14:49

2

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

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

相关问题