0%

初入树莓派4----自建无污染DNS

摘要

  • dnsmasq简单自建DNS服务器

更新

1
2
18.06.26 初始化
19.01.05 重新整理

导语

  • ISP 还有无良的第三方,搞的上个网 DNS 被污染的不成样子.

需求

  • 国内/国外分流,国内网站交给国内DNS,国外的交给墙外无污染DNS.
  • 对CDN友好,访问百度,我在广州,你DNS分配个青岛的地址要闹那样.
  • 带有DNS缓存,加速解析.
  • 跨平台(小),出门不能一直带着路由器啊.

方案

  • 国内/国外分流

  • 分流可使用ChinaDNS.

    • 无污染DNS
      • 墙外DNS,但udp-53端口,基本被劫持.需要特别方式规避.
        • 非标准DNS端口 例如 opendns的udp-5353端口 tcp-443端口
        • DNS over HTTPS ,支持最好的是google-dns及 Cloudflare-dns,其中google-dns比较麻烦,还需要自行寻找可用的google ip地址.
        • DNS over TLS ,与上一个类似.
        • DNSCrypt ,支持此项的公共DNS很多,与此被干扰的也比较厉害.
      • ss/ssr-vpn-v2ray 等代理解析dns.
      • 一直可用的中科大DNS 北方还好.
  • 对CDN友好选择支持EDNS的上游DNS,国内主流都支持了,除了114.

  • 带有DNS缓存,这个用的较多的 dnsmasq ,当作下游DNS.

  • 跨平台(大雾),一般都在路由器搞搞.

最终定型

  • dnsmasq(可选) + overture + 上游加密DNS(可选)

  • overture DNS分流净化器,go语言编写,解决chinadns不稳定而编写.

    • 得益于go的跨平台能力,基本通吃.
    • 已经支持DNS缓存
    • 支持tcp / udp DNS查询
    • 比chinadns更加稳定.
  • 实际上如果只需要一个纯净DNS,只使用overture就足够了.

  • 当需要广告过滤时,添加dnsmasq.

  • overture可使用 非标准dns端口查询dns,解决上游DNS污染问题.非标准端口被大量干扰或dns查询全程保密,才需要使用DNSCrypt DNS over HTTPS等额外措施.

实施

  • 下载最新releases

  • 解压 以win-64为例,打开配置文件

    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
    {
    "BindAddress": ":53",//本地监听端口
    "PrimaryDNS": [//主DNS (国内) 可设置多组
    {
    "Name": "DNSPod",
    "Address": "119.29.29.29:53",//腾讯DNS还可以 支持EDNS
    "Protocol": "udp",//UDP查询 TCP查询
    "SOCKS5Address": "",
    "Timeout": 6,
    "EDNSClientSubnet": {//EDNS支持
    "Policy": "auto",//disable 关闭 auto启用
    "ExternalIP": ""//EDNS查询用IP ,设置则使用此IP
    }
    }
    ],
    "AlternativeDNS": [//无污染DNS 可设置多组
    {
    "Name": "OpenDNS",//OpenDNS
    "Address": "208.67.222.222:5353",//非标准dns端口
    "Protocol": "udp",//走udp
    "SOCKS5Address": "",
    "Timeout": 6,
    "EDNSClientSubnet": {//edns只支持udp so 选择了udp的非标准端口
    "Policy": "auto",
    "ExternalIP": ""
    }
    }
    ],
    "OnlyPrimaryDNS": false,//只启用主DNS?
    "RedirectIPv6Record": false,//重定向 IPV6 DNS ?
    "IPNetworkFile": "./ip_network_sample",//ip文件
    "DomainFile": "./domain_sample",//域名文件
    "DomainBase64Decode": true,//域名文件使用Base64编码?
    "HostsFile": "./hosts_sample",//host文件
    "MinimumTTL": 0,//dns的 ttl设置,0禁用
    "CacheSize" : 500,//域名缓存的数量.按照实际使用习惯配置
    "RejectQtype": [255]
    }
  • 保存文件

  • 启动exe即可

  • windows 下可以使用 nssm 包装成windows的server,做到开机启动.

  • linux 下,各种脚本为所欲为.