以自己以前实现过的转发过滤+各种特殊操作的dns转发器来简单说下吧
1.网络层面确实简单, 毕竟是UDP不需要麻烦epoll什么的, 当然极少大包的情况客户端会通过TCP请求但不实现也没啥.
但是当有很多客户端或者客户端请求速度快的时候, 就要分清楚, 上游dns响应过来的包应该转发给谁.
也就是说需要实现一个查找表.
2.另外一个层面就是协议解析了, dns使用了二进制协议, 而且每个8位的字节还可能被掰开用, 刚接触可能有点绕.
略读一下rfc, 大致记住请求包响应包大概什么就行了.
实际去操作dns包的时候建议直接用c-ares的两个很短的头文件就可以了, 各种定义也都有了
最后加上一点C语言的功底, 熟悉一天两天的, 一个dns转发器就实现了
然后就可以在上面实现广告过滤啊分流啊等功能
如果要实现递归服务器的话就要一层层去权威dns那里去查询了, 而不能仅用一个上游dns服务器.
实现起来也不麻烦
【 在 sataMXH 的大作中提到: 】
: DNS服务器原理是不是很简单?
: 收到udp请求,响应一个udp数据包?
:
--
FROM 51.81.85.*