搭建你的 DNS over HTTPS 服务器只需要运行 ./Arashi.Aoi --upstream 127.0.0.1
。
如果你得到了 Permission denied
,请运行 chmod +x ./Arashi.Aoi
来给予可执行权限。
或者使用 Docker。docker run -d -p 2020:2020 ghcr.io/mili-tan/arashidns.aoi --upstream 8.8.8.8
就这么简单,使用 --help
/ -?
来探索更多参数和获取帮助信息。
参数 | 说明 | 示例 |
---|---|---|
-? / --help |
显示帮助信息 | |
-l / --listen |
设置服务器监听地址和端口 | 127.0.0.1:2020 |
-u / --upstream |
设置上游查询源 DNS 服务器 IP 地址 | 8.8.8.8 |
-t / --timeout |
设置向上游查询的超时时间(毫秒) | 500 |
-r / --retries |
设置向上游查询的重试次数 | 5 |
-p / --perfix |
设置 DNS over HTTPS 的查询路径前缀 | "/dns-query" |
-c / --cache |
本地缓存设置 | full / flexible / none |
--log |
控制台日志输出设置 | full / dns-query / none |
--tcp |
启用向上游仅TCP查询 | |
--noecs |
强制停用主动EDNS Client Subnet | |
-s / --https |
启用 HTTPS(默认使用自签名证书,不推荐) | |
--chinalist |
使用 DNSPod D+ 分流,需要目录中包含 china_whitelist.list |
|
-pfx / --pfxfile |
设置 pfx 证书文件路径(可选密码)。 | "./cert.pfx" |
-pass / --pfxpass |
设置 pfx 证书密码 | "passw0rd " |
-pem / --pemfile |
设置 pem 证书文件路径 | "./cert.pem" |
-key / --keyfile |
设置 pem 证书密钥文件路径 | "./cert.key" |
通常只有在容器环境(如Docker)中运行时才需要设置它们,而且一般只需要设置 ARASHI_VAR
和 PORT
。
变量 | 说明 | 示例 |
---|---|---|
PORT |
设置服务器监听端口 | 2020 |
ARASHI_ANY |
设置服务器监听任意地址(0.0.0.0) | true |
ARASHI_VAR |
设置启动参数(见上文) | -u 127.0.0.1 -r 3 |
ARASHI_RUNNING_IN_CONTAINER |
只在没能正确识别容器环境情况下,才需要手动设置 | true |
- 只要双击就好,或是在 CMD 或 Powershell 中运行
./Arashi.Aoi.exe
,然后点击窗口最小化按钮。 - 使用 nssm 将 ArashiDNS.Aoi 注册为服务,作为服务它会在意外崩溃时重启。
- 运行
nohup ./Arashi.Aoi --upstream 127.0.0.1 &
或使用screen
,这或许可能不是一个很好的主意,但是 it just works (它就是能用) 。 - 使用 supervisor, pm2, monit, gosuv, 亦或是 systemd 作为进程守护程序,保持 ArashiDNS.Aoi 运行。
当 ct
的程序参数不为 dns-message
,且包含有效的 name
参数。 ArashiDNS.Aoi 将会提供 Google JSON API for DNS over HTTPS (DoH) 的兼容协议。参数也同样相同,但是 cd
, do
, random_padding
没有被实现,传入也将被忽略。
ArashiDNS.Aoi 包含较为完善的 IETF DNS-over-HTTPS (RFC 8484) 兼容性。GET
请求中需要包含有效的 dns
参数。
ArashiDNS.Aoi 包含完全的 IPv6 支持,但在很多时候,IPv4 仍是首选。你可能需要强制 AAAA
查询或手动设置 IPv6 监听地址。
EDNS-Client-Subnet 已默认启用,但是您的上游源 DNS 服务器也需要支持 EDNS-Client-Subnet 才能生效。如果您的服务托管在 ECS 或处于 CDN 之后,请求头中需要包含 X-Forwarded-For
或 X-Real-IP
。
如果你想要禁用 EDNS-Client-Subnet,请在您的客户端设置 EDNS-Client-Subnet IP 为 0.0.0.0
。
- 作为一个初学者,可能存在非常多的问题,还请多多谅解。
- 如果有 Bug 或者希望新增功能,请在 issues 中提出。
- 如果你添加了新的功能或者修正了问题,也请向我提交 PR,非常感谢。
我一直在使用 ReSharper,它真的可以说是令人惊叹的工具,使我的开发效率提升了数倍。
感谢 JetBrains 为本项目提供了 ReSharper 开源许可证授权。
如果没有开源软件与社区,就不会有 ArashiDNS.Aoi 的诞生。感谢那些支持开源的人们。
请查阅 Credits ,其中包含了我们的协作者与使用到的其他开源软件。
Copyright (c) 2020 Milkey Tan. Code released under the Mozilla Public License 2.0.
ArashiDNS™ 是 Milkey Tan 的专有商标。