找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 106062|回复: 1387

[暂时无法划分类别的讨论] 来,教你用超简易的方法实现 SmartDNS 分组,让 DNS 解析内外完全分离,简单易懂

 火... [复制链接]
本帖最后由 lriigiht 于 2023-5-23 11:17 编辑

延伸阅读:




2023年5月23日更新:新版已有 bootstrap参数
https://pymumu.github.io/smartdns/config/bootstrap-dns/

leochengxp 网友点评说:
smartdns 没有 bootstrap 参数,你自己加一个-group bootstrap,意欲何为?自己骗自己吗?



网上经常充斥着这类似懂非懂的人。
我也很无奈。

是的,SmartDNS 确实没有(至少目前版本确实没有)bootstrap 参数。
没有就不能变相实现吗?
通过设定一个分组(里面为 IP 类型的上游 DNS),专门用来把 网址类型 的上游 DNS 解析成 IP,
这不就是 bootstrap ?bootstrap 不就是干这个的?

这种实现方法也是 SmartDNS 作者在回复网友 issue 中提到过的。

如果我分组不叫 bootstrap 是否在你眼中就不是自欺欺人了?

哎。



小补充:
  • SmartDNS,虽然下面的分组方法,第一 DNS 我们用不到,为了避免奇奇怪怪的问题,开关还是要打开。
  • 第一 DNS 的 重定向 有好几个人问怎么选。选 None
  • 比较新版本的 PW,DNS 选项多了个 china-dns-NG 的框,如果你用本地 DNS,个人建议关掉。
  • 网页端的第一 DNS,端口号不要是下面分组的 6153 6253,第一 DNS 就是默认分组,我们不用,用不到,没必要,不需要。不然又要教你们集合教你们 -exclude-default-group,有些人数学不好集合都没搞懂,又要乱弄。实际上分另外两组,下面设置的国外分组 DNS,-exclude-default-group 这个参数可以拿掉,反正第一 DNS,也就是 SmartDNS 的默认 DNS,不用,用不到,没必要,不需要。但是不要取消第一 DNS 的 启用。
  • SmartDNS,网页端的第二 DNS,不用,用不到,没必要,不需要。网页端取消勾选。
  • 再说次,第一 DNS,网页端的重定向,选 None,选 None,选 None。(如果选 “作为 dnsmasq 上游”,SmartDNS 就把 第一 DNS 填到 DHCP and DNS 的 DNS forwardings 啦。你选 重定向 53 端口到 SmartDNS,PW 之类又要调用 dnsmasq,瞎设置有冲突上不了网了又跑网上来求救)
  • 如果你看到我有些不必要或者很愚蠢的设置,可能是我为了避免不必要的麻烦故意的。
  • 本帖的核心很简单,SmartDNS 分两组,一组上游全是国内 DNS,一组上游全是 DoT 或 DoH 的国外 DNS,分别作为富强软件的内外上游,懂得这个核心逻辑,自己捣鼓不会出大错的,我也可能有疏漏,不要完全相信我说的。
  • 如果帖子部分内容残缺看起来很奇怪,可能是编辑时候被某种神秘力量吃掉了。

补充2:
  • IP形式的 8.8.8.8 无法提供 DoH 和 DoT(至少我这里测试不行),8.8.4.4可以。
  • Cloudflare 的 1.1.1.1 和 1.0.0.1,IP 形式,都可提供 DoH 和 DoT
  • 只要不是裸连 国外 DNS,且 国外 DNS 都强制science,数据都是打包加密发送的,DoT 和 DoH 速度和可靠性上没差 (还是心有余悸觉得 DoT 的 853 端口特赠明显,那就用 DoH 吧)。
  • 为什么有些 DNS 服务器的 DoT DoH,把网址改成 IP 就不能使用,这涉及到 IP 地址的证书问题。

补充3:
1314# 楼网友提醒,开启了 预加载 或 过期缓存,重新获取 IP 时,会无视分组。
(虽然我开了 prefetch-domain 没开 serve-expired,貌似没遇到没问题,内外分组是正常)
如果你遇到强制走富强,还是被抢答污染什么的,可考虑关掉 prefetch-domain 和 serve-expired。(我也不知道这是 feature 还是 bug ?)


# 根据 37.1 版 SmartDNS 的更新日志,作者已经 "解决server group组配置在cache启用时不生效的问题"





上次写了篇
AdGuardHome+SmartDNS上游下游? 教你装两个AdGuardHome配合PW用正确的姿势上网深造
已经过去大半年(快一年啦,还有人瞎搞,我的天哪)

偶尔逛电报,(可以毫不客气地说) 还是发现一大堆人(根本)不会使用 SmartDNS。

