mos-chinadns

command module
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2020 License: GPL-3.0 Imports: 22 Imported by: 0

README

mos-chinadns

一个简单的DNS解析器,实现基于IP的分流,支持DoH,支持IPv6,支持EDNS Client Subnet


命令帮助

-c string
        [路径]json配置文件路径
-gen string
        [路径]生成一个json配置文件模板至该路径
-dir string
        [路径]变更程序的工作目录

-v    调试模式,更多的log输出

使用方式请参考配置示例

配置示例

如果不清楚如何配置,以下是一种常用的防污染与分流配置:

下文的必需表示该参数这个分流方案的必要参数,不表示是程序的必要参数

  • 监听地址(bind_addr)(必需):按需设置。
  • 本地服务器(local-server)(必需):一个低延时但会被污染大陆服务器,用于解析大陆域名。比如阿里DNS 223.5.5.5。
  • 远程服务器(remote-server)(必需):一个无污染的服务器。用于解析非大陆域名。比如OpenDNS的非常规端口 208.67.222.222:443。
  • 本地服务器IP白名单(local-allowed-ip-list)(必需):中国大陆IP列表,用于区别大陆与非大陆结果。最新的列表可以从这里获得。
  • 本地服务器域名黑名单(local-blocked-domain-list)(非必需):强制这些域名用远程服务器解析。用于强制打开这些域名的国外版而非中国版。
  • 本地服务器IP黑名单(local-blocked-ip-list)(非必需):希望被屏蔽的IP列表,比如运营商的广告服务器IP。

json配置文件模板

直接复制使用需先去掉注释

{
    "bind_addr": "127.0.0.1:53",            // IP:端口
    "local_server": "223.5.5.5:53",         // IP:端口
    "remote_server": "208.67.222.222:443",  // IP:端口
    "remote_server_url": "",                // URL
    "remote_server_skip_verify": false,     // ture 或 false
    "remote_server_delay_start": 0,         // 整数 单位毫秒
    "local_allowed_ip_list": "/path/to/your/chn/ip/list",
    "local_blocked_ip_list": "",            // 路径
    "local_blocked_domain_list": "",        // 路径
    "remote_ecs_subnet": ""                 // CIDR 如:1.2.3.0/24
}

远程服务器(remote-server)支持DoH,只需将服务器IP地址填入remote_server,URL填入remote_server_url

如使用Google 的 DNS over Https,只需填入:

...
"remote_server": "8.8.8.8:443",
"remote_server_url": "https://dns.google/dns-query",
...

其他非必要选项说明

  • remote_server_skip_verify: 跳过DoH服务器身份验证。高危选项,会破坏DoH的安全性,仅在知道自己在干什么的情况下启用
  • remote_server_delay_start: 如果在设定时间(单位毫秒)后local_server无响应,则开始请求remote_server。将该值设定为local_server的延时可显著降低请求remote_server的次数。0表示将同时发送请求。
  • remote_ecs_subnet: 关于ECS作用请参考EDNS Client Subnet仅少数DNS服务商提供ECS支持

其他使用方式

  • 仅指定remote_server。当作普通带ECS的DoH客户端使用

本地服务器黑白名单

工作流程

  1. 如果指定了域名黑名单->匹配域名->黑名单中的域名将被远程服务器解析
  2. 如果指定了IP黑名单->匹配本地服务器返回的IP->丢弃黑名单中的结果。
  3. 如果指定了IP白名单->匹配本地服务器返回的IP->不在白名单的结果将被丢弃。

域名黑名单格式

由正则表达式构成,每个表达式一行

IP黑/白名单格式

由单个IP或CIDR构成,每个表达式一行,支持IPv6,比如:

1.0.1.0/24
1.0.2.0/23
1.0.8.0/21
2001:dd8:1a::/48

2.2.2.2
3.3.3.3
2001:ccd:1a

Open Source Components / Libraries

部分设计参考

依赖

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL