edelux/dns-proxy
GitHub: edelux/dns-proxy
结合 dnsmasq 与 DNSCrypt-Proxy 的轻量级容器化 DNS 代理,提供 DoH 加密解析、缓存和 Split DNS 功能,适用于云端与本地基础设施。
Stars: 1 | Forks: 0
# 使用 dnsmasq 和 DNSCrypt-Proxy 的轻量级 DNS 代理
一个安全、极简的 DNS 解析器容器,支持 DNS-over-HTTPS (DoH)、缓存和 Split DNS —— 非常适合云端和本地基础设施。
## 🐧 关于
`edelux/dns-proxy` 是一个基于 [Debian Stable](https://www.debian.org/releases/stable/) 构建的轻量级容器,专为高安全性、低资源占用的 DNS 解析而设计。
此镜像结合了 [`dnscrypt-proxy`](https://github.com/DNSCrypt/dnscrypt-proxy) 和 [`dnsmasq`](https://thekelleys.org.uk/dnsmasq/doc.html),可提供:
- **DNS-over-HTTPS (DoH)** 和 **DNSCrypt v2** 安全上游
- **匿名化 DNSCrypt** 和 **Oblivious DoH (ODoH)** 支持
- 使用 `dnsmasq` 的**缓存解析器**
- **Split DNS**:将选定的域名转发到传统的 DNS 服务器
- 使用 `nobody` 用户实现**非 root 运行**
- **从零开始**构建镜像,以实现最小的资源占用
- 基于在构建期间使用 `dpkg -x` 解包的 Debian 软件包(运行时无需 `apt install`)
## 🚀 快速开始
使用默认端口和自定义参数运行容器:
```
docker run --rm -p 53:53/udp -d edelux/dns-proxy
```
```
docker run --rm -p 53:53/udp -d edelux/dns-proxy \
--anonymized \
--server=/ec2.internal/10.18.0.2 \
--server=/amazonaws.com/10.18.0.2
```
此配置支持:
- 通过匿名化中继向 DoH 提供商发起 DNS 查询
- 通过纯 DNS 为 AWS 内部域名进行 Split DNS 解析(推荐用于云基础设施)
## ⚙️ 通过参数进行配置
在运行时使用命令行标志进行配置:
| 标志 | 描述 |
| :--- | --- |
| --server= | 指定一个纯 DNS 服务器(例如 --server=/amazonaws.com/10.18.0.2)。推荐
用于内部或特定于云的域名。 | | --doh-server= | 定义安全的 DoH 或 DNSCrypt v2 服务器。支持 DNSCrypt、DoH、匿名化
DNSCrypt 和 ODoH。 | | --doh-route= | 指定在查询 DoH 提供商时要使用的匿名化解析器。 | | --nocache | 禁用所有 DNS 缓存。适用于调试或不希望进行缓存
的环境。 | | --cachesize= | 设置要缓存的最大 DNS 条目数。设置为 0 可
完全禁用缓存。 | | --anonymized | 启用使用中继解析器对 DoH 查询的匿名化路由。 | 所有参数都是可选的,可以自由组合。 ## ♻️ 默认设置 **dmsmasq** ``` no-poll no-hosts no-resolv bogus-priv user=nobody cache-size=128 keep-in-foreground server=127.0.0.1#5300 ``` **dnscrypt-proxy** ``` listen_addresses = ['127.0.0.1:5300'] user_name = 'nobody' keepalive = 30 server_names = ['cloudflare', 'odoh-cloudflare', 'wikimedia', 'nextdns', 'libredns', 'fdn', 'comss.one', 'bortzmeyer', 'scaleway-fr', 'anon-cs-berlin', 'anon-cs-ch', 'anon-cs-dc', 'anon-cs-fl'] lb_strategy = 'ph' lb_estimator = true log_level = 0 require_nolog = true require_nofilter = true ignore_system_dns = true require_dnssec = true dnscrypt_servers = true odoh_servers = true doh_servers = true [sources] [sources.'public-resolvers'] cache_file = '/var/cache/dnscrypt-proxy/public-resolvers.md' minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3' refresh_delay = 72 urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md', 'https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md'] [sources.relays] cache_file = '/var/cache/dnscrypt-proxy/relays.md' minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3' refresh_delay = 73 urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/relays.md', 'https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/relays.md', 'https://download.dnscrypt.info/resolvers-list/v3/relays.md'] ``` ### 📦 架构支持 - amd64 - arm64 - riscv64 - ppc64le - s390x ### ✅ 使用场景 - 用于默认安全设置的轻量级加密 DNS 代理 - 用于云环境(例如 AWS、GCP)的内部 DNS 解析器 - 私有基础设施中公共解析器的直接替代品 - 用于 IoT、边缘或容器化环境的自托管 DNS 网关 ### 🔐 安全性与资源占用 - 以非特权用户身份运行(nobody) - 仅使用静态解包的系统文件 - 无包管理器、cron 或额外服务 - 无不必要的二进制文件或语言运行时 ### 🛠 构建理念 - 基于 Debian 软件包 - 运行时从零构建 - 使用 dpkg -x 仅提取所需的文件 - 无需运行时 apt install 或包管理器 - 专注于极简主义、清晰度和可重复性 ### 📎 链接 [edelux/dns-proxy](https://hub.docker.com/repository/docker/edelux/dns-proxy) ### ✨ 许可证 本项目基于 [`MIT`](https://github.com/edelux/dns-proxy#MIT-1-ov-file) 协议发布 #### 🔁 仓库重命名通知 本项目此前发布名称为: - [`Docker Hub:`edelux/dnsmasq](https://hub.docker.com/repository/docker/edelux/dnsmasq) - [`GitHub:` edelux/dnsmasq](https://github.com/edelux/dnsmasq) 新镜像的支持将继续在 edelux/dns-proxy 这一新名称下进行。之前的镜像和仓库将保持可用,但只会镜像本项目在 2025 年 12 月 31 日之前所做的更新。
用于内部或特定于云的域名。 | | --doh-server= | 定义安全的 DoH 或 DNSCrypt v2 服务器。支持 DNSCrypt、DoH、匿名化
DNSCrypt 和 ODoH。 | | --doh-route= | 指定在查询 DoH 提供商时要使用的匿名化解析器。 | | --nocache | 禁用所有 DNS 缓存。适用于调试或不希望进行缓存
的环境。 | | --cachesize= | 设置要缓存的最大 DNS 条目数。设置为 0 可
完全禁用缓存。 | | --anonymized | 启用使用中继解析器对 DoH 查询的匿名化路由。 | 所有参数都是可选的,可以自由组合。 ## ♻️ 默认设置 **dmsmasq** ``` no-poll no-hosts no-resolv bogus-priv user=nobody cache-size=128 keep-in-foreground server=127.0.0.1#5300 ``` **dnscrypt-proxy** ``` listen_addresses = ['127.0.0.1:5300'] user_name = 'nobody' keepalive = 30 server_names = ['cloudflare', 'odoh-cloudflare', 'wikimedia', 'nextdns', 'libredns', 'fdn', 'comss.one', 'bortzmeyer', 'scaleway-fr', 'anon-cs-berlin', 'anon-cs-ch', 'anon-cs-dc', 'anon-cs-fl'] lb_strategy = 'ph' lb_estimator = true log_level = 0 require_nolog = true require_nofilter = true ignore_system_dns = true require_dnssec = true dnscrypt_servers = true odoh_servers = true doh_servers = true [sources] [sources.'public-resolvers'] cache_file = '/var/cache/dnscrypt-proxy/public-resolvers.md' minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3' refresh_delay = 72 urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md', 'https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md'] [sources.relays] cache_file = '/var/cache/dnscrypt-proxy/relays.md' minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3' refresh_delay = 73 urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/relays.md', 'https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/relays.md', 'https://download.dnscrypt.info/resolvers-list/v3/relays.md'] ``` ### 📦 架构支持 - amd64 - arm64 - riscv64 - ppc64le - s390x ### ✅ 使用场景 - 用于默认安全设置的轻量级加密 DNS 代理 - 用于云环境(例如 AWS、GCP)的内部 DNS 解析器 - 私有基础设施中公共解析器的直接替代品 - 用于 IoT、边缘或容器化环境的自托管 DNS 网关 ### 🔐 安全性与资源占用 - 以非特权用户身份运行(nobody) - 仅使用静态解包的系统文件 - 无包管理器、cron 或额外服务 - 无不必要的二进制文件或语言运行时 ### 🛠 构建理念 - 基于 Debian 软件包 - 运行时从零构建 - 使用 dpkg -x 仅提取所需的文件 - 无需运行时 apt install 或包管理器 - 专注于极简主义、清晰度和可重复性 ### 📎 链接 [edelux/dns-proxy](https://hub.docker.com/repository/docker/edelux/dns-proxy) ### ✨ 许可证 本项目基于 [`MIT`](https://github.com/edelux/dns-proxy#MIT-1-ov-file) 协议发布 #### 🔁 仓库重命名通知 本项目此前发布名称为: - [`Docker Hub:`edelux/dnsmasq](https://hub.docker.com/repository/docker/edelux/dnsmasq) - [`GitHub:` edelux/dnsmasq](https://github.com/edelux/dnsmasq) 新镜像的支持将继续在 edelux/dns-proxy 这一新名称下进行。之前的镜像和仓库将保持可用,但只会镜像本项目在 2025 年 12 月 31 日之前所做的更新。
标签:dnsmasq, DNS解析, Docker, DoH, Hakrawler, NIDS, 安全合规, 安全防御评估, 容器化, 开源项目, 网络代理, 网络安全, 请求拦截, 隐私保护