madnuttah/unbound-docker

GitHub: madnuttah/unbound-docker

基于 Alpine Linux 的高安全、轻量级 Unbound 递归 DNS 解析器 Docker 镜像,支持 DNSSEC 验证与多种加密 DNS 协议,适合与 Pi-hole 配合搭建私有 DNS 服务。

Stars: 362 | Forks: 31

# 基于 Alpine Linux 的支持 DNSSEC 验证的递归 Unbound DNS 解析器 Docker 镜像
构建状态(点击展开)
[![CD 构建 Docker 镜像](https://img.shields.io/github/actions/workflow/status/madnuttah/unbound-docker/cd-build-unbound.yaml?branch=main&label=CD%20madnuttah/unbound%20build%20status&style=flat-square)](https://github.com/madnuttah/unbound-docker/blob/main/.github/workflows/cd-build-unbound.yaml) [![CD 构建 QUIC Docker 镜像](https://img.shields.io/github/actions/workflow/status/madnuttah/unbound-docker/cd-build-unbound-quic.yaml?branch=main&label=CD%20madnuttah/unbound%20quic%20build%20status&style=flat-square)](https://github.com/madnuttah/unbound-docker/blob/main/.github/workflows/cd-build-unbound-quic.yaml) [![CD 构建 Canary Docker 镜像](https://img.shields.io/github/actions/workflow/status/madnuttah/unbound-docker/cd-build-canary-unbound.yaml?branch=main&label=CD%20madnuttah/unbound%20canary%20build%20status&style=flat-square)](https://github.com/madnuttah/unbound-docker/blob/main/.github/workflows/cd-build-canary-unbound.yaml) [![CD 构建 Canary QUIC Docker 镜像](https://img.shields.io/github/actions/workflow/status/madnuttah/unbound-docker/cd-build-canary-unbound-quic.yaml?branch=main&label=CD%20madnuttah/unbound%20canary%20quic%20build%20status&style=flat-square)](https://github.com/madnuttah/unbound-docker/blob/main/.github/workflows/cd-build-canary-unbound-quic.yaml)
[![GitHub 版本](https://img.shields.io/github/v/release/madnuttah/unbound-docker?include_prereleases&label=madnuttah/unbound%20release&style=flat-square)](https://github.com/madnuttah/unbound-docker/releases) [![OpenSSL 构建环境](https://img.shields.io/github/v/release/madnuttah/openssl-buildenv?include_prereleases&label=madnuttah/openssl-buildenv%20release&style=flat-square)](https://github.com/madnuttah/openssl-buildenv/releases) [![使用 zizmor 进行 GitHub Actions 安全分析](https://static.pigsec.cn/wp-content/uploads/repos/cas/6b/6bf605a9532f68e342630db90fd66491c5ca9f62ca905102cfbe1bc0bc9265f6.svg)](https://github.com/madnuttah/unbound-docker/actions/workflows/cd-gh-action-zizmor-scan.yaml) [![CodeQL 高级版](https://static.pigsec.cn/wp-content/uploads/repos/cas/73/73721a0ab8ff3d64fd3a57205cc9130f873189e35218be05a6bc861800c54d84.svg)](https://github.com/madnuttah/unbound-docker/actions/workflows/codeql.yml) [![CD 安全扫描](https://img.shields.io/github/actions/workflow/status/madnuttah/unbound-docker/cd-security-scan.yaml?branch=main&label=Security%20Scan&style=flat-square)](https://github.com/madnuttah/unbound-docker/blob/main/.github/workflows/cd-security-scan.yaml) [![Lint GitHub Actions](https://static.pigsec.cn/wp-content/uploads/repos/cas/7f/7f6f4bf8c97e1bed822ffd0954d95708090538f3a6e5227729a96117eb29c857.svg)](https://github.com/madnuttah/unbound-docker/actions/workflows/cd-github-actions-linting.yaml) [![Lint Dockerfiles](https://static.pigsec.cn/wp-content/uploads/repos/cas/82/82853461743ecb6de4e3883bf35015ff73f82f8137d24274241a9331f521a6a4.svg)](https://github.com/madnuttah/unbound-docker/actions/workflows/cd-dockerfiles-linting.yaml) [![StepSecurity Harden Runner](https://img.shields.io/badge/Secured%20by-StepSecurity-blue?style=flat-square)](https://github.com/step-security/harden-runner) 本仓库提供了一个轻量级的基于 Alpine Linux 的 Docker 镜像,运行着由 [NLnet Labs](https://nlnetlabs.nl) 团队开发的开源高性能 DNS 解析器 [Unbound](https://unbound.net)。该镜像是一个安全的单层 distroless scratch 构建,遵循最佳实践原则,既适合专业用途也适合个人使用。
功能(点击展开)
| 功能 | 支持 | 说明 | | ---------------------------------------- | --------- | ----------- | | 非特权用户 | 是 | 以非 root 用户运行 Unbound 以减少攻击面。 | | 非特权端口(也可使用特权端口) | 是 | 默认允许绑定到高端口,或在需要时绑定到低端口号。 | | 自定义 UID 和 GID 构建及环境变量 | 是 | 允许您将容器权限与宿主机要求相匹配。 | | 可选的完全 rootless 模式 | 是 | 允许在没有任何 root 权限的情况下运行容器。 | | CD 构建的运行 Alpine Linux 的单层 distroless scratch 镜像 | 是 | 生成没有包管理器或 shell 的最小且安全的 runtime。 | | 针对不同硬件架构优化并通过 CD 构建的 [OpenSSL&OpenSSL+QUIC](https://github.com/madnuttah/openssl-buildenv) | 是 | 确保每种架构都能获得最佳的加密性能和 QUIC 支持。 | | Libevent | 是 | 为高性能 DNS 解析提供高效的事件处理。 | | 默认递归 DNS | 是 | 配置为在不依赖上游解析器的情况下执行完全递归。 | | DNSSEC | 是 | 通过加密方式验证 DNS 响应的真实性。 | | DNSCrypt | 是 | 支持使用 DNSCrypt 协议进行加密 DNS 查询。 | | DNSTap | 是 | 允许对 DNS 查询进行结构化日志记录,以便进行分析和调试。 | | DNS64 | 是 | 为仅支持 IPv4 的目标地址合成 IPv6 地址。 | | DNS over HTTPS | 是 | 接收并通过 HTTPS 提供 DNS 查询服务。 | | DNS over TLS | 是 | 接收并通过 TLS 提供 DNS 查询服务。 | | DNS over Quic(独立的 [-quic] 构建) | 是 | 在专用的启用了 QUIC 的镜像中提供 DNS over QUIC 支持。 | | 通过 UNIX socket 或网络连接的 Redis | 是 | 支持通过 Redis 进行缓存或持久化存储。 | | EDNS Client Subnet | 是 | 支持在需要时转发客户端子网信息。 | | 可选的尊重隐私且有意义的健康检查 | 是 | 提供不会泄露 DNS 查询的健康检查。 | | 无需第三方工具,可选通过 Zabbix 为 Grafana 提供 Unbound 统计信息 | 是 | 直接暴露指标以供监控,无需额外的 exporter。 | | Python | 否 | 有意排除了 Python 以保持镜像的最小化。 |
支持的架构(点击展开)
此镜像为多种硬件架构进行了构建。所有构建版本均使用 Docker Buildx 并在需要时结合 QEMU 模拟,以及优化过的 OpenSSL 或 OpenSSL QUIC 构建环境。 | 架构 | 支持 | 备注 | |-------------|-----------|-------| | linux/amd64 | 是 | 完全支持并已优化 | | linux/arm64 | 是 | 完全支持并已优化 | | linux/386 | 是 | 旧版兼容性 | | linux/arm/v6 | 是 | 适用于较旧的 ARM 设备 | | linux/arm/v7 | 是 | 常见于 Raspberry Pi 2 和 3 等 SBC | | linux/ppc64le | 是 | Little endian PowerPC | | linux/s390x | 是 | IBM Z 和 LinuxONE | | linux/riscv64 | 是 | 实验性但受支持 | 所有架构均通过持续交付流水线自动构建并发布。
## 新手上路 Docker 容器最容易与 Docker Compose 结合使用。 ## 可用的 Docker 标签 此镜像发布了四个变体:标准版、QUIC版、Canary版和 Canary QUIC版。 所有标签均遵循基于上游 Unbound 版本发布的一致版本控制方案。 ### 标准镜像 (DNS over TLS/DoT, UDP, TCP) 可以使用 latest 标签或特定版本拉取标准的 Unbound 镜像: ``` docker pull madnuttah/unbound:latest docker pull madnuttah/unbound:1.1.0-0 ``` 版本控制方案: ``` - e.g. 1.1.0-0 ``` ### QUIC 镜像 (DNS over QUIC/DoQ) 启用了 QUIC 的镜像遵循与标准镜像相同的版本控制方案,但附加了 -quic 后缀: ``` docker pull madnuttah/unbound:latest-quic docker pull madnuttah/unbound:1.1.0-0-quic ``` 版本控制方案: ``` --quic e.g. 1.1.0-0-quic ``` ### Canary 镜像(每日构建) 标准镜像的每日构建版本发布在 canary 标签下: ``` docker pull madnuttah/unbound:canary ``` 这些构建版本追踪上游最新的 Unbound master 分支。 ### Canary QUIC 镜像(每日 QUIC 构建) 启用了 QUIC 的每日构建版本可通过 canary-quic 标签获取: ``` docker pull madnuttah/unbound:canary-quic ``` 这些构建版本结合了最新的 Unbound master 分支以及启用 QUIC 的 OpenSSL 和 NGTCP2 协议栈。 ## 更改日志 您可以在 [Releases](https://github.com/madnuttah/unbound-docker/releases) 部分查看更改内容。 ## 反馈 如果您有任何问题或遇到任何情况,请提交一个 [GitHub Issue](https://github.com/madnuttah/unbound-docker/issues)。 欢迎在仓库的 [Discussions](https://github.com/madnuttah/unbound-docker/discussions) 标签页提出功能请求和进行一般性讨论。 您也可以通过 Fosstodon 联系我们: ## 致谢 - [Alpine Linux](https://www.alpinelinux.org/) - [Docker](https://www.docker.com/) - [Unbound](https://unbound.net/) - [OpenSSL](https://www.openssl.org/) - [Redis](https://redis.io/) - [Pi-hole](https://pi-hole.net/) - [Aqua Security](https://trivy.dev/) - [zizmor](https://github.com/zizmorcore/zizmor) - 启发了本项目的众多 Docker 镜像 ## 许可证 ### 许可证 除非另有说明,所有代码均在 MIT 许可证下发布。 详情请参阅 [LICENSE](https://github.com/madnuttah/unbound-docker/blob/main/LICENSE)。 ### 其他组件的许可证 - Docker: [Apache 2.0](https://github.com/docker/docker/blob/master/LICENSE) - Unbound: [BSD License](https://unbound.nlnetlabs.nl/svn/trunk/LICENSE) - OpenSSL: [Apache style license](https://www.openssl.org/source/license.html) ## 法律声明 请注意,这是私人贡献者的作品,我们既不隶属于 NLnet Labs、Pi-hole 或 AdGuard,NLnet Labs、Pi-hole 或 AdGuard 也未参与该镜像的开发。“Unbound”、“Pi-hole”和“AdGuard Home”的商标和产权分别属于 NLnet Labs、Pi-hole 和 AdGuard。源代码中的所有权利,包括与上述商标和产权相关的标志,均归其各自所有者所有。 ## 支持我们的使命 如果您想捐款,请将这笔钱捐给该镜像所依赖的上游项目。 如果您喜欢我们所做的工作,并且觉得这个镜像在保护您的隐私并恢复您的 DNS 自由方面很有用——请帮忙宣传、Fork 我们的仓库、提交 Issue、发起 Pull Request,并且别忘了在 Docker Hub 和 GitHub 上给我们点个 Star。非常感谢您的支持!
标签:Alpine Linux, DNS解析器, Hakrawler, Pi-hole, Unbound, 安全测试工具, 搜索引擎查询, 网络隐私, 请求拦截