mosdns 入门指南:从零开始配置
mosdns 是一款用 Go 语言编写的现代化 DNS 解析器,以其高性能、低资源占用和丰富的特性而闻名。它支持多种 DNS 协议,包括 DNS-over-TLS (DoT)、DNS-over-HTTPS (DoH)、DNS-over-QUIC (DoQ) 等,并提供了强大的自定义配置选项,可以满足各种复杂的网络环境需求。本指南将带你从零开始,逐步配置 mosdns,构建一个安全、快速且可靠的 DNS 解析服务。
一、安装 mosdns
mosdns 提供了多种安装方式,包括预编译二进制文件、Docker 镜像和源码编译。推荐使用预编译二进制文件,方便快捷。
-
下载二进制文件: 访问 mosdns 的 GitHub 发布页面 (https://github.com/IrineSistiana/mosdns/releases),下载对应你操作系统的最新版本二进制文件。
-
解压文件: 将下载的压缩文件解压到合适的目录,例如
/usr/local/mosdns
。 -
创建配置文件: 在 mosdns 的目录下创建一个名为
config.yaml
的配置文件。
二、配置 mosdns
mosdns 的核心配置都在 config.yaml
文件中。以下是一个基本的配置示例,涵盖了常用的功能:
“`yaml
log:
level: info
file: “mosdns.log”
listen:
– addr: “:53”
udp: true
tcp: true
upstream:
– name: “Cloudflare DoH”
doh: https://cloudflare-dns.com/dns-query
– name: “Google DoH”
doh: https://dns.google/dns-query
– name: “Quad9 DoH”
doh: https://dns.quad9.net/dns-query
dns:
servers:
– upstream: “Cloudflare DoH”
– upstream: “Google DoH”
– upstream: “Quad9 DoH”
fallback:
– name: “223.5.5.5” # 阿里公共DNS
– name: “114.114.114.114” # 114DNS
cache:
size: 4096
min_ttl: 300
max_ttl: 86400
plugins:
– name: “query_log”
config: {}
“`
配置详解:
-
log
: 配置日志输出。level
设置日志级别,可以是debug
、info
、warning
、error
或fatal
。file
指定日志文件路径。 -
listen
: 配置监听地址和端口。addr
指定监听地址和端口,:53
表示监听所有接口的 53 端口。udp
和tcp
分别启用 UDP 和 TCP 协议。 -
upstream
: 配置上游 DNS 服务器。name
为上游服务器命名,doh
指定 DoH 服务器地址。你也可以使用tls
配置 DoT 服务器,或者使用address
配置传统的 UDP/TCP DNS 服务器。 -
dns
: 配置 DNS 解析逻辑。servers
指定使用的上游服务器列表,按照顺序进行查询。fallback
指定备用 DNS 服务器,当所有上游服务器都无法解析时使用。 -
cache
: 配置 DNS 缓存。size
设置缓存大小,单位为条目数量。min_ttl
和max_ttl
分别设置缓存的最小和最大 TTL 值,单位为秒。 -
plugins
: 配置插件。name
指定插件名称,config
为插件的配置参数。query_log
插件可以记录 DNS 查询日志。
三、启动 mosdns
在 mosdns 的目录下执行以下命令启动 mosdns:
bash
./mosdns -c config.yaml
四、测试 mosdns
可以使用 dig
命令测试 mosdns 是否正常工作:
bash
dig @127.0.0.1 google.com
如果能正确解析域名,则说明 mosdns 配置成功。
五、高级配置
除了上述基本配置外,mosdns 还提供了许多高级配置选项,可以满足更复杂的需求。
-
自定义 DNS 规则: 可以使用
rewrite
规则重写 DNS 查询,例如将特定域名解析到指定的 IP 地址。 -
负载均衡: 可以配置多个上游 DNS 服务器,并使用不同的负载均衡策略,例如轮询、权重等。
-
DNSSEC 验证: 可以启用 DNSSEC 验证,提高 DNS 解析的安全性。
-
访问控制: 可以配置访问控制列表 (ACL),限制特定客户端的访问权限。
六、使用 Docker 运行 mosdns
可以使用 Docker 镜像更方便地部署 mosdns:
- 拉取 Docker 镜像:
bash
docker pull irinesistiana/mosdns:latest
-
创建配置文件: 创建一个名为
config.yaml
的配置文件,内容与上述配置示例相同。 -
运行 Docker 容器:
bash
docker run -d --name mosdns -p 53:53/udp -p 53:53/tcp -v $(pwd)/config.yaml:/config/config.yaml irinesistiana/mosdns:latest
该命令将 config.yaml
文件挂载到容器内,并将容器的 53 端口映射到主机的 53 端口。
七、总结
mosdns 是一款功能强大且易于配置的 DNS 解析器。本指南介绍了 mosdns 的基本配置方法,以及一些高级配置选项。通过学习本指南,你可以快速搭建一个安全、快速且可靠的 DNS 解析服务。 希望这篇指南能帮助你更好地理解和使用 mosdns。 建议你查阅 mosdns 的官方文档 (https://mosdns.org/) 获取更详细的信息和更高级的配置示例。 不断尝试和探索,才能更好地掌握 mosdns 的强大功能。 例如,你可以尝试配置不同的上游 DNS 服务器,比较它们的性能和稳定性; 你也可以尝试配置 DNSSEC 验证,提高 DNS 解析的安全性; 你还可以尝试配置自定义 DNS 规则,实现更灵活的 DNS 解析控制。 mosdns 的可能性是无限的, 等待你去探索和发现。
八、常见问题解答
-
mosdns 无法启动: 检查配置文件是否正确,以及端口是否被占用。
-
DNS 解析失败: 检查上游 DNS 服务器是否可用,以及网络连接是否正常。
-
如何更新 mosdns: 下载最新版本的二进制文件,替换旧版本即可。 如果是使用 Docker,则需要拉取最新的 Docker 镜像并重新启动容器。
-
如何查看日志: 日志文件路径在
config.yaml
文件中配置,默认是mosdns.log
。
通过以上步骤,你就可以从零开始搭建一个属于自己的高性能 DNS 解析服务。 记住,实践出真知, 多多尝试不同的配置,才能更好地理解和运用 mosdns。 祝你使用愉快!