DNSForwarder(DNS转发器)简介
DNSForwarder是一个开源免费的DNS转发器,基于Go语言开发,具有轻量级、高性能的特点,能够提升网络DNS查询速度和减少上游服务器负载而设计。该工具集成了智能缓存、健康检查、客户端路由等功能,是当前复杂网络环境下DNS管理的优选工具。

主要特点如下
- 智能DNS转发与缓存:支持将DNS查询转发至多个上游DNS服务器,通过内存缓存机制显著降低查询延迟。系统会定期检查上游服务器健康状态,确保只使用可达服务器,保障服务稳定性。
- 客户端智能路由:该工具最突出的特性之一是基于客户端的智能DNS路由。用户可以配置不同客户端使用不同的上游DNS服务器,实现私有DNS服务器(如PiHole、AdGuard Home)与公共DNS服务器的灵活切换。支持通过IP地址或MAC地址识别特定客户端,为企业网络管理提供了极大便利。
- 全面的监控与统计:内置Prometheus指标收集功能,提供详细的DNS使用统计和缓存命中率数据。管理员可以实时监控服务状态、查询性能和系统资源使用情况,便于性能优化和故障排除。
该工具适用于企业内网、家庭网络以及需要集中管理DNS查询的环境。无论是配合广告拦截服务器使用,还是作为多层DNS架构的中间层,都能提供出色的性能和可靠性。
DNSForwarder(DNS转发器)官网及教程
项目支持Docker容器化部署,所有主要参数均可通过环境变量或.env文件进行配置,包括DNS服务器列表、缓存TTL、端口设置等,极大简化了部署和维护工作。
使用 Docker 运行:
1、构建 Docker 镜像
docker build -t dnsforwarder .
2、运行容器
docker run --rm -p 53:53/udp -p 8080:8080 --env-file .env dnsforwarder
使用 Docker Compose 运行
docker compose up --build
可以使用环境变量或文件配置转发器.env。例如.env:
DNS_SERVERS=192.168.0.110:53,8.8.8.8:53
CACHE_TTL=10s
DNS_TIMEOUT=5s
WORKER_COUNT=5
TEST_DOMAIN=google.com
DNS_PORT=:53
UDP_SIZE=65535
DNS_STATSLOG=1m
DEFAULT_DNS_SERVER=8.8.8.8:53
CACHE_SIZE=10000
DNS_CACHE_TTL=30m
ENABLE_METRICS=true
METRICS_PORT=:8080
METRICS_PATH=/metrics
METRICS_UPDATE_INTERVAL=30s
# Client-Based DNS Routing (Optional)
ENABLE_CLIENT_ROUTING=true
PRIVATE_DNS_SERVERS=192.168.1.1:53,192.168.1.2:53
PUBLIC_DNS_SERVERS=1.1.1.1:53,8.8.8.8:53
PUBLIC_ONLY_CLIENTS=192.168.1.100,10.0.0.50