Git Product home page Git Product logo

pure-dns's Introduction

Pure-DNS

优点

多协议

支持提供tcp和udp的dns服务,并且支持dns over udp/tcp/tcp-tls/https(doh)/quic/sdns(DNSCrypt) 上游服务。

黑名单模式

支持设定cidr格式的ipv4和ipv6黑名单,避免网络提供商返回的明显错误的dns应答。

加速响应

从多个上游选择最快的一个响应。

易调试

所有dns请求都会返回一个dns.provider的TXT记录,携带了本次请求选择的上游和本次请求的耗时

体积小

安装upx后,使用 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" . && upx -9 pure-dns 命令编译并压缩,可执行文件小于3MB。

用法

Linux

  1. 在右侧 Releases 根据系统和cpu架构下载编译好的二进制文件
  2. 解压并且复制到 /usr/bin
tar -xzf ./pure-dns_0.1.7_linux_amd64.tar.gz && sudo mv pure-dns /usr/bin/pure-dns && sudo chmod +x /usr/bin/pure-dns
  1. 参考下面配置(要删除//注释的部分),创建或修改 /etc/pure-dns/setting.json 配置文件
  2. 启动服务器
$ pure-dns
2022/04/30 00:00:00 Starting DNS server on udp://0.0.0.0:5353

Windows

  1. 在右侧Releases根据系统和cpu架构下载编译好的二进制文件,并且解压
  2. 参考下面配置(要删除//注释的部分),在 pure-dns.exe 相同目录下创建 setting.json
  3. 在当前目录打开命令行界面,执行 ./pure-dns.exe

配置

配置文件路径 /etc/pure-dns/setting.json

{
  "net": "udp",                     // "udp" | "tcp"
  "listen": "0.0.0.0:53",           // "<ip>:<port>"
  "timeout": 2000,                  // 2000ms
  "upstreams": [
    {
      "net": "udp",                 // "udp" | "tcp" | "tcp-tls" | "https" | "quic" | "sdns"
      "address": "8.8.8.8:53",
      "mode": "dnsproxy"            // optional(default hybrid). when using hybrid mode the upstream of udp/tcp/tcp-tls is provided by miekg/dns
    },
    {
      "net": "tcp",
      "address": "8.8.8.8:53",
      "mode": "hybrid"
    },
    {
      "net": "tcp-tls",
      "address": "1.1.1.1:853"
    },
    {
      "net": "https",
      "address": "dns.adguard.com/dns-query"
    },
    {
      "net": "quic",
      "address": "dns.adguard.com:853"
    },
    {
      "net": "sdns",
      "address": "AQIAAAAAAAAAFDE3Ni4xMDMuMTMwLjEzMDo1NDQzINErR_JS3PLCu_iZEIbq95zkSV2LFsigxDIuUso_OQhzIjIuZG5zY3J5cHQuZGVmYXVsdC5uczEuYWRndWFyZC5jb20"
    }
  ],
  "blackList": [
    "192.168.16.0/24",    // 必须是CIDR格式
    "fe80::0/128"         // 也支持ipv6
  ]
}

未来的新功能

  • 统计功能
  • 支持提供tls服务
  • 对于不可信dns上游限制可返回的ip段

不会添加的功能

  • dns缓存和域名分流。因为本项目只是个单纯的dns转发器,开多个pure-dns实例然后使用dnsmasq作为缓存和分流是更好的选择。

pure-dns's People

Contributors

timzhong2000 avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.