简介
用 Rust 重写的高性能 DNS 服务,灵感来自 MosDNS,为复杂策略、加密上游和系统联动而设计。
快速开始
Docker Compose
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| services: oxidns: image: svenshi/oxidns:latest container_name: oxidns restart: unless-stopped ports: - "53:53/udp" - "53:53/tcp" - "443:443/udp" - "443:443/tcp" - "853:853/udp" - "853:853/tcp" - "9199:9199/tcp" volumes: - ./config.yaml:/etc/oxidns/config.yaml - ./webui:/etc/oxidns/webui - ./ruler:/etc/oxidns/ruler - ./cert:/etc/oxidns/cert
|
启动:
WebUI
需要自行构建前端,前端代码在仓库源码的 webui 目录下,构建后输出在 /webui/out 目录。
将out目录挂载到容器的 /etc/oxidns/webui 目录下。
在 config.yaml 中配置 WebUI 登录密码。
1 2 3 4 5 6 7 8 9 10
| api: http: listen: 0.0.0.0:9199 auth: type: basic username: admin password: passwd webui: root: /etc/oxidns/webui index: index.html
|
- 访问:http://localhost:9199 输入用户名和密码即可登录。
插件配置
在 config.yaml 中配置插件,参考官方文档的示例场景。(https://oxidns.org/scenarios)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
| plugins: - tag: metrics_main type: metrics_collector args: name: home - tag: local_hosts type: hosts args: entries: - full:router.lan 192.168.1.1 - full:nas.lan 192.168.1.20 - domain:svc.lan 192.168.10.10 short_circuit: true - tag: ad_rules type: adguard_rule args: files: - /etc/oxidns/ruler/anti-adguard.txt - tag: blocked type: sequence args: - exec: "black_hole 0.0.0.0 ::" - exec: accept - tag: cache_main type: cache args: size: 8192 short_circuit: true cache_negative: true - tag: forward_main type: forward args: upstreams: - tag: 18bit_dot addr: tls://dns.18bit.cn:853 insecure_skip_verify: false enable_http3: false - tag: Ali_dot addr: tls://dns.alidns.com:853 insecure_skip_verify: false enable_http3: false - tag: TX_dot addr: tls://dot.pub:853 insecure_skip_verify: false enable_http3: false - tag: cloudflare_dot addr: tls://1dot1dot1dot1.cloudflare-dns.com:853 insecure_skip_verify: false enable_http3: false short_circuit: false - tag: seq_main type: sequence args: - exec: $metrics_main - exec: $local_hosts - matches: question $ad_rules exec: goto blocked - exec: $cache_main - matches: "!has_resp" exec: $forward_main - tag: udp_lan type: udp_server args: entry: seq_main listen: :53 - tag: tcp_lan type: tcp_server args: entry: seq_main listen: :853 cert: /etc/oxidns/cert/fullchain.pem key: /etc/oxidns/cert/privkey.pem - tag: dns_on_https type: http_server args: entries: - path: /dns-query exec: seq_main listen: :443 cert: /etc/oxidns/cert/fullchain.pem key: /etc/oxidns/cert/privkey.pem enable_http3: false - tag: ad_rules_download type: download args: downloads: - url: https://anti-ad.net/adguard.txt dir: /etc/oxidns/ruler/ filename: anti-adguard.txt startup_if_missing: true log: level: info rotation: type: daily
|