群晖在ddns配置下,检测ip使用直连模式的 clash 配置

前提条件

  1. 使用的动态 dns 配置,使本地的群晖服务器在外网可访问
  2. docker 内安装了 clash,导致了动态 dns 检测到了机场服务商的 ip。

docker 内 clash 的安装可以查看 群晖 DSM 安装 clash

问题

image-20241020214625670

在 ddns 点击立即更新的时候,会从服务器向群晖指定的某个网址发送请求,但由于这个请求走了代理,导致服务器以为我们的ip是机场代理商的ip。

解决方案

进入上一篇文章中提到的 clash 控制台前端页面。点击 日志 选项卡

在这里可以看到之前命中的各条规则。如果找不到日志的话,可以在前面的ddns界面点击一次 立即更新 按钮

我图片中展示的是已经修改完配置文件后的样例,命中的是 using DIRECT 走直连。如果各位的 DDNS 展示的是机场服务商 ip 而非本机 ip 的,这里一般会命中一条走对应规则的记录。

对了,顺带一提,记得不要开全局模式。配置在这里

image-20241027114724711

那接下来问题就很简单,该配置文件让访问群晖的ip探测地址时,不要走代理就行了。找到config.yaml

image-20241027114941897

我添加了很多条,这里对于群晖的ip检测,一般添加红框内这一条已经足够了

1
2
3
4
5
6
7
8
9
10
- DOMAIN-SUFFIX,whatismyip.akamai.com,DIRECT
- DOMAIN,whatismyip.akamai.com,DIRECT
- DOMAIN-SUFFIX,synology.com,DIRECT
- DOMAIN-SUFFIX,synology.cn,DIRECT
- IP-CIDR,68.183.160.0/20,DIRECT
- DOMAIN,checkip.synology.com,DIRECT
- DOMAIN,checkipv6.synology.com,DIRECT
- DOMAIN,checkport.synology.com,DIRECT
- DOMAIN,ddns.synology.com,DIRECT
- DOMAIN,account.synology.com,DIRECT

记得不要放在最最后边,因为一般config.yaml的最后,有一条什么都匹配不上时的规则,如我这里的 - MATCH, others 会走Others对应的代理。如果- DOMAIN,checkip.synology.com,DIRECT放在最后边的话,优先级关系是会先命中 - MATCH, others `

修改完成后,重新启动一下clash (我是没找到重新加载配置的命令, 直接重启了)

再次尝试ddns刷新配置,发现可以正常映射为本机ip了。大功告成

如果还有不行的小伙伴,也可以用上述方法看clash的日志,看看它到底是命中了哪一条规则。关于规则的介绍:https://clash.wiki/configuration/rules.html