特别是分组,不懂又瞎搞,DNS 不是被污染就是国内网站解析到国外 IP,
基本原理都没搞懂,弄不好于是怪工具不好用。

当然也有人说 SmartDNS 没卵用的,那是你的观点。爱用不用。

言归正传——
下面来教你如何轻松地让 SmartDNS 正确地分组,
实现内外网解析完全分离。

首先常规操作:
游客,如果您要查看本帖隐藏内容请回复


我们要用到 SmartDNS 的自定义参数,
你可以在 网页端修改,也可以直接修改 /etc/smartdns/custom.conf
这两者是一样的。
(但最好不要开着网页端的自定义参数,同时登录 WinSCP 修改 /etc/smartdns/custom.conf 。同时打开的时候,网页端貌似优先级高一点)


  1. # 关闭 prefetch-domain 和 serve-expired
  2. # prefetch-domain no
  3. # serve-expired no
  4. # 有网友说,开起这两个,重新获取IP时会无视分组。如果你遇到污染,可以尝试关闭。

  5. ## 应该不用关了,37.1 版 SmartDNS 作者已经 "解决server group组配置在cache启用时不生效的问题"


  6. # bind-tcp :6153 -group cn speed-check-mode ping,tcp:80
  7. bind :6153 -group cn speed-check-mode ping,tcp:80

  8. # bind-tcp :6253 -group oversea -no-speed-check
  9. bind :6253 -group oversea -no-speed-check

  10. # 不绑定 tcp 也行,说实话没必要绑 tcp

  11. # AliDNS
  12. server 223.6.6.6 -group cn -blacklist-ip -group bootstrap

  13. # GoogleDNS
  14. server-https https://8.8.4.4/dns-query -group oversea -exclude-default-group -blacklist-ip

  15. # Cloudflare DNS
  16. server-https https://1.0.0.1/dns-query -group oversea -exclude-default-group -blacklist-ip
  17. nameserver /cloudflare-dns.com/bootstrap
  18. server-https https://cloudflare-dns.com/dns-query -group oversea -exclude-default-group -blacklist-ip
复制代码



参数的具体含义,以及其他参数,
有兴趣请详阅 https://github.com/pymumu/smartdns

上面这几行代码,黏贴进 SmartDNS 的自定义参数,保存并应用 不一定能调用。
你可以修改下 第一 DNS 的 TTL Min 或者 TTL Max,保存并应用,
或者 SSH 上路由,service smartdns reload

(bind-tcp,那两行可以去掉,作为本地 DNS,用不到 tcp,不绑定 tcp 也没问题)

参数的含义很简单————
新建两个 DNS 端口 6153 和 6253,分别使用 cn 和 overseas 分组下的 DNS,国内测速国外不测速。
后面则是绑定几个 DNS 服务器到特定分组。



6153 这里只使用了一个 233.6.6.6,
你可以照着代码形式自行添加其他的 DNS。

6253 这里绑定了 3 个 DNS

其中一个是网址形式。

(加入这个网址形式的 DoH 是为了教你怎么用,我个人平时只使用 IP 形式的 DoH 或者 DoT。但有些 IP 形式的 DoT DoH 是用不了的,证书问题。)


也可以试试 DoT

(觉得 DoH [心理作用] 握手慢或者网址形式要设置 bootstrap 复杂的,可以试试 DoT。请一定记得国外 DNS 全部强制走富强,否则容易被阻断)
  1. server-tls 8.8.4.4 -group overseas -exclude-default-group
  2. server-tls 1.0.0.1 -group overseas -exclude-default-group
复制代码

8.8.4.4
1.1.1.1
1.0.0.1
都可提供 DoT 和 DoH 服务,
(8.8.8.8 无法提供 DoH  和 DoT,至少我这里测试不行)
(注意哦,不是说 DoT DoH 的网址解析成 IP,就能填到 DNS 上游的,这涉及到证书的问题另外能提供 DoT 和 DoH 公共 DNS 屈指可数。)


国外DNS,为了保证可用性,不要再使用普通的 UDP 和 TCP DNS 了,建议只使用 DoH 或 DoT
(甚至填入黑名单强制science,除非你能保证上游 DNS 稳定和畅通)

你可以看到这里还用了 nameserver 这个参数,
意思是决定某个网址,用某个分组进行解析。

-exclude-default-group 是指定该 DNS 不加入默认分组。

这种分两组两本地 DNS 端口的方法,不加这个参数也是可以的,
因为 SmartDNS 的第一 DNS,我们并不需要使用

