yamls/config.yaml 里写的 dns: 不生效,也没有任何提示。最终配置的 DNS 段由
clash_modify.sh 重新生成,用户写的 nameserver-policy、fake-ip-filter、ipv6
等都被替换掉。
复现
$ grep -A1 nameserver-policy /etc/ShellCrash/yamls/config.yaml
nameserver-policy:
"+.ts.net": "100.100.100.100"
$ grep -E "nameserver-policy|^ ipv6" /tmp/ShellCrash/config.yaml
ipv6: false
nameserver-policy: {'rule-set:cn': [ 127.0.0.1 ]}
config.yaml 里是 ipv6: true,运行时成了 false;+.ts.net 那条策略没了。同一份
config.yaml 里的 proxy-groups、rules、rule-providers 都正常保留,只有 dns:
这一段如此。
想覆盖只有一条路:在 user.yaml 里写 dns:。但 clash_modify.sh:29 是
grep '^dns:' 判断,一旦命中就完全不生成 DNS 段 —— listen: :$dns_port、
fake-ip-range: 28.0.0.0/8 这些也得自己复刻,漏一项就可能打断 dnsmasq 转发或
nftables 重定向。中间没有「只想加一条 nameserver-policy」的档位。
configs/fake_ip_filter 给 fake-ip-filter 留了追加入口,但仅此一项。
建议
生成 DNS 段时,把 config.yaml / user.yaml 中的同名键作为覆盖项合并进去,而不是
整段二选一;或者比照 configs/fake_ip_filter,给 nameserver-policy 之类也留一个
追加入口。
至少在丢弃时 log 一行,不要静默。
环境:ImmortalWrt 25.12,ShellCrash 1.9.5alpha14,dns_mod=mix。
yamls/config.yaml里写的dns:不生效,也没有任何提示。最终配置的 DNS 段由clash_modify.sh重新生成,用户写的nameserver-policy、fake-ip-filter、ipv6等都被替换掉。
复现
config.yaml 里是
ipv6: true,运行时成了false;+.ts.net那条策略没了。同一份config.yaml 里的
proxy-groups、rules、rule-providers都正常保留,只有dns:这一段如此。
想覆盖只有一条路:在
user.yaml里写dns:。但clash_modify.sh:29是grep '^dns:'判断,一旦命中就完全不生成 DNS 段 ——listen: :$dns_port、fake-ip-range: 28.0.0.0/8这些也得自己复刻,漏一项就可能打断 dnsmasq 转发或nftables 重定向。中间没有「只想加一条 nameserver-policy」的档位。
configs/fake_ip_filter给 fake-ip-filter 留了追加入口,但仅此一项。建议
生成 DNS 段时,把
config.yaml/user.yaml中的同名键作为覆盖项合并进去,而不是整段二选一;或者比照
configs/fake_ip_filter,给nameserver-policy之类也留一个追加入口。
至少在丢弃时 log 一行,不要静默。
环境:ImmortalWrt 25.12,ShellCrash 1.9.5alpha14,
dns_mod=mix。