Files
dns-server/.trae/documents/修复添加自定义规则后需要重启服务器的问题.md
2026-01-14 23:08:46 +08:00

21 lines
1.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
1. **问题分析**
- 当添加自定义规则时,规则被添加到内存中并保存到文件
- 但由于DNS缓存的存在如果该域名的DNS响应已经被缓存那么在缓存过期之前DNS服务器会直接返回缓存的响应而不会重新检查规则
- 这就导致了添加规则后需要重启服务器才能生效的问题
2. **修复方案**
- 当添加或删除自定义规则时清空DNS缓存这样新的规则会立即生效
- 这样当客户端再次请求该域名时DNS服务器会重新检查规则而不是直接返回缓存的响应
3. **修复步骤**
- 修改HTTP API处理函数在添加或删除规则后清空DNS缓存
- 或者修改ShieldManager的AddRule和RemoveRule方法添加清空DNS缓存的逻辑
- 测试修复后的功能,确保添加规则后无需重启服务器即可生效
4. **预期结果**
- 添加自定义规则后,规则会立即生效,无需重启服务器
- 重启服务器后,之前添加的自定义规则仍然存在
5. **具体实现**
-`/root/dns/http/server.go`在添加或删除规则的API处理函数后调用DNS缓存的Clear方法
- 这样当添加或删除规则时DNS缓存会被清空新的规则会立即生效