..

使用 Rust 通过 TCP 转发 DNS 协议

之前一直使用 coredns 做 DNS 的 TCP 转发。最近在重构一个项目的时候,看了一眼 DNS 的协议。发现基于 TCP 的 DNS 的查询其实和 UDP 是一样的,只是加了 16bit 的长度描述而已。所以干脆用 rust 写了一个简单的组件供项目使用。当然也可以独立使用。详见下方链接。

sequenceDiagram actor Client participant UDP DNS participant TCP - Upstream Client->>UDP DNS: dns request UDP DNS->>TCP - Upstream: length(16bit) + dns request TCP - Upstream->>UDP DNS: length(16bit) + dns response UDP DNS->>Client: dns response

link:

https://github.com/ffff-official/dns-forward-over-tcp https://crates.io/crates/dns-forward-over-tcp