Add Edns client subnet

This commit is contained in:
Nick Peng
2023-05-20 22:20:55 +08:00
parent 4a60414025
commit 37f6d4908c
5 changed files with 87 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
---
hide:
- toc
---
# EDNS客户端子网
SmartDNS提供了设置`edns-client-subnet`的能力edns-client-subnet原本功能是用于上游DNS服务器之间的一个扩展通信协议。一般情况下本地DNS无需配置。
但SmartDNS提供了测速和通过代理查询的能力在下面的场景下则可设置edns-client-subnet优化网络查询结果
## 跨运营商的IP优化
运营商的DNS服务器都是将自己网络的网站或CDN服务器IP给客户端比如qq.com用联通的DNS查询的就是联通网段的IP你用电信的查询的就是电信网段的IP。运营商一般不会给你跨网IP。除非某个网站就只有在某个运营商的网络。但某些网站运营商自己网络的ip可能要跨好几个省时延比较大不如同省跨运营商去访问。这时可以通过edns-client-subnet能力查询到一个异网的IP然后再让smartdns测速后返回时延较小的IP给客户端。
### 配置
假设你的宽带是广东联通。那么你可以配置如下:
```shell
server 8.8.8.8 -subnet [广东电信IP]
```
这样8.8.8.8就会返回网站为广东电信网段的IP地址smartdns会根据测速结果返回IP给客户端。
-subnet ipv4和ipv6都配置。
网段信息[http://ipcn.chacuo.net/](http://ipcn.chacuo.net)
## 通过代理查询
当smartdns通过代理查询时对应的查询结果是根据代理服务器出口优化的查询结果如果想要通过代理查询的结果和本地运营商优化则可以通过配置edns-client-subnet来优化。
### 配置
假设广东电信的用户通过北京的代理查询DNS那么可以配置如下
```shell
server 8.8.8.8 -proxy beijing -subnet [广东电信IP]
```
这样即使通过北京代理到8.8.8.8查询结果但因为指定了客户端子网为广东电信IP那么8.8.8.8就会范围合适广东电信网络的IP地址。

View File

@@ -116,6 +116,14 @@ SmartDNS在早期版本只会返回一个IP地址这一个IP地址速度
值得注意的是,上述机制,是在开启了缓存的情况下,如果缓存未开启,则仍然返回最快的一个地址。
## DDNS处理
SMARTDNS默认启用了过期缓存当使用DDNS时有可能造成IP地址变化后访问失败的情况下可以通过如下方式关闭对应DDNS域名的过期缓存。
```shell
domain-rules /ddns.com/ --no-serve-expired
```
## 更多问题
如有更多问题请查阅或提交issue: [https://github.com/pymumu/smartdns/issues](https://github.com/pymumu/smartdns/issues)