我需要在C / C ++中构建一个自定义的简单非权威缓存DNS服务器。任何指导?链接?样品? 谢谢!
答案 0 :(得分:16)
没有“简单”缓存DNS服务器这样的东西,特别是如果你想要体面的安全性。最近的DNS攻击表明,递归DNS服务器中的缓存功能特别容易受到攻击。
重新评估您是否确实需要自己的本地缓存。如果不这样做,您可能最好修改现有的DNS代理代码(例如'dnsmasq')。
如果您确实想要自己动手,那么有一些好的库,例如ldns
,可以提供对底层DNS数据包的访问。
我正在使用ldns
自己与libevent
一起实现我在之前的问题中提到的Fuzzing DNS服务器。
答案 1 :(得分:14)
答案 2 :(得分:3)
有许多DNS的免费软件实现。你可以查看他们的源代码。例如:
这本书DNS and BIND可能会有所帮助。当然,还有指定DNS的RFC,请参阅http://rfc-editor.org/。
答案 3 :(得分:2)
从djbdns开始。
答案 4 :(得分:2)
如果你真的需要这样做(这是巨大的工作,请参阅Alnitak的回复),从现有的良好计划开始(不是一个没有维护的单人实验)很长一段时间像djbdns)并修改它。
Unbound可能是一个合理的选择。 (代码库小于BIND的代码库。)
答案 5 :(得分:1)
或者,您可以使用Ragel State Machine Compiler从头开始构建服务器。