本帖最后由 SometimesNaⅠve 于 2024-9-7 22:57 编辑
最后编辑于 2024/09/07
网盘pdf更新于 2024/07/11
注意:最新版配置文件只适用于Release 46,旧版本可以在 网盘->旧版配置文件归档 中找到。
如果要升级到新版配置,请重新阅读第一部分并替换网盘中的全部文件!
可以不替换/mnt/sda3/smartdns/cache/ 以保留过期缓存文件。
- 2024/09/07 新增gfwlist,主DNS(6053端口)对于在gfwlist中的域名不再测速,一些细节优化,改进了PSW服务器端的设置,为本机SmartDNS准备的节点不会暴露到公网中
- 2024/08/03 移除Quad9以解决ssh无法连接远端服务器的奇葩问题
- 2024/07/03 配置文件更新至Release 46,OverSea组新增Cloudflare(dns.cloudflare.com)、BlahDNS_JP、BlahDNS_SG,GFW组新增NextDNS(Remote)、ControlD(Remote)以增强可用性,默认不返回CNAME以合并多CDN解析结果,更新chinalist到最新版,文字说明适配最新版PSW
- 2024/06/16 GFW组不再包含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
官方仓库发行版下载: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分流改为 Dnsmasq + China-DNS-NG
过滤模式改为 通过UDP请求DNS
远程DNS改为 127.0.0.1:5335
默认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.113.208
- 36.99.170.86
- 180.163.249.75
- 112.65.69.15
- 101.199.254.118
- 123.6.48.18
- 221.181.72.233
- 111.7.73.60
- 39.156.84.71
- #OpenDNS
- 208.67.222.222
- 208.67.220.220
- 2620:119:35::35
- 2620:119:53::53
- #Google
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
- #Cloudflare
- 104.16.132.229
- 104.16.133.229
- 2606:4700::6810:84e5
- 2606:4700::6810:85e5
- #TWNIC
- 101.101.101.101
- 101.102.103.104
- 2001:de4::101
- 2001:de4::102
- #IIJ
- 103.2.57.5
- 103.2.57.6
- 2001:300::5
- 2001:300::6
- #DNS.SB
- #HK
- 45.125.0.26
- 2403:2c80::26
- #JP
- 103.121.210.210
- 2403:fbc0:1000::babe
- 202.5.221.130
- 2403:ac80:1030::2
- #KR
- 3.34.32.82
- 2406:da12:6cb:df00:7a77:c387:2bed:613c
- #SG
- 165.22.61.129
- 2400:6180:0:d0::45a:b001
- #NextDNS
- #HK
- 45.11.104.186
- 2a00:11c0:17:429::3
- #TW
- 45.150.242.161
- 2407:b9c0:b001:2e8:5054:ff:fe80:b1c3
- #JP
- 103.170.232.254
- 2a0b:4341:b02:166:5054:ff:fe53:ab1
- #KR
- 103.127.124.46
- 2401:c080:1c01:ff9:5400:3ff:fe77:e880
- #SG
- 194.156.163.172
- 2401:c080:1400:7fa3:5400:4ff:fe73:5582
- #BlahDNS
- #JP
- 212.52.0.233
- 2406:ef80:4:1537::1
- #SG
- 103.167.150.45
- 2406:ef80:2:5ee4::1
复制代码
规则列表-->代理列表-->走代理的IP(下面的框)
粘贴以下文本,保存&应用
- #Cloudflare(Remote)
- 1.1.1.1
- 1.0.0.1
- #NextDNS(Remote)
- 45.90.28.0
- 45.90.30.0
- #ControlD(Remote)
- 76.76.2.11
复制代码
服务器端
勾选启用,在用户管理中点击添加 按下图所示填写配置,保存&应用
(你可以自定义用户名、密码和端口,记得要同步修改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
复制代码 自定义设置
- log-level notice
- log-file /mnt/sda3/smartdns/log/smartdns.log
- log-size 1M
- log-num 3
- audit-enable yes
- audit-file /mnt/sda3/smartdns/log/smartdns-audit.log
- audit-size 1M
- audit-num 3
- cache-file /mnt/sda3/smartdns/cache/smartdns.cache
- cache-checkpoint-time 120
- serve-expired-ttl 0
- serve-expired-reply-ttl 10
- serve-expired-prefetch-time 86400
- max-query-limit 0
- max-reply-ip-num 6
- dualstack-ip-selection-threshold 10
- dualstack-ip-allow-force-AAAA no
- force-no-CNAME yes
- expand-ptr-from-address yes
- dnsmasq-lease-file /tmp/dhcp.leases
- domain-set -name chinalist -file /mnt/sda3/smartdns/domain_set/chinalist.conf
- domain-set -name gfwlist -file /mnt/sda3/smartdns/domain_set/gfwlist.conf
- nameserver /domain-set:chinalist/China
- domain-rules /domain-set:gfwlist/ -speed-check-mode none
复制代码
上游服务器
(注意:截图无法完整体现配置信息,此处只做展示,具体使用请直接替换网盘中的配置文件)
如果你的网络环境非常恶劣,可以考虑为每个服务器都配置 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为1秒,过期缓存机制会保证以后的查询都返回最快的几个IP。
Q: 360 DNS真的安全吗?我不敢用。
A: 自定义设置中有规则使得我们使用国内DNS(China服务器组)只会查询chinalist列表中的域名,海外DNS(OverSea服务器组)会查询不在chinalist中的域名。
Q: 如果访问不在chinalist中的域名按照规则会使用OverSea组解析,是否会解析出海外IP?
A: OverSea组中,OpenDNS(1~8)、Google(1~8)支持EDNS Client Subnet,可以根据IP段返回与此IP段最近的解析结果。
我们再梳理一下解析的逻辑
第一DNS(6053端口):
如果域名在chinalist中,仅使用China服务器组直连解析
如果域名不在chinalist中,仅使用OverSea服务器组直连解析
第二DNS(5335端口):
始终使用GFW服务器组,走代理解析
第三部分 目前已知瑕疵及解决方案
OpenWrt路由器WAN口重新连接后(一般发生在运营商定时主动断开PPPoE以回收IP),Dnsmasq会重启,PSW分流规则失效且会出现IP泄漏,这会导致某些靠检测IP判断用户地理位置的网站不可用(如Netflix) 此问题在手动重启PSW后恢复正常。
解决方案(以下脚本文件也可以在网盘中下载):
由于平台有关键字替换,此处无法展示脚本文件细节 网盘pdf有详细的说明。
请不要胡乱输入以及粘贴、复制等方式灌水
请尊重作者、并共同维护网站的正常阅读,否则账户将会被限制发帖、回帖,并且积分可能会被清零,站内短信以及阅读权限等都会受到影响,谢谢。
具体限制方式:https://www.right.com.cn/forum/thread-8307840-1-1.html
|