建议只在自定义设置中添加 DNS 服务器,不要在网页端添加啦。
网页端添加很繁琐,也不方便快速操作。
用自定义文本添加,你不想要的 DNS 或者整行参数,用 # 注释掉,就等于这行参数取消了




至于国外网站测速,(个人建议,不一定对)
较新版本的 PW,可以劫持 Ping 的,
对于外面的世界,
如果你富强的节点单一、稳定,想测就测吧。
如果网络环境复杂,用到负载均衡或者几个不同地方的节点 + 故障切换,
就不要测了。


节点没问题,国外 DNS 又已经强制走富强,
谷歌 或 Cloudflare 的 DoH 和 DoT 返回 IP 都是高可用的。
这两个巨头在世界各地有很多的 DNS 分流节点,
就算 PW 成功劫持了ping,测速走了富强,
长时间的握手和延迟测试,会让你感觉异常卡顿
测速后缓存的 DNS 过期,重新测速又卡顿,
为了解决问题使用 prefetch-domain 或 serve-expired,
却可能导致更多的问题。


如果要打游戏,需要测速,可以尝试使用 domain-rules 参数,指定某域名测速及测速方式。
具体使用方法看 SmartDNS 官网。


自此,我们就建立了两个本地 DNS 解析端口,
6153 只使用 国内 DNS,
6253 只使用 国外 DNS,
对 DNS 完全内外分组。

(另外还需要把国外的 DNS,强制走富强。)


如果你用 Pa$$vvall,记得,解析国内的 DNS
必须填到 DHCP and DNS 的 DNS Forwardings

至于为什么,请去看 PW 的日志



国外 DNS,填哪就不用我多说了吧


不要再说 4-15 版本之后的 Pa$$vvall 没有国内 DNS,不知道怎么填了。
只要你去看一下软件的日志,立马明白怎么一回事。
既然要玩软路由,就养成多阅读软件日志的习惯嘛。

这样就设置完了,是不是很简单?

至于某个网站是走 6153 还是 走 6253,
让 Pa$$vvall 订阅的规则列表 和 你手填的自定义列表 决定即可,
维护起来很简单。
(有兴趣可以看我上一篇帖子)

最后补充下,(个人意见,不一定对)
如果你用 Pa$$vvall,
模式选择,不建议用 Not China List,
如果用 功夫网List,那么内外的区分,是基于网址的,
Not China List,则是基于 网址 和 IP,
如果某些国内无良大厂的 DNS,
故意把竞争对手的网址解析到国外 IP,
可能会变成走富强道路。

用 功夫网List,上不了的或者访问慢的海外网址自己手填,
同时浏览器 F12 再看看用了什么 CDN 网址,
也一并手填强制走富强,就 OK 了,一般不会出现奇奇怪怪的问题。



再补充一点,如果某网站强制富强,还是上不了
当然是先清空本地 DNS 缓存啦——
手机端,安卓和 iOS,都是开关一次 飞行模式
PC端,除了要在 CMD 下 ipconfig /flushdns
浏览器也要清空,比如 Chrome 或者 Edge,是在
chrome://net-internals/#dns
或者
edge://net-internals/#dns


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

smartdns没有bootstrap参数,你自己加一个-group bootstrap,意欲何为?自己骗自己吗?  发表于 2022-6-28 02:14

评分

参与人数 13恩山币 +15 收起 理由
呵呵*** + 1 强大的恩山!(以下重复1万次)
repeat*** + 1 好帖 学习了
SGT*** + 1 你好,久仰卧龙大名,在下凤雏!.
ltb*** + 1 干货分享,搞明白了,谢谢
SkyT*** + 1 感谢你的分享,无论怎样,你都是最无私的人.
iyc*** + 1 请教下此教程怎么配合“师夷长技以制夷”P+.
ic*** + 2 小白请教这个 nameserver /cloudflare-dns..
fanya*** + 1 强大的恩山!(以下重复1万次)
yu*** + 1 看懂算我输
sl*** + 1 面对这种帖子,我内心复杂,真不知道说什么好……
yns*** + 1 大神,请问第一组dns的端口号是设成6153吗?
dear*** + 1 感谢科普,这很重要。
viru*** + 2 生活不易,相遇也不易,既然这样,让我们成为朋友一起面朝大海、花开花落……

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
楼主,你是一个大好人!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

内外网解析完全分离
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

真没必要把网络搞得那么复杂
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

不会用 看看楼主的教程
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

科学使人类进步!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

看大佬表演
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

谢谢分享~~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来学习一下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

????
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

康康 紫薯布丁
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

进来学习,感谢分享~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

看看有什么新鲜
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

楼主,你是一个大好人!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-27 22:57

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表