smartdns icon indicating copy to clipboard operation
smartdns copied to clipboard

需求建议:优先返回属于特定IP段的解析结果。

Open wy16W2pIilK1xgqN opened this issue 4 years ago • 0 comments

需求应用场景

抽象描述:

任意域名,解析结果中,有属于某个特定的IP段的地址,则不考虑其它解析结果,直接返回该地址。

具体行为描述

特定IP段需要配置,
假设为:10.10.0.0/16
要查询的域名,为任意域名,可按需指定也可不指定,
假设为:aaa.bbb

smartdns 在上游解析 aaa.bbb  的结果为:
1.2.3.4
22.33.44.55
10.10.12.34

返回下游的结果,不考虑其它地址,
直接返回 aaa.bbb 的解析为 10.10.12.34

需求原因

对于该功能我暂时命名为:优先IP地址(fakedns)

实际上是一个不依赖于 IPSET 的域名分流功能。 主要目的是配合某软件的“虚拟 DNS 服务器‘功能,也可配合某些内网缓存服务。

域名分流过程中一般有三个角色:

  • 执行分流的路由器(代指所有类似功能的软硬件)
  • 写入分流地址的 DNS 软件
  • 承接流量的代理软件

长期以来,写入分流依赖于 linux 内核的 IPSET 模块,这并非是一个通用的功能 多数网络设备是无法使用该功能的,且配置复杂管理。

如果实现了 优先IP地址(fakedns) 功能

代理软件,作为 SmartDNS 上游 DNS ,声明可代理的IP段后,不用处理全部的 DNS 流量 也不用考虑代理流量的出口判断,实现性能最大化。

路由器,只需进行简单的固定IP段转发,降低了对于设备的要求和使用的复杂性。 任何三层网络设备都可进行分流,大大扩展了可用设备的范围,

居中调度的 SmartDNS ,减少了大量的域名规则,也无需运行在路由器上,实现了部署的灵活性。

对于用户,配置更简单,可靠性也可维护性也有所提高。

建议的方案

# 任意域名,设定 优先IP地址(fakedns)

fakedns /10.10.0.0/16
fakedns /[fcff::]/7

# 特定域名,设定 优先IP地址(fakedns)

fakedns /aaa.com/10.10.0.0/16
fakedns /.com/[fcff::]/7

# 优先IP地址(fakedns)的 TTL 生存时间。
# 默认是接受服务器返回的TTL,但考虑到各种意外因素。
# 该值最好能和一般查询的TTL值分开,单独指定

fakedns /aaa.com/10.10.0.0/16 -rr-ttl-min 10

# 只接受特定服务器的解析,可用于 优先IP 
# 可以避免某些意外以及安全问题。

fakedns /10.10.0.0/16 -group g1
fakedns /.com/[fcff::]/7 -group g1

# 特殊用法,指定的服务器如果返回任何IP地址,
# 则该 IP 视作 优先IP地址(fakedns),如果返回其它结果则无视。
# 继续向其它服务器查询。

fakedns /0.0.0.0/  -group g1
fakedns /.com/[::]/   -group g1

设备信息

  1. 设备信息(CPU,厂家)

  2. 固件信息

wy16W2pIilK1xgqN avatar Apr 03 '21 17:04 wy16W2pIilK1xgqN