Verify steps
Description
ShellCrash 在配合使用 QUIC、AnyTLS 等非标准协议(且节点域名依赖私有 DoH 解析)的机场时,会遇到两个导致无法翻墙的问题。
问题一:不走订阅自带的 DoH,节点能加载但无法使用
这类机场的节点域名(如 *.quandao.com)只有通过机场自有的私有 DoH 才能解析到正确 IP,公共 DNS 会返回过期地址。ShellCrash 的 clash_modify.sh 在生成 DNS 配置时没有保留订阅中的 nameserver-policy 和 proxy-server-nameserver,导致域名解析失败,表现为面板中节点全部加载成功但所有连接超时。
修复方式:修改 clash_modify.sh 第 57-58 行,在 nameserver-policy 中为机场域名指定私有 DoH,并将 proxy-server-nameserver 指向相同的私有 DoH,同时确保 dns_mod=mix。
问题二:自定义代理组时 YAML 校验失败
通过 yamls 目录创建自定义代理组时,clash_modify.sh 有两处代码缺陷会导致生成的 YAML 缩进错乱,报错 proxies[x] expected type 'string', got unconvertible type 'map[string]interface {}':
- 第 128 行提取
space_name(基准缩进)的 grep 正则 '^ *- \{?name: ' 匹配不到内联 YAML 格式 { name: xxx }({ 与 name 之间有空格),导致 space_name 为空,自定义组的 - name: 缩进被清零。
- 第 131 行管道中
#自定义策略组开始/结束 标记在缩进变换之前插入,被 s/^ */ 额外添加空格,导致标记处于 YAML 属性级缩进;由于 YAML 解析器忽略注释,后续的订阅原始组被误吞进自定义组的 proxies: 列表。
修复方式:第 128 行改用 sed -n '/^ *- /{s/^\( *\).*/\1/p;q}' 提取缩进(不依赖具体格式);第 131 行将标记移到管道末尾并去掉前导空格;第 124-125、230 行的基于标记的删除逻辑可一并删除(core_config 每次从原始订阅重新提取,标记从未真正被匹配到)。
以上两个问题均在小米 AX1800 + 狗狗加速机场环境下复现并修复,修复后的 clash_modify.sh 可正常生成校验通过的配置。
Verify steps
Description
ShellCrash 在配合使用 QUIC、AnyTLS 等非标准协议(且节点域名依赖私有 DoH 解析)的机场时,会遇到两个导致无法翻墙的问题。
问题一:不走订阅自带的 DoH,节点能加载但无法使用
这类机场的节点域名(如
*.quandao.com)只有通过机场自有的私有 DoH 才能解析到正确 IP,公共 DNS 会返回过期地址。ShellCrash 的clash_modify.sh在生成 DNS 配置时没有保留订阅中的nameserver-policy和proxy-server-nameserver,导致域名解析失败,表现为面板中节点全部加载成功但所有连接超时。修复方式:修改
clash_modify.sh第 57-58 行,在nameserver-policy中为机场域名指定私有 DoH,并将proxy-server-nameserver指向相同的私有 DoH,同时确保dns_mod=mix。问题二:自定义代理组时 YAML 校验失败
通过 yamls 目录创建自定义代理组时,
clash_modify.sh有两处代码缺陷会导致生成的 YAML 缩进错乱,报错proxies[x] expected type 'string', got unconvertible type 'map[string]interface {}':space_name(基准缩进)的 grep 正则'^ *- \{?name: '匹配不到内联 YAML 格式{ name: xxx }({与name之间有空格),导致space_name为空,自定义组的- name:缩进被清零。#自定义策略组开始/结束标记在缩进变换之前插入,被s/^ */额外添加空格,导致标记处于 YAML 属性级缩进;由于 YAML 解析器忽略注释,后续的订阅原始组被误吞进自定义组的proxies:列表。修复方式:第 128 行改用
sed -n '/^ *- /{s/^\( *\).*/\1/p;q}'提取缩进(不依赖具体格式);第 131 行将标记移到管道末尾并去掉前导空格;第 124-125、230 行的基于标记的删除逻辑可一并删除(core_config每次从原始订阅重新提取,标记从未真正被匹配到)。以上两个问题均在小米 AX1800 + 狗狗加速机场环境下复现并修复,修复后的
clash_modify.sh可正常生成校验通过的配置。