我需要在C/C++中构建一个定制的简单非权威缓存DNS服务器。有什么指导?链接?示例?
"简单"的缓存DNS服务器并不存在,尤其是当你需要良好的安全性时。最近的DNS攻击表明,递归DNS服务器中的缓存功能特别容易受到攻击。
重新评估是否实际需要本地缓存。如果不需要,则最好修改现有的DNS代理代码(例如 'dnsmasq')。
如果你确实想要自己开发,可以使用诸如ldns
等优秀的库来提供对底层DNS数据包的访问。
我自己正在使用ldns
与libevent
结合使用,实现了我在早期问题中提到的模糊测试DNS服务器。
有许多免费的DNS软件实现。您可以查看它们的源代码。例如:
这本书 DNS and BIND 可能会有所帮助。当然,还有规定DNS的RFC文件,请参见http://rfc-editor.org/。
从djbdns开始。
或者,您可以使用Ragel状态机编译器从头开始构建您的服务器。