..
使用 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