本帖最后由 SometimesNaⅠve 于 2025-5-17 15:13 编辑
最后编辑于 2025/05/16
网盘pdf更新于 2025/05/16
大家直接去看网盘的pdf吧,帖子无法完全展示配置!
注意:最新版配置文件适用于Release 46.1/Release 46,旧版本可以在 网盘->旧版配置文件归档 中找到。
如果要升级到新版配置,请重新阅读第一部分并替换网盘中的全部文件!
升级后建议删除持久缓存文件以免出现首次查询超时,正确的做法是:
① 关闭SmartDNS
② 删除/mnt/sda3/smartdns/cache/smartdns.cache
③ 开启SmartDNS
- 2025/05/15 更新chinalist “全局防火墙”list,OverSea组由HiNet DNS替换TWNIC DNS,更新OpenDNS IP,将Google DNS移至“全局防火墙”组,从此版本起一部分OverSea组上游服务器将走代理查询,请注意同步替换PSW中不走代理的IP和走代理的IP,China组新增几组DNSPod通过ECS查询以获得深圳旁边的解析结果
- 2024/11/16 更新360、NextDNS_TW、NextDNS_KR的IP地址,新增DNS.SB_US、NextDNS_US,移除BlahDNS,更新chinalist “全局防火墙”list
- 2024/10/31 更新chinalist “全局防火墙”list,为新版PSW修订教程
- 2024/09/07 新增“全局防火墙”list,主DNS(6053端口)对于在“全局防火墙”list中的域名不再测速,一些细节优化,改进了PSW服务器端的设置,为本机SmartDNS准备的节点不会暴露到公网中
- 2024/08/03 移除Quad9以解决ssh无法连接远端服务器的奇葩问题
- 2024/07/03 配置文件更新至Release 46,OverSea组新增Cloudflare(dns.cloudflare.com)、BlahDNS_JP、BlahDNS_SG,“全局防火墙”组新增NextDNS(Remote)、ControlD(Remote)以增强可用性,默认不返回CNAME以合并多CDN解析结果,更新chinalist到最新版,文字说明适配最新版PSW
- 2024/06/16 “全局防火墙”组不再包含IPv6服务器,同步移除PSW规则列表-->代理列表-->走代理的IP中的IPv6地址 一些细节优化
- 2024/06/01 OverSea组新增Quad9 ECS (dns11.quad9.net) 一些细节优化 教程适配最新版PSW 更新chinalist到最新版
- 2024/03/01 配置文件更新至Release 45,旧版本可以在 网盘->旧版配置文件归档 中找到,更新chinalist到最新版
- 2024/02/17 OverSea组同时包含DoT、DoH服务器以进一步提升连通性,请注意从此版本起PSW需要配置不走代理的IP 更新chinalist到最新版
- 2024/01/28 优化测速逻辑,对低配置机器更友好 目前暂不在配置文件中启用SPKI Pin 校验,如果你的网络环境十分"复杂"可以考虑自行配置
- 2023/12/03 新增更多的 OverSea 组服务器(HK/TW/JP/KR/SG),并为每个服务器增加 SPKI Pin 校验,微调过期缓存参数,更新 chinalist 到最新版
- ……
写在前面
SmartDNS是一个争议很大的软件,不过此帖只是分享我的配置,我们不讨论它到底有没有用。
无论你是否需要Dnsmasq解析IPv6地址,都需要开启OpenWrt WAN口IPv6接入(默认就是开启的),IPv6可以大幅提升OverSea组的连通性!
之前有人问过能不能把SmartDNS配置好放在固件里,我想了想还是单开一个帖子分享我的配置吧……
从2020年用到现在我从来没看过别人的教程,不排除与其他人的配置撞车,如果你有更好的配置建议欢迎跟帖讨论。
使用我这套配置可以放心开启Dnsmasq的IPv6地址解析,即使你的节点没有支持IPv6也不会影响PSW的正常使用。
注意:开启PSW后任何涉及重启Dnsmasq的操作都会导致PSW的分流规则失效!!! 解决方法是重启PSW。
本帖分为3部分:
第一部分我会教大家如何导入文件来配置(想抄作业的只看第一部分)
第二部分我会放出配置的完整截图,并解释为什么(不要看图抄,截图无法展现全部配置)
第三部分是WAN口重启导致分流失效的解决方案
本教程使用SmartDNS配合PSW,如果你需要配置其他的工具,请自行修改配置。
配置文件的网盘链接:https://drive.google.com/drive/folders/1y7PMRqyQcndJ5Vp8Qf4CSzqScc2fFsUr
请确保你的SmartDNS版本为Release 46.1/Release 46
官方仓库发行版下载:Releases · pymumu/smartdns (github.com)
想要上传配置文件到软路由中,你需要使用WinSCP:WinSCP :: Official Site :: Download
第一部分 配置教程
我们需要使用安装OpenWrt系统硬盘的剩余空间来存放缓存文件、域名集文件和日志文件,以后在升级固件的时候只要升级前后分区大小没有变化这些文件就可以一直留存。
推荐重新写盘安装OpenWrt,并重新安装官方仓库发行版ipk安装包以确保以下操作与我一致。
刷写完固件启动后,在系统-->磁盘管理找到你的磁盘,点击更改
在"Free Space"处点击新建-->格式化-->文件系统选择ext4
静静等待格式化完成后,手动重启软路由
此时在系统-->磁盘管理中可以看到,刚刚新建的分区/dev/sda3被挂载到/mnt/sda3上。
以上操作完成后,使用WinSCP连接到OpenWrt,按步骤执行以下操作:
① 将网盘中配置文件smartdns上传到/etc/config/目录下,替换原来的文件
② 将网盘中文件夹smartdns上传到/mnt/sda3/目录下,这里面包含了缓存目录(/mnt/sda3/smartdns/cache/)、域名集目录(/mnt/sda3/smartdns/domain_set/)、日志目录(/mnt/sda3/smartdns/log/)
③ 将网盘中配置文件custom.conf上传到/etc/smartdns/目录下,替换原来的文件
④ PSW更改以下配置:
基本设置-->DNS
DNS分流改为 China-DNS-NG
直连DNS请求协议改为 通过UDP请求DNS
直连DNS改为 127.0.0.1:6053
过滤模式改为 通过UDP请求DNS
远程DNS改为 127.0.0.1:5335
默认DNS选择 智能,不接受直连DNS空响应
勾选DNS重定向
保存&应用
高级设置-->转发配置
TCP转发端口改为仅网页 或者手动输入 80,443
保存&应用
规则列表-->直连列表-->不走代理的IP(下面的框)
粘贴以下文本,保存&应用
- #Ali
- 223.5.5.5
- 223.6.6.6
- 2400:3200::1
- 2400:3200:baba::1
- #DNSPod
- 1.12.12.12
- 120.53.53.53
- #360
- 101.198.191.4
- 101.199.254.118
- 106.63.24.74
- 111.7.73.60
- 112.65.69.15
- 123.6.48.18
- 180.163.249.75
- 221.181.72.233
- 36.99.170.86
- 39.156.84.71
- #OpenDNS
- 208.67.222.222
- 208.67.220.220
- 2620:119:35::35
- 2620:119:53::53
- 146.112.41.2
- 146.112.41.5
- 2620:119:fc::2
- 2620:119:fc::5
- #HiNet
- 168.95.1.1
- 168.95.192.1
- 2001:b000:168::1
- 2001:b000:168::2
- #Cloudflare
- 104.16.132.229
- 104.16.133.229
- 2606:4700::6810:84e5
- 2606:4700::6810:85e5
复制代码 规则列表-->代理列表-->走代理的IP(下面的框)
粘贴以下文本,保存&应用
- #Google(Remote)
- 8.8.8.8
- 8.8.4.4
- #Cloudflare(Remote)
- 1.1.1.1
- 1.0.0.1
- #DNS.SB
- #HK
- 45.125.0.26
- #JP
- 103.121.210.210
- 202.5.221.130
- #KR
- 3.34.32.82
- #SG
- 165.22.61.129
- #NextDNS
- #HK
- 45.11.104.186
- #TW
- 45.150.242.161
- #JP
- 103.170.232.254
- #KR
- 103.127.124.46
- #SG
- 194.156.163.172
复制代码 服务器端
勾选启用,在用户管理中点击添加 按下图所示填写配置,保存&应用
(你可以自定义用户名、密码和端口,记得要同步修改SmartDNS-->代理服务器设置 中的参数)
⑤SmartDNS勾选启用,保存&应用;PSW选中节点后勾选启用,保存&应用
至此配置完成。
⑥ 详见 “第三部分 目前已知瑕疵及解决方案”
终端输入以下命令可以查看审计日志
- tail -f /mnt/sda3/smartdns/log/smartdns-audit.log
复制代码
终端输入以下命令可以查看错误日志- tail -f /mnt/sda3/smartdns/log/smartdns.log
复制代码
第二部分 配置详解
基本设置
高级设置
第二DNS服务器
如果节点支持IPv6且PSW已经开启了IPv6透明代理,此处可以取消勾选停用IPv6地址解析
DNS64服务器配置:保持默认
代理服务器配置(此处配置要与PSW-->服务器端中的配置相对应,可以自定义用户名、密码和端口)
- socks5://smartdns:123456@127.0.0.1:11111
复制代码 自定义设置
上游服务器
(注意:截图无法完整体现配置信息,此处只做展示,具体使用请直接替换网盘中的配置文件)
如果你的网络环境非常恶劣,可以考虑为每个服务器都配置 TLS 主机名校验和 SPKI Pin 校验
SPKI指纹获取方法(确保在网络环境可信的Linux主机上运行):
- #IPv4地址(以Google DoT服务器为例)
- echo | openssl s_client -connect 8.8.4.4:853 2>/dev/null | openssl x509 -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
- #IPv6地址(以Google DoT服务器为例)
- echo | openssl s_client -connect [2001:4860:4860::8844]:853 2>/dev/null | openssl x509 -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
复制代码
Q: 为什么TTL只给60秒?缓存结果岂不是迅速过期?
A: 客户端拿到的解析结果会迅速过期,但是SmartDNS有过期域名缓存功能,利用这个机制可以尽可能频繁地刷新缓存条目,而且可以在PSW切换不同地区节点的时候让客户端尽快收到正确的解析结果(最坏情况小于120秒,最好情况1秒),虽然现在的代理工具已经非常智能,有sniffing功能保证即使你拿着错误的IP地址仍然可以打开对应的网站,但是正确的解析结果总是会让上网更顺畅。
Q: 为什么你添加了那么多的上游DNS?不会慢吗?
A: 在域名首次查询时会返回上游服务器中首先有ping值的结果,TTL为10秒,TTL过期后再次查询就会返回最快的几个IP,过期缓存机制会保证以后的查询都返回最快的几个IP。
Q: 360 DNS真的安全吗?我不敢用。
A: 自定义设置中有规则使得我们使用国内DNS(China服务器组)只会查询chinalist列表中的域名,海外DNS(OverSea服务器组)会查询不在“全局防火墙”list中的域名。
Q: 解析的逻辑是什么?
A:
第一DNS(6053端口):
如果域名在chinalist中,仅使用China服务器组直连解析
如果域名在“全局防火墙”list中,仅使用OverSea服务器组直连解析
如果域名既不在chinalist又不在“全局防火墙”list中,同时用China组和OverSea组解析
第二DNS(5335端口):
始终使用“全局防火墙”服务器组,经由PSW自定义的socks节点走代理解析
在OverSea组中,OpenDNS(1~8)支持EDNS Client Subnet,通过直连发送请求可以根据你的IP段返回与其最近的解析结果。
第三部分 目前已知瑕疵及解决方案
OpenWrt路由器WAN口重新连接后(一般发生在运营商定时主动断开PPPoE以回收IP),Dnsmasq会重启,PSW分流规则失效且会出现IP泄漏,这会导致某些靠检测IP判断用户地理位置的网站不可用(如Netflix) 此问题在手动重启PSW后恢复正常。
解决方案(以下脚本文件也可以在网盘中下载):
由于平台有关键字替换,此处无法展示脚本文件细节 网盘pdf有详细的说明。